> ## 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 the snapshot of a pull request head: its changed files against the base tip, their patches and their contents at the head

> One read for everything the Diff tab draws at a head: GitHub's changed-file listing of ref against the base branch at base_sha, with each file's unified patch, and, for every file with a patch that exists at the head, the file's content there (kind text with content, or binary, too_large; omitted, with the reason, when the snapshot carries no content for it, because its text would have overrun the snapshot's budget or GitHub did not find or serve it at capture, in which case getPRReviewFileContent serves it). A snapshot is captured once and then served from storage: kind ready is the snapshot, immutable, so a browser caches it for the listing's life; it is sent gzip-encoded to a client whose Accept-Encoding accepts gzip (or every coding) and as plain JSON to one that does not, and refused with 406 to one that accepts neither (the answer varies on Accept-Encoding). The first reader to find no snapshot claims its capture and enqueues it; every reader meanwhile is answered kind capturing and reads again shortly, enqueueing nothing. A capture that gave up after its retries is answered kind failed with the error, which retryPRReviewHeadSnapshotCapture starts again. ref and base_sha must be the head and the base tip the detail read currently names (head_sha and base_sha): GitHub lists only the current head against the current base, so a reader still showing an earlier listing is told the pull request moved (409), as the pinned diff read does, and the detail read's next poll names the new ones. Authorized like getPRReview, with the same indistinguishable 404.



## OpenAPI

````yaml api-reference/openapi.json GET /pr-reviews/{pullRequestID}/head-snapshot
openapi: 3.1.0
info:
  title: Aether API
  version: 0.1.0
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /pr-reviews/{pullRequestID}/head-snapshot:
    get:
      tags:
        - pr-reviews
      summary: >-
        Get the snapshot of a pull request head: its changed files against the
        base tip, their patches and their contents at the head
      description: >-
        One read for everything the Diff tab draws at a head: GitHub's
        changed-file listing of ref against the base branch at base_sha, with
        each file's unified patch, and, for every file with a patch that exists
        at the head, the file's content there (kind text with content, or
        binary, too_large; omitted, with the reason, when the snapshot carries
        no content for it, because its text would have overrun the snapshot's
        budget or GitHub did not find or serve it at capture, in which case
        getPRReviewFileContent serves it). A snapshot is captured once and then
        served from storage: kind ready is the snapshot, immutable, so a browser
        caches it for the listing's life; it is sent gzip-encoded to a client
        whose Accept-Encoding accepts gzip (or every coding) and as plain JSON
        to one that does not, and refused with 406 to one that accepts neither
        (the answer varies on Accept-Encoding). The first reader to find no
        snapshot claims its capture and enqueues it; every reader meanwhile is
        answered kind capturing and reads again shortly, enqueueing nothing. A
        capture that gave up after its retries is answered kind failed with the
        error, which retryPRReviewHeadSnapshotCapture starts again. ref and
        base_sha must be the head and the base tip the detail read currently
        names (head_sha and base_sha): GitHub lists only the current head
        against the current base, so a reader still showing an earlier listing
        is told the pull request moved (409), as the pinned diff read does, and
        the detail read's next poll names the new ones. Authorized like
        getPRReview, with the same indistinguishable 404.
      operationId: getPRReviewHeadSnapshot
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
        - explode: false
          in: query
          name: ref
          required: true
          schema:
            pattern: ^[0-9a-f]{40}$
            type: string
        - explode: false
          in: query
          name: base_sha
          required: true
          schema:
            pattern: ^[0-9a-f]{40}$
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PRReviewHeadSnapshot'
          description: >-
            The head's snapshot, that its capture is under way, or that the
            capture gave up
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PrReviewsErrorResponse'
                  - $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Internal Server Error
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrReviewsErrorResponse'
          description: Service Unavailable
