REST API endpoints for stacked pull requests

Use the REST API to interact with stacked pull requests.

Note

Most endpoints use Authorization: Bearer <YOUR-TOKEN> and Accept: application/vnd.github+json headers, plus X-GitHub-Api-Version: 2026-03-10. Curl examples below omit these standard headers for brevity.

List pull request stacks

GET /repos/{owner}/{repo}/stacks

Lists pull request stacks in a repository.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/stacks

Response schema (Status: 200):

Array of Pull Request Stack Minimal:

Create a pull request stack

POST /repos/{owner}/{repo}/stacks

Creates a stack from an ordered list of pull request numbers. Provide the pull
request numbers from the bottom of the stack to the top. Each pull request's
base ref must match the previous pull request's head ref.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X POST \
  https://api.github.com/repos/OWNER/REPO/stacks \
  -d '{
  "pull_requests": [
    101,
    102,
    103
  ]
}'

Response schema (Status: 201):

Get a pull request stack

GET /repos/{owner}/{repo}/stacks/{stack_number}

Gets a pull request stack by providing its stack number.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/stacks/STACK_NUMBER

Response schema (Status: 200):

Same response schema as Create a pull request stack.

Add pull requests to a pull request stack

POST /repos/{owner}/{repo}/stacks/{stack_number}/add

Appends an ordered list of pull request numbers onto the top of an existing
stack. Provide only the pull requests you want to add, from the current top of
the stack upward. The first new pull request's base ref must match the current
top pull request's head ref.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X POST \
  https://api.github.com/repos/OWNER/REPO/stacks/STACK_NUMBER/add \
  -d '{
  "pull_requests": [
    104,
    102
  ]
}'

Response schema (Status: 200):

Same response schema as Create a pull request stack.

Remove pull requests from a pull request stack

POST /repos/{owner}/{repo}/stacks/{stack_number}/unstack

Removes the unmerged pull requests from a stack. Pull requests that cannot be
unstacked (for example, those that are queued for merge) are left in place. When pull requests remain in the stack, the updated
stack is returned with a 200. When no pull requests remain, the stack is
dissolved and a 204 is returned.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X POST \
  https://api.github.com/repos/OWNER/REPO/stacks/STACK_NUMBER/unstack

Response schema (Status: 200):

Same response schema as Create a pull request stack.