REST API endpoints for personal access tokens

Use the REST API to manage fine-grained personal access tokens.

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 requests to access organization resources with fine-grained personal access tokens

GET /orgs/{org}/personal-access-token-requests

Lists requests from organization members to access organization resources with a fine-grained personal access token.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/orgs/ORG/personal-access-token-requests

Response schema (Status: 200):

Array of Simple Organization Programmatic Access Grant Request:

Review requests to access organization resources with fine-grained personal access tokens

POST /orgs/{org}/personal-access-token-requests

Approves or denies multiple pending requests to access organization resources via a fine-grained personal access token.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example of denying a request

Request:

curl -L \
  -X POST \
  https://api.github.com/orgs/ORG/personal-access-token-requests \
  -d '{
  "pat_request_ids": [
    42,
    73
  ],
  "action": "deny",
  "reason": "Access is too broad."
}'

Response schema (Status: 202):

object

Review a request to access organization resources with a fine-grained personal access token

POST /orgs/{org}/personal-access-token-requests/{pat_request_id}

Approves or denies a pending request to access organization resources via a fine-grained personal access token.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example of denying a request

Request:

curl -L \
  -X POST \
  https://api.github.com/orgs/ORG/personal-access-token-requests/PAT_REQUEST_ID \
  -d '{
  "action": "deny",
  "reason": "This request is denied because the access is too broad."
}'

Response schema (Status: 204):

List repositories requested to be accessed by a fine-grained personal access token

GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories

Lists the repositories a fine-grained personal access token request is requesting access to.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/orgs/ORG/personal-access-token-requests/PAT_REQUEST_ID/repositories

Response schema (Status: 200):

Array of Minimal Repository:

List fine-grained personal access tokens with access to organization resources

GET /orgs/{org}/personal-access-tokens

Lists approved fine-grained personal access tokens owned by organization members that can access organization resources.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/orgs/ORG/personal-access-tokens

Response schema (Status: 200):

Array of Organization Programmatic Access Grant:

Update the access to organization resources via fine-grained personal access tokens

POST /orgs/{org}/personal-access-tokens

Updates the access organization members have to organization resources via fine-grained personal access tokens. Limited to revoking a token's existing access.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example of revoking a fine-grained personal access token.

Request:

curl -L \
  -X POST \
  https://api.github.com/orgs/ORG/personal-access-tokens \
  -d '{
  "action": "revoke",
  "pat_ids": [
    1296269,
    1296280
  ]
}'

Response schema (Status: 202):

Same response schema as Review requests to access organization resources with fine-grained personal access tokens.

Update the access a fine-grained personal access token has to organization resources

POST /orgs/{org}/personal-access-tokens/{pat_id}

Updates the access an organization member has to organization resources via a fine-grained personal access token. Limited to revoking the token's existing access. Limited to revoking a token's existing access.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example of revoking a fine-grained personal access token.

Request:

curl -L \
  -X POST \
  https://api.github.com/orgs/ORG/personal-access-tokens/PAT_ID \
  -d '{
  "action": "revoke"
}'

Response schema (Status: 204):

List repositories a fine-grained personal access token has access to

GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories

Lists the repositories a fine-grained personal access token has access to.
Only GitHub Apps can use this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/orgs/ORG/personal-access-tokens/PAT_ID/repositories

Response schema (Status: 200):

Same response schema as List repositories requested to be accessed by a fine-grained personal access token.