components:
  schemas:
    PRReviewHeadSnapshot:
      discriminator:
        mapping:
          capturing: '#/components/schemas/PRReviewHeadSnapshotCapturing'
          failed: '#/components/schemas/PRReviewHeadSnapshotFailed'
          ready: '#/components/schemas/PRReviewHeadSnapshotReady'
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/PRReviewHeadSnapshotReady'
        - $ref: '#/components/schemas/PRReviewHeadSnapshotCapturing'
        - $ref: '#/components/schemas/PRReviewHeadSnapshotFailed'
    PrReviewsErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - account_deleting
            - aether_inference_unserved
            - agent_pr_blocked
            - agent_pr_pending
            - agent_profile_changed
            - app_identity_missing
            - attribution_unavailable
            - bad_gateway
            - bad_request
            - caller_inactive
            - conflict
            - connection_harness_mismatch
            - connection_not_held
            - contents_write_required
            - continuation_failed
            - continuation_unavailable
            - control_forbidden
            - embeddings_unavailable
            - fix_not_requested
            - fix_requests_unrecorded
            - forbidden
            - fork_branch_delete_unsupported
            - fork_forbidden
            - gateway_timeout
            - github_claim_unverified
            - github_failed
            - github_identity_mismatch
            - github_identity_required
            - github_push_access_required
            - github_reconnect_required
            - github_ref_not_found
            - gone
            - idempotency_key_reused
            - inference_proxy_unavailable
            - insufficient_credits
            - insufficient_inference_balance
            - internal_error
            - invalid_request
            - mcp_server_not_connected
            - message_not_queued
            - method_not_allowed
            - mode_forbidden
            - no_dispatch_target
            - not_acceptable
            - not_found
            - not_implemented
            - onboarding_already_completed
            - onboarding_requirements_missing
            - org_role_insufficient
            - org_suspended
            - payment_required
            - pr_review_actor_required
            - pr_review_publish_forbidden
            - precondition_failed
            - pull_request_closed
            - pull_request_mirror_failed
            - pull_request_not_mirrored
            - queued_stop_requires_discard
            - rate_limited
            - request_canceled
            - request_timeout
            - request_too_large
            - service_unavailable
            - stack_cycle
            - stack_too_large
            - stack_two_parents
            - stale_execution
            - stale_or_indeterminate
            - stale_pending_input
            - stream_delivery_gap
            - stream_event_conflict
            - task_awaiting_message
            - task_awaiting_tool_response
            - task_connection_disconnected
            - task_creator_deleted
            - task_ineligible
            - task_not_accepting_messages
            - task_not_pinnable
            - task_settings_changed
            - teleport_unavailable
            - unauthenticated
            - unsigned_aether_head
            - unsigned_commit
            - unsupported_changes
            - unsupported_media_type
            - untyped_error
            - validation_failed
            - workspace_git_unavailable
            - workspace_rejected
          minLength: 1
          type: string
        error:
          minLength: 1
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
      required:
        - error
        - code
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
            - account_deleting
            - agent_host_route_not_allowed
            - credential_kind_not_admitted
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    PRReviewHeadSnapshotCapturing:
      additionalProperties: false
      properties:
        kind:
          enum:
            - capturing
          type: string
      required:
        - kind
      type: object
    PRReviewHeadSnapshotFailed:
      additionalProperties: false
      properties:
        error:
          minLength: 1
          type: string
        kind:
          enum:
            - failed
          type: string
      required:
        - kind
        - error
      type: object
    PRReviewHeadSnapshotReady:
      additionalProperties: false
      properties:
        base_sha:
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        files:
          items:
            $ref: '#/components/schemas/PRReviewHeadSnapshotFile'
          type: array
        head_sha:
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        kind:
          enum:
            - ready
          type: string
        truncated:
          type: boolean
      required:
        - kind
        - head_sha
        - base_sha
        - truncated
        - files
      type: object
    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
    PRReviewHeadSnapshotFile:
      additionalProperties: false
      properties:
        additions:
          format: int64
          minimum: 0
          type: integer
        category:
          $ref: '#/components/schemas/PRReviewFileCategory'
        deletions:
          format: int64
          minimum: 0
          type: integer
        head:
          $ref: '#/components/schemas/PRReviewHeadSnapshotContent'
        patch:
          type: string
        path:
          type: string
        previous_path:
          type: string
        status:
          $ref: '#/components/schemas/PRReviewDiffFileStatus'
      required:
        - path
        - status
        - category
        - additions
        - deletions
      type: object
    PRReviewFileCategory:
      enum:
        - implementation
        - tests
        - documentation
        - generated
      type: string
    PRReviewHeadSnapshotContent:
      discriminator:
        mapping:
          binary: '#/components/schemas/PRReviewHeadSnapshotContentBinary'
          omitted: '#/components/schemas/PRReviewHeadSnapshotContentOmitted'
          text: '#/components/schemas/PRReviewHeadSnapshotContentText'
          too_large: '#/components/schemas/PRReviewHeadSnapshotContentTooLarge'
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/PRReviewHeadSnapshotContentText'
        - $ref: '#/components/schemas/PRReviewHeadSnapshotContentBinary'
        - $ref: '#/components/schemas/PRReviewHeadSnapshotContentTooLarge'
        - $ref: '#/components/schemas/PRReviewHeadSnapshotContentOmitted'
    PRReviewDiffFileStatus:
      enum:
        - added
        - removed
        - modified
        - renamed
        - copied
        - changed
        - unchanged
      type: string
    PRReviewHeadSnapshotContentBinary:
      additionalProperties: false
      properties:
        kind:
          enum:
            - binary
          type: string
      required:
        - kind
      type: object
    PRReviewHeadSnapshotContentOmitted:
      additionalProperties: false
      properties:
        kind:
          enum:
            - omitted
          type: string
        reason:
          minLength: 1
          type: string
      required:
        - kind
        - reason
      type: object
    PRReviewHeadSnapshotContentText:
      additionalProperties: false
      properties:
        content:
          type: string
        kind:
          enum:
            - text
          type: string
      required:
        - kind
        - content
      type: object
    PRReviewHeadSnapshotContentTooLarge:
      additionalProperties: false
      properties:
        kind:
          enum:
            - too_large
          type: string
      required:
        - kind
      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.