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

# Reply to a review comment on a pull request

> Replies to the review comment named by its GitHub id through the caller's own GitHub identity, verbatim and attributed by GitHub, so its webhook echo reaches the author task like any human feedback, and answers 201 with the reply GitHub created; the idempotency key is claimed before GitHub is called, so a completed attempt replays its reply. A member with a product role in an owning organization of the pull request — one whose task published or reviewed it, or with a project on its repository — may call it, while they keep GitHub access to the repository. A caller with no connected GitHub identity is refused with 409 github_identity_required and GitHub's own refusals are a 422 with its message. A pull request that does not exist, one no organization of the caller owns and one whose GitHub access the caller has lost answer the same 404, and omitting org_id while more than one of the caller's organizations owns it is a 422 org_id_required.



## OpenAPI

````yaml api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/comments/{githubCommentID}/replies
openapi: 3.1.0
info:
  title: Aether API
  version: 0.1.0
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /pull-requests/{pullRequestID}/github/comments/{githubCommentID}/replies:
    post:
      tags:
        - pull-requests
      summary: Reply to a review comment on a pull request
      description: >-
        Replies to the review comment named by its GitHub id through the
        caller's own GitHub identity, verbatim and attributed by GitHub, so its
        webhook echo reaches the author task like any human feedback, and
        answers 201 with the reply GitHub created; the idempotency key is
        claimed before GitHub is called, so a completed attempt replays its
        reply. A member with a product role in an owning organization of the
        pull request — one whose task published or reviewed it, or with a
        project on its repository — may call it, while they keep GitHub access
        to the repository. A caller with no connected GitHub identity is refused
        with 409 github_identity_required and GitHub's own refusals are a 422
        with its message. A pull request that does not exist, one no
        organization of the caller owns and one whose GitHub access the caller
        has lost answer the same 404, and omitting org_id while more than one of
        the caller's organizations owns it is a 422 org_id_required.
      operationId: createPullRequestGithubCommentReply
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
        - in: path
          name: githubCommentID
          required: true
          schema:
            format: int64
            maximum: 9007199254740991
            minimum: 1
            type: integer
        - description: >-
            The pull request's owning organization to act in: the org_id the
            PullRequest carries. Required when more than one of the caller's
            organizations owns the pull request.
          explode: false
          in: query
          name: org_id
          schema:
            description: >-
              The pull request's owning organization to act in: the org_id the
              PullRequest carries. Required when more than one of the caller's
              organizations owns the pull request.
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplyToTaskPRCommentRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskGitHubPullRequestThreadComment'
          description: Created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PullRequestsErrorResponse'
                  - $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Internal Server Error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Bad Gateway
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Service Unavailable
components:
  schemas:
    ReplyToTaskPRCommentRequest:
      additionalProperties: false
      properties:
        body:
          minLength: 1
          type: string
        idempotency_key:
          description: >-
            client-generated stable key for this reply; retries with the same
            key replay the first result without re-posting
          format: uuid
          type: string
      required:
        - idempotency_key
        - body
      type: object
    TaskGitHubPullRequestThreadComment:
      additionalProperties: false
      properties:
        author_association:
          minLength: 1
          type: string
        author_login:
          minLength: 1
          type:
            - string
            - 'null'
        body:
          type: string
        created_at:
          format: date-time
          type: string
        github_comment_id:
          format: int64
          maximum: 9007199254740991
          minimum: 1
          type: integer
      required:
        - github_comment_id
        - author_login
        - author_association
        - body
        - created_at
      type: object
    PullRequestsErrorResponse:
      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_failed
            - github_identity_required
            - github_push_access_required
            - gone
            - handed_branch_protected
            - head_moved
            - idempotency_key_conflict
            - 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_id_required
            - org_role_insufficient
            - org_suspended
            - payment_required
            - pr_review_actor_required
            - pr_review_publish_forbidden
            - precondition_failed
            - project_has_no_repository
            - project_required
            - 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_has_no_repository
            - 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
    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
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

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