> ## 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.

# List a pull request's activity

> The pull request's history as one newest-first, cursor-paginated feed assembled server-side from Aether's own records: the authoring task's events, review run boundaries, delivered feedback dispatches, every stored GitHub review verdict and the merge. Nothing is fetched from GitHub; pull_request.github_reviews_synced is false until the console's first read imported GitHub's reviews. Feed next_cursor back through before for the next page; a malformed cursor is 422. Requires membership in the owning organization of a task linked to this pull request — the task that published it or a task that reviewed it — and current GitHub access to the repository. 404 covers an unknown pull request, one linked to no organization the caller belongs to, and one whose GitHub access the caller has lost; the three are deliberately indistinguishable.



## OpenAPI

````yaml api-reference/openapi.account.json GET /pull-requests/{pullRequestID}/activity
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:
  /pull-requests/{pullRequestID}/activity:
    get:
      tags:
        - pull-requests
      summary: List a pull request's activity
      description: >-
        The pull request's history as one newest-first, cursor-paginated feed
        assembled server-side from Aether's own records: the authoring task's
        events, review run boundaries, delivered feedback dispatches, every
        stored GitHub review verdict and the merge. Nothing is fetched from
        GitHub; pull_request.github_reviews_synced is false until the console's
        first read imported GitHub's reviews. Feed next_cursor back through
        before for the next page; a malformed cursor is 422. Requires membership
        in the owning organization of a task linked to this pull request — the
        task that published it or a task that reviewed it — and current GitHub
        access to the repository. 404 covers an unknown pull request, one linked
        to no organization the caller belongs to, and one whose GitHub access
        the caller has lost; the three are deliberately indistinguishable.
      operationId: listPullRequestActivity
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
        - explode: false
          in: query
          name: before
          schema:
            minLength: 1
            type: string
        - explode: false
          in: query
          name: limit
          schema:
            default: 50
            format: int64
            maximum: 200
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityPage'
          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:
    ActivityPage:
      additionalProperties: false
      properties:
        events:
          items:
            $ref: '#/components/schemas/ActivityEvent'
          type: array
        next_cursor:
          minLength: 1
          type:
            - string
            - 'null'
        pull_request:
          anyOf:
            - $ref: '#/components/schemas/ActivityPullRequestScope'
            - type: 'null'
      required:
        - events
        - next_cursor
        - pull_request
      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
    ActivityEvent:
      discriminator:
        mapping:
          dispatched:
            $ref: '#/components/schemas/ActivityDispatchedEvent'
          github_review:
            $ref: '#/components/schemas/ActivityGitHubReviewEvent'
          merged:
            $ref: '#/components/schemas/ActivityMergedEvent'
          review_run_completed:
            $ref: '#/components/schemas/ActivityReviewRunCompletedEvent'
          review_run_failed:
            $ref: '#/components/schemas/ActivityReviewRunFailedEvent'
          review_run_started:
            $ref: '#/components/schemas/ActivityReviewRunStartedEvent'
          task_event:
            $ref: '#/components/schemas/ActivityTaskEvent'
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/ActivityTaskEvent'
        - $ref: '#/components/schemas/ActivityReviewRunStartedEvent'
        - $ref: '#/components/schemas/ActivityReviewRunCompletedEvent'
        - $ref: '#/components/schemas/ActivityReviewRunFailedEvent'
        - $ref: '#/components/schemas/ActivityDispatchedEvent'
        - $ref: '#/components/schemas/ActivityGitHubReviewEvent'
        - $ref: '#/components/schemas/ActivityMergedEvent'
    ActivityPullRequestScope:
      additionalProperties: false
      properties:
        github_reviews_synced:
          type: boolean
        pull_request_id:
          format: uuid
          type: string
      required:
        - pull_request_id
        - github_reviews_synced
      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
    ActivityDispatchedEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        dispatch:
          discriminator:
            mapping:
              ci_head:
                $ref: '#/components/schemas/TaskGitHubDispatchCiHead'
              issue_comment:
                $ref: '#/components/schemas/TaskGitHubDispatchIssueComment'
              review:
                $ref: '#/components/schemas/TaskGitHubDispatchReview'
              review_comment:
                $ref: '#/components/schemas/TaskGitHubDispatchReviewComment'
            propertyName: kind
          oneOf:
            - $ref: '#/components/schemas/TaskGitHubDispatchCiHead'
            - $ref: '#/components/schemas/TaskGitHubDispatchReview'
            - $ref: '#/components/schemas/TaskGitHubDispatchReviewComment'
            - $ref: '#/components/schemas/TaskGitHubDispatchIssueComment'
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - dispatched
          type: string
        task_id:
          format: uuid
          type: string
      required:
        - kind
        - key
        - at
        - task_id
        - dispatch
      type: object
    ActivityGitHubReviewEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        author_is_bot:
          type: boolean
        author_login:
          minLength: 1
          type: string
        commit_id:
          pattern: ^[0-9a-f]{40}$
          type: string
        findings_count:
          format: int64
          minimum: 0
          type: integer
        github_review_id:
          format: int64
          maximum: 9007199254740991
          minimum: 1
          type: integer
        html_url:
          format: uri
          pattern: ^[hH][tT][tT][pP][sS]?://
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - github_review
          type: string
        run:
          $ref: '#/components/schemas/ActivityReviewRunRef'
        state:
          enum:
            - APPROVED
            - CHANGES_REQUESTED
            - COMMENTED
            - DISMISSED
          type: string
        verdict:
          enum:
            - COMMENT
            - APPROVE
            - REQUEST_CHANGES
          type: string
      required:
        - kind
        - key
        - at
        - github_review_id
        - author_login
        - author_is_bot
        - state
        - html_url
      type: object
    ActivityMergedEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - merged
          type: string
      required:
        - kind
        - key
        - at
      type: object
    ActivityReviewRunCompletedEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - review_run_completed
          type: string
        run_number:
          format: int64
          minimum: 1
          type: integer
        task_id:
          format: uuid
          type: string
      required:
        - kind
        - key
        - at
        - task_id
        - run_number
      type: object
    ActivityReviewRunFailedEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - review_run_failed
          type: string
        message:
          minLength: 1
          pattern: \S
          type: string
        run_number:
          format: int64
          minimum: 1
          type: integer
        task_id:
          format: uuid
          type: string
      required:
        - kind
        - key
        - at
        - task_id
        - run_number
        - message
      type: object
    ActivityReviewRunStartedEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - review_run_started
          type: string
        run_number:
          format: int64
          minimum: 1
          type: integer
        task_id:
          format: uuid
          type: string
      required:
        - kind
        - key
        - at
        - task_id
        - run_number
      type: object
    ActivityTaskEvent:
      additionalProperties: false
      properties:
        at:
          minLength: 1
          type: string
        key:
          minLength: 1
          type: string
        kind:
          enum:
            - task_event
          type: string
        message:
          minLength: 1
          pattern: \S
          type: string
        task_id:
          format: uuid
          type: string
        type:
          enum:
            - done
            - error
            - question
            - stop
            - start_task
            - workspace_lifecycle
            - workspace_warning
            - ci_passed
            - ci_failed
          type: string
      required:
        - kind
        - key
        - at
        - task_id
        - type
        - message
      type: object
    TaskGitHubDispatchCiHead:
      additionalProperties: false
      properties:
        dispatched_at:
          minLength: 1
          type: string
        head_sha:
          minLength: 1
          type: string
        id:
          format: uuid
          type: string
        kind:
          enum:
            - ci_head
          type: string
        message_id:
          format: uuid
          type: string
        source:
          enum:
            - auto
            - manual
          type: string
      required:
        - id
        - kind
        - head_sha
        - source
        - dispatched_at
      type: object
    TaskGitHubDispatchIssueComment:
      additionalProperties: false
      properties:
        comment_github_id:
          format: int64
          minimum: 1
          type: integer
        dispatched_at:
          minLength: 1
          type: string
        id:
          format: uuid
          type: string
        kind:
          enum:
            - issue_comment
          type: string
        message_id:
          format: uuid
          type: string
        source:
          enum:
            - auto
            - manual
          type: string
      required:
        - id
        - kind
        - comment_github_id
        - source
        - dispatched_at
      type: object
    TaskGitHubDispatchReview:
      additionalProperties: false
      properties:
        comment_github_id:
          format: int64
          minimum: 1
          type: integer
        dispatched_at:
          minLength: 1
          type: string
        id:
          format: uuid
          type: string
        kind:
          enum:
            - review
          type: string
        message_id:
          format: uuid
          type: string
        source:
          enum:
            - auto
            - manual
          type: string
      required:
        - id
        - kind
        - comment_github_id
        - source
        - dispatched_at
      type: object
    TaskGitHubDispatchReviewComment:
      additionalProperties: false
      properties:
        comment_github_id:
          format: int64
          minimum: 1
          type: integer
        dispatched_at:
          minLength: 1
          type: string
        id:
          format: uuid
          type: string
        kind:
          enum:
            - review_comment
          type: string
        message_id:
          format: uuid
          type: string
        source:
          enum:
            - auto
            - manual
          type: string
      required:
        - id
        - kind
        - comment_github_id
        - source
        - dispatched_at
      type: object
    ActivityReviewRunRef:
      additionalProperties: false
      properties:
        run_number:
          format: int64
          minimum: 1
          type: integer
        task_id:
          format: uuid
          type: string
      required:
        - task_id
        - run_number
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````