> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runaether.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one reviewed pull request with its review runs

> The single-PR read of listPRReviews: the same group facts plus the pull request description and captured reviews posted to the PR (newest first), addressed by the pull_request_id every listed group carries. Reviews posted before capture shipped have no content row and are honestly absent. 404 covers both a pull request that does not exist and one the caller's organizations have no review runs against — the two are deliberately indistinguishable. The caller must also retain current GitHub installation and repository access before the response exposes workspace preview URLs; revoked access returns the same 404.



## OpenAPI

````yaml api-reference/openapi.account.json GET /pr-reviews/{pullRequestID}
openapi: 3.1.0
info:
  title: Aether Account & Integrations API
  version: 0.1.0
  description: >-
    Account, billing, and integration-management endpoints used by the Aether
    web app and CLI. Root-mounted; NOT part of the versioned /v1 contract.
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /pr-reviews/{pullRequestID}:
    get:
      tags:
        - pr-reviews
      summary: Get one reviewed pull request with its review runs
      description: >-
        The single-PR read of listPRReviews: the same group facts plus the pull
        request description and captured reviews posted to the PR (newest
        first), addressed by the pull_request_id every listed group carries.
        Reviews posted before capture shipped have no content row and are
        honestly absent. 404 covers both a pull request that does not exist and
        one the caller's organizations have no review runs against — the two are
        deliberately indistinguishable. The caller must also retain current
        GitHub installation and repository access before the response exposes
        workspace preview URLs; revoked access returns the same 404.
      operationId: getPRReview
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  file_manifest:
                    $ref: '#/components/schemas/PRHeadFileManifest'
                  group:
                    $ref: '#/components/schemas/PRReviewDetailGroup'
                  loop:
                    $ref: '#/components/schemas/PRReviewLoop'
                  loop_cost:
                    $ref: '#/components/schemas/PRReviewLoopCost'
                  posted_reviews:
                    items:
                      $ref: '#/components/schemas/PRReviewPostedReview'
                    type: array
                  preview_workspace:
                    $ref: '#/components/schemas/PRReviewPreviewWorkspace'
                  previews:
                    items:
                      $ref: '#/components/schemas/DeclaredPreview'
                    type: array
                required:
                  - group
                  - posted_reviews
                  - previews
                type: object
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ErrorResponse'
                  - $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal Server Error
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Service Unavailable
components:
  schemas:
    PRHeadFileManifest:
      oneOf:
        - $ref: '#/components/schemas/PRHeadFileManifestComplete'
        - $ref: '#/components/schemas/PRHeadFileManifestTruncated'
    PRReviewDetailGroup:
      additionalProperties: false
      properties:
        additions:
          format: int64
          minimum: 0
          type: integer
        base_branch:
          type: string
        checks_failed:
          format: int64
          minimum: 0
          type: integer
        checks_passed:
          format: int64
          minimum: 0
          type: integer
        checks_total:
          format: int64
          minimum: 0
          type: integer
        ci_status:
          $ref: '#/components/schemas/TaskCIStatus'
        comment_count:
          format: int64
          minimum: 0
          type:
            - integer
            - 'null'
        deletions:
          format: int64
          minimum: 0
          type: integer
        description:
          type: string
        draft:
          type: boolean
        github_updated_at:
          format: date-time
          type: string
        guide_outline:
          items:
            $ref: '#/components/schemas/PRReviewGuideOutlineSection'
          maxItems: 50
          minItems: 1
          type: array
        head_branch:
          type: string
        head_sha:
          type: string
        html_url:
          type: string
        latest_created_at:
          format: date-time
          type: string
        merged_at:
          format: date-time
          type: string
        needs_attention:
          type: boolean
        origin_task:
          $ref: '#/components/schemas/PRReviewOriginTask'
        pr_number:
          format: int64
          minimum: 1
          type: integer
        pr_state:
          $ref: '#/components/schemas/TaskGitHubPRState'
        pull_request_id:
          format: uuid
          type: string
        ready_for_merge:
          type: boolean
        repo_name:
          type: string
        repo_owner:
          type: string
        reviews:
          items:
            $ref: '#/components/schemas/PRReviewRun'
          type: array
        severity_counts:
          $ref: '#/components/schemas/PRReviewSeverityCounts'
        stack_children:
          items:
            $ref: '#/components/schemas/PullRequestStackEdge'
          minItems: 1
          type: array
        stack_parent:
          $ref: '#/components/schemas/PullRequestStackEdge'
        summary_severity:
          $ref: '#/components/schemas/PRReviewSummarySeverity'
        title:
          type: string
        verdict:
          $ref: '#/components/schemas/PRReviewSummaryVerdict'
        viewer_standing:
          $ref: '#/components/schemas/PRReviewViewerStanding'
      required:
        - pull_request_id
        - pr_number
        - title
        - html_url
        - repo_owner
        - repo_name
        - checks_passed
        - checks_failed
        - checks_total
        - additions
        - deletions
        - latest_created_at
        - comment_count
        - needs_attention
        - reviews
        - draft
        - github_updated_at
        - ready_for_merge
        - viewer_standing
        - description
      type: object
    PRReviewLoop:
      additionalProperties: false
      properties:
        last_human_event_at:
          format: date-time
          type: string
        rounds_since_human:
          format: int64
          minimum: 0
          type: integer
      required:
        - rounds_since_human
      type: object
    PRReviewLoopCost:
      additionalProperties: false
      properties:
        author_vm_seconds:
          format: int64
          minimum: 0
          type: integer
        credits_author:
          format: double
          minimum: 0
          type: number
        credits_reviewer:
          format: double
          minimum: 0
          type: number
        reviewer_vm_seconds:
          format: int64
          minimum: 0
          type: integer
        settled_through:
          format: date-time
          type: string
      required:
        - author_vm_seconds
        - reviewer_vm_seconds
        - credits_author
        - credits_reviewer
      type: object
    PRReviewPostedReview:
      additionalProperties: false
      properties:
        body:
          type: string
        comments:
          items:
            $ref: '#/components/schemas/PRReviewPostedReviewComment'
          type: array
        github_review_id:
          format: int64
          maximum: 9007199254740991
          minimum: 1
          type: integer
        guide:
          items:
            $ref: '#/components/schemas/PRReviewGuideSection'
          maxItems: 50
          type: array
        head_sha:
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        html_url:
          type: string
        posted_at:
          format: date-time
          type: string
        review_event:
          $ref: '#/components/schemas/PRReviewPostedReviewEvent'
        summary_severity:
          $ref: '#/components/schemas/PRReviewSummarySeverity'
        task_id:
          format: uuid
          type: string
      required:
        - github_review_id
        - task_id
        - html_url
        - body
        - review_event
        - posted_at
        - guide
      type: object
    PRReviewPreviewWorkspace:
      additionalProperties: false
      properties:
        display_state:
          enum:
            - deleted
            - idle
            - starting
            - stopping
            - suspending
            - ready
            - preparing
            - error
            - stopped
            - suspended
          type: string
      required:
        - display_state
      type: object
    DeclaredPreview:
      additionalProperties: false
      properties:
        name:
          maxLength: 200
          minLength: 1
          pattern: \S
          type: string
        port:
          maximum: 65535
          minimum: 1
          type: integer
        url:
          format: uri
          type: string
      required:
        - name
        - port
        - url
      type: object
    ErrorResponse:
      additionalProperties: false
      properties:
        code:
          type: string
        error:
          minLength: 1
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
      required:
        - error
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
            - account_deleting
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    PRHeadFileManifestComplete:
      additionalProperties: false
      properties:
        files:
          items:
            $ref: '#/components/schemas/PRHeadFileManifestFile'
          maxItems: 2999
          type: array
        head_sha:
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        truncated:
          enum:
            - false
          type: boolean
      required:
        - head_sha
        - truncated
        - files
      type: object
    PRHeadFileManifestTruncated:
      additionalProperties: false
      properties:
        files:
          items:
            $ref: '#/components/schemas/PRHeadFileManifestFile'
          maxItems: 3000
          minItems: 3000
          type: array
        head_sha:
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        truncated:
          enum:
            - true
          type: boolean
      required:
        - head_sha
        - truncated
        - files
      type: object
    TaskCIStatus:
      enum:
        - pending
        - passed
        - failed
      type: string
    PRReviewGuideOutlineSection:
      additionalProperties: false
      properties:
        paths:
          items:
            minLength: 1
            pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
            type: string
          maxItems: 20
          type: array
        title:
          maxLength: 200
          minLength: 1
          pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
          type: string
          x-aether-string-length-unit: unicode-code-point
      required:
        - title
        - paths
      type: object
    PRReviewOriginTask:
      additionalProperties: false
      properties:
        id:
          format: uuid
          type: string
        turn_count:
          format: int64
          minimum: 0
          type: integer
      required:
        - id
        - turn_count
      type: object
    TaskGitHubPRState:
      enum:
        - open
        - closed
        - merged
      type: string
    PRReviewRun:
      additionalProperties: false
      properties:
        agent_type:
          enum:
            - codex
            - claude-code
            - opencode
            - cursor
          type: string
        created_at:
          format: date-time
          type: string
        duration_seconds:
          format: int64
          minimum: 0
          type: integer
        error:
          type: string
        head_sha:
          type: string
        id:
          format: uuid
          type: string
        model:
          minLength: 1
          type: string
        status:
          $ref: '#/components/schemas/ReviewRunStatus'
        trigger:
          $ref: '#/components/schemas/TaskReviewTrigger'
      required:
        - id
        - status
        - created_at
        - agent_type
        - model
      type: object
    PRReviewSeverityCounts:
      additionalProperties: false
      properties:
        confirmed:
          format: int64
          minimum: 0
          type: integer
        nit:
          format: int64
          minimum: 0
          type: integer
        p1:
          format: int64
          minimum: 0
          type: integer
        p2:
          format: int64
          minimum: 0
          type: integer
        question:
          format: int64
          minimum: 0
          type: integer
      required:
        - p1
        - p2
        - nit
        - question
        - confirmed
      type: object
    PullRequestStackEdge:
      additionalProperties: false
      description: >-
        One tracked open pull request on a branch-chain edge: as stack_parent,
        the pull request whose head repository and branch match this pull
        request's base; as an element of stack_children, a pull request whose
        base branch is this pull request's head. Present only when the edge
        exists in Aether's tracked pull-request projection; absence does not
        prove the pull request is unstacked.
      properties:
        html_url:
          format: uri
          pattern: ^[hH][tT][tT][pP][sS]?://
          type: string
        pr_number:
          format: int64
          minimum: 1
          type: integer
        pull_request_id:
          format: uuid
          type: string
        state:
          enum:
            - open
          type: string
        title:
          type: string
      required:
        - pull_request_id
        - pr_number
        - title
        - state
        - html_url
      type: object
    PRReviewSummarySeverity:
      enum:
        - p1
        - p2
        - nit
      type: string
    PRReviewSummaryVerdict:
      enum:
        - APPROVE
        - REQUEST_CHANGES
        - COMMENT
        - DISMISSED
        - SUPERSEDED
      type: string
    PRReviewViewerStanding:
      enum:
        - author
        - pending
        - approved
        - changes_requested
        - commented
        - dismissed
        - none
      type: string
    PRReviewPostedReviewComment:
      additionalProperties: false
      properties:
        body:
          type: string
        github_comment_id:
          format: int64
          maximum: 9007199254740991
          minimum: 1
          type: integer
        html_url:
          type: string
        line:
          format: int64
          minimum: 1
          type: integer
        path:
          type: string
        severity:
          $ref: '#/components/schemas/PRReviewFindingSeverity'
        side:
          $ref: '#/components/schemas/PRReviewCommentSide'
      required:
        - github_comment_id
        - path
        - body
        - html_url
      type: object
    PRReviewGuideSection:
      additionalProperties: false
      properties:
        explanation:
          maxLength: 4000
          minLength: 1
          pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
          type: string
          x-aether-string-length-unit: unicode-code-point
        refs:
          items:
            $ref: '#/components/schemas/PRReviewGuideRef'
          maxItems: 20
          type: array
        title:
          maxLength: 200
          minLength: 1
          pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
          type: string
          x-aether-string-length-unit: unicode-code-point
      required:
        - title
        - explanation
        - refs
      type: object
    PRReviewPostedReviewEvent:
      enum:
        - COMMENT
        - APPROVE
        - REQUEST_CHANGES
      type: string
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    PRHeadFileManifestFile:
      additionalProperties: false
      properties:
        additions:
          format: int64
          minimum: 0
          type: integer
        category:
          $ref: '#/components/schemas/PRReviewFileCategory'
        deletions:
          format: int64
          minimum: 0
          type: integer
        path:
          minLength: 1
          type: string
        status:
          $ref: '#/components/schemas/PRReviewDiffFileStatus'
      required:
        - path
        - status
        - category
        - additions
        - deletions
      type: object
    ReviewRunStatus:
      enum:
        - reviewing
        - completed
        - failed
        - cancelled
        - superseded
        - archived
      type: string
    TaskReviewTrigger:
      enum:
        - automatic
        - comment_command
        - manual
      type: string
    PRReviewFindingSeverity:
      enum:
        - p1
        - p2
        - nit
        - question
        - confirmed
      type: string
    PRReviewCommentSide:
      enum:
        - LEFT
        - RIGHT
      type: string
    PRReviewGuideRef:
      oneOf:
        - $ref: '#/components/schemas/PRReviewGuideFileRef'
        - $ref: '#/components/schemas/PRReviewGuideRangeRef'
    PRReviewFileCategory:
      enum:
        - implementation
        - tests
        - documentation
        - generated
      type: string
    PRReviewDiffFileStatus:
      enum:
        - added
        - removed
        - modified
        - renamed
        - copied
        - changed
        - unchanged
      type: string
    PRReviewGuideFileRef:
      additionalProperties: false
      properties:
        path:
          minLength: 1
          pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
          type: string
        side:
          $ref: '#/components/schemas/PRReviewCommentSide'
      required:
        - path
        - side
      type: object
    PRReviewGuideRangeRef:
      additionalProperties: false
      properties:
        end_line:
          format: int64
          maximum: 2147483647
          minimum: 1
          type: integer
        path:
          minLength: 1
          pattern: "[^\t-\r \N\_  - \L\P  　\uFEFF]"
          type: string
        side:
          $ref: '#/components/schemas/PRReviewCommentSide'
        start_line:
          format: int64
          maximum: 2147483647
          minimum: 1
          type: integer
      required:
        - path
        - side
        - start_line
        - end_line
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.