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

# Merge a pull request

> Squash-merges the exact pull request row named by pullRequestID, pinned to the head commit and the number the caller confirmed. 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 POST /pull-requests/{pullRequestID}/github/pr/merge
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}/github/pr/merge:
    post:
      tags:
        - pull-requests
      summary: Merge a pull request
      description: >-
        Squash-merges the exact pull request row named by pullRequestID, pinned
        to the head commit and the number the caller confirmed. 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: mergePullRequestGithubPR
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeTaskPRRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeTaskPRResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '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
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Conflict
        '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
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Gateway
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Service Unavailable
components:
  schemas:
    MergeTaskPRRequest:
      additionalProperties: false
      properties:
        expected_head_sha:
          description: >-
            the exact 40-character lowercase head commit SHA the user reviewed;
            GitHub refuses the merge if the PR head has moved past it
          maxLength: 40
          minLength: 40
          pattern: ^[0-9a-f]{40}$
          type: string
        expected_pr_number:
          description: >-
            the number of the pull request the user reviewed; the merge is
            refused with 409 if the task's primary published pull request is no
            longer this one
          format: int64
          minimum: 1
          type: integer
        method:
          enum:
            - squash
          type: string
      required:
        - method
        - expected_head_sha
        - expected_pr_number
      type: object
    MergeTaskPRResponse:
      additionalProperties: false
      properties:
        sha:
          minLength: 1
          type: string
      required:
        - sha
      type: object
    ErrorResponse:
      additionalProperties: false
      properties:
        code:
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````