REST API endpoints for push protection bypass requests
Use the REST API to manage push protection bypass requests for secret scanning.
List bypass requests for secret scanning for an enterprise
List requests to bypass secret scanning push protection in an enterprise.
Delegated bypass must be enabled on repositories in the enterprise and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "List bypass requests for secret scanning for an enterprise"
This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.
Parameters for "List bypass requests for secret scanning for an enterprise"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| enterprisestring RequiredThe slug version of the enterprise name. | 
| Name, Type, Description | 
|---|
| organization_namestringThe name of the organization to filter on. | 
| reviewerstringFilter bypass requests by the handle of the GitHub user who reviewed the bypass request. | 
| requesterstringFilter bypass requests by the handle of the GitHub user who requested the bypass. | 
| time_periodstringThe time period to filter by. For example,  Default:  Can be one of:  | 
| request_statusstringThe status of the bypass request to filter on. When specified, only requests with this status will be returned. Default:  Can be one of:  | 
| per_pageintegerThe number of results per page (max 100). For more information, see "Using pagination in the REST API." Default:  | 
| pageintegerThe page number of the results to fetch. For more information, see "Using pagination in the REST API." Default:  | 
HTTP response status codes for "List bypass requests for secret scanning for an enterprise"
| Status code | Description | 
|---|---|
| 200 | OK | 
| 404 | Resource not found | 
| 500 | Internal Error | 
Code samples for "List bypass requests for secret scanning for an enterprise"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/enterprises/ENTERPRISE/bypass-requests/secret-scanningResponse
Status: 200[
  {
    "id": 21,
    "number": 42,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "used_in_tests",
        "path": "/tests/README.md:16:0",
        "branch": "refs/heads/main"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46256132",
    "status": "denied",
    "requester_comment": "Test token used in the readme as an example",
    "expires_at": "2024-07-08T08:43:03Z",
    "created_at": "2024-07-01T08:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/1",
    "html_url": "https://github.com/octo-org/smile/exemptions/1"
  },
  {
    "id": 12,
    "number": 24,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "fix_later",
        "path": "README.md:17:0",
        "branch": "refs/heads/my-branch"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46255555",
    "status": "denied",
    "requester_comment": "Token is already revoked, I'll remove it later",
    "expires_at": "2024-07-08T07:43:03Z",
    "created_at": "2024-07-01T07:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/2",
    "html_url": "https://github.com/octo-org/smile/exemptions/2"
  }
]List bypass requests for secret scanning for an org
List requests to bypass secret scanning push protection in an org.
Delegated bypass must be enabled on repositories in the org and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "List bypass requests for secret scanning for an org"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Secret scanning alerts" repository permissions (read) and "Organization bypass requests for secret scanning" organization permissions (read)
Parameters for "List bypass requests for secret scanning for an org"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| Name, Type, Description | 
|---|
| repository_namestringThe name of the repository to filter on. | 
| reviewerstringFilter bypass requests by the handle of the GitHub user who reviewed the bypass request. | 
| requesterstringFilter bypass requests by the handle of the GitHub user who requested the bypass. | 
| time_periodstringThe time period to filter by. For example,  Default:  Can be one of:  | 
| request_statusstringThe status of the bypass request to filter on. When specified, only requests with this status will be returned. Default:  Can be one of:  | 
| per_pageintegerThe number of results per page (max 100). For more information, see "Using pagination in the REST API." Default:  | 
| pageintegerThe page number of the results to fetch. For more information, see "Using pagination in the REST API." Default:  | 
HTTP response status codes for "List bypass requests for secret scanning for an org"
| Status code | Description | 
|---|---|
| 200 | OK | 
| 404 | Resource not found | 
| 500 | Internal Error | 
Code samples for "List bypass requests for secret scanning for an org"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/orgs/ORG/bypass-requests/secret-scanningResponse
Status: 200[
  {
    "id": 21,
    "number": 42,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "used_in_tests",
        "path": "/tests/README.md:16:0",
        "branch": "refs/heads/main"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46256132",
    "status": "denied",
    "requester_comment": "Test token used in the readme as an example",
    "expires_at": "2024-07-08T08:43:03Z",
    "created_at": "2024-07-01T08:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/1",
    "html_url": "https://github.com/octo-org/smile/exemptions/1"
  },
  {
    "id": 12,
    "number": 24,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "fix_later",
        "path": "README.md:17:0",
        "branch": "refs/heads/my-branch"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46255555",
    "status": "denied",
    "requester_comment": "Token is already revoked, I'll remove it later",
    "expires_at": "2024-07-08T07:43:03Z",
    "created_at": "2024-07-01T07:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/2",
    "html_url": "https://github.com/octo-org/smile/exemptions/2"
  }
]List bypass requests for secret scanning for a repository
Lists requests to bypass secret scanning push protection in a repository.
Delegated bypass must be enabled on the repository and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "List bypass requests for secret scanning for a repository"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have at least one of the following permission sets:
- "Secret scanning alerts" repository permissions (read) and "Organization bypass requests for secret scanning" organization permissions (read)
- "Secret scanning alerts" repository permissions (read) and "Secret scanning push protection bypass requests" repository permissions (read)
Parameters for "List bypass requests for secret scanning for a repository"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| ownerstring RequiredThe account owner of the repository. The name is not case sensitive. | 
| repostring RequiredThe name of the repository without the  | 
| Name, Type, Description | 
|---|
| reviewerstringFilter bypass requests by the handle of the GitHub user who reviewed the bypass request. | 
| requesterstringFilter bypass requests by the handle of the GitHub user who requested the bypass. | 
| time_periodstringThe time period to filter by. For example,  Default:  Can be one of:  | 
| request_statusstringThe status of the bypass request to filter on. When specified, only requests with this status will be returned. Default:  Can be one of:  | 
| per_pageintegerThe number of results per page (max 100). For more information, see "Using pagination in the REST API." Default:  | 
| pageintegerThe page number of the results to fetch. For more information, see "Using pagination in the REST API." Default:  | 
HTTP response status codes for "List bypass requests for secret scanning for a repository"
| Status code | Description | 
|---|---|
| 200 | A list of the bypass requests. | 
| 403 | Forbidden | 
| 404 | Resource not found | 
| 500 | Internal Error | 
Code samples for "List bypass requests for secret scanning for a repository"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/bypass-requests/secret-scanningA list of the bypass requests.
Status: 200[
  {
    "id": 21,
    "number": 42,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "used_in_tests",
        "path": "/tests/README.md:16:0",
        "branch": "refs/heads/main"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46256132",
    "status": "denied",
    "requester_comment": "Test token used in the readme as an example",
    "expires_at": "2024-07-08T08:43:03Z",
    "created_at": "2024-07-01T08:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/1",
    "html_url": "https://github.com/octo-org/smile/exemptions/1"
  },
  {
    "id": 12,
    "number": 24,
    "repository": {
      "id": 1,
      "name": "smile",
      "full_name": "octo-org/smile"
    },
    "organization": {
      "id": 1,
      "name": "octo-org"
    },
    "requester": {
      "actor_id": 12,
      "actor_name": "monalisa"
    },
    "request_type": "secret_scanning",
    "data": [
      {
        "secret_type": "adafruit_io_key",
        "bypass_reason": "fix_later",
        "path": "README.md:17:0",
        "branch": "refs/heads/my-branch"
      }
    ],
    "resource_identifier": "827efc6d56897b048c772eb4087f854f46255555",
    "status": "denied",
    "requester_comment": "Token is already revoked, I'll remove it later",
    "expires_at": "2024-07-08T07:43:03Z",
    "created_at": "2024-07-01T07:43:03Z",
    "responses": [
      {
        "id": 42,
        "reviewer": {
          "actor_id": 4,
          "actor_name": "octocat"
        },
        "status": "denied",
        "created_at": "2024-07-02T08:43:04Z"
      }
    ],
    "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/2",
    "html_url": "https://github.com/octo-org/smile/exemptions/2"
  }
]Get a bypass request for secret scanning
Gets a specific request to bypass secret scanning push protection in a repository.
Delegated bypass must be enabled on the repository and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "Get a bypass request for secret scanning"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Secret scanning alerts" repository permissions (read) and "Organization bypass requests for secret scanning" organization permissions (read)
Parameters for "Get a bypass request for secret scanning"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| ownerstring RequiredThe account owner of the repository. The name is not case sensitive. | 
| repostring RequiredThe name of the repository without the  | 
| bypass_request_numberinteger RequiredThe number that identifies the bypass request in a repository. | 
HTTP response status codes for "Get a bypass request for secret scanning"
| Status code | Description | 
|---|---|
| 200 | A single bypass request. | 
| 403 | Forbidden | 
| 404 | Resource not found | 
| 500 | Internal Error | 
Code samples for "Get a bypass request for secret scanning"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/bypass-requests/secret-scanning/BYPASS_REQUEST_NUMBERA single bypass request.
Status: 200{
  "id": 21,
  "number": 42,
  "repository": {
    "id": 1,
    "name": "smile",
    "full_name": "octo-org/smile"
  },
  "organization": {
    "id": 1,
    "name": "octo-org"
  },
  "requester": {
    "actor_id": 12,
    "actor_name": "monalisa"
  },
  "request_type": "secret_scanning",
  "data": [
    {
      "secret_type": "adafruit_io_key",
      "bypass_reason": "used_in_tests",
      "path": "/tests/README.md:16:0",
      "branch": "refs/heads/main"
    }
  ],
  "resource_identifier": "827efc6d56897b048c772eb4087f854f46256132",
  "status": "denied",
  "requester_comment": "Test token used in the readme as an example",
  "expires_at": "2024-07-08T08:43:03Z",
  "created_at": "2024-07-01T08:43:03Z",
  "responses": [
    {
      "id": 42,
      "reviewer": {
        "actor_id": 4,
        "actor_name": "octocat"
      },
      "status": "denied",
      "created_at": "2024-07-02T08:43:04Z"
    }
  ],
  "url": "https://api.github.com/repos/octo-org/smile/bypass-requests/secret-scanning/1",
  "html_url": "https://github.com/octo-org/smile/exemptions/1"
}Review a bypass request for secret scanning
Approve or deny a request to bypass secret scanning push protection in a repository.
Delegated bypass must be enabled on the repository and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "Review a bypass request for secret scanning"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have at least one of the following permission sets:
- "Secret scanning alerts" repository permissions (read) and "Organization bypass requests for secret scanning" organization permissions (write)
- "Secret scanning alerts" repository permissions (read) and "Secret scanning push protection bypass requests" repository permissions (write)
Parameters for "Review a bypass request for secret scanning"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| ownerstring RequiredThe account owner of the repository. The name is not case sensitive. | 
| repostring RequiredThe name of the repository without the  | 
| bypass_request_numberinteger RequiredThe number that identifies the bypass request in a repository. | 
| Name, Type, Description | 
|---|
| statusstring RequiredThe review action to perform on the bypass request. Can be one of:  | 
| messagestring RequiredA message to include with the review. Has a maximum character length of 2048. | 
HTTP response status codes for "Review a bypass request for secret scanning"
| Status code | Description | 
|---|---|
| 200 | The review of the bypass request. | 
| 403 | Forbidden | 
| 404 | Resource not found | 
| 422 | Validation failed, or the endpoint has been spammed. | 
| 500 | Internal Error | 
Code samples for "Review a bypass request for secret scanning"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -X PATCH \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/bypass-requests/secret-scanning/BYPASS_REQUEST_NUMBER \
  -d '{"status":"reject","message":"This secret has not been revoked."}'The review of the bypass request.
Status: 200{
  "bypass_review_id": 1
}Dismiss a response on a bypass request for secret scanning
Dissmiss a response given to a bypass request for secret scanning push protection in a repository.
Delegated bypass must be enabled on the repository and the user must be a bypass reviewer to access this endpoint.
Personal access tokens (classic) need the security_events scope to use this endpoint.
Fine-grained access tokens for "Dismiss a response on a bypass request for secret scanning"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Secret scanning alerts" repository permissions (read)
Parameters for "Dismiss a response on a bypass request for secret scanning"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| ownerstring RequiredThe account owner of the repository. The name is not case sensitive. | 
| repostring RequiredThe name of the repository without the  | 
| bypass_response_idinteger RequiredID of the bypass response. | 
HTTP response status codes for "Dismiss a response on a bypass request for secret scanning"
| Status code | Description | 
|---|---|
| 204 | Review was successfully dismissed. | 
| 403 | Forbidden | 
| 404 | Resource not found | 
| 422 | Validation failed, or the endpoint has been spammed. | 
| 500 | Internal Error | 
Code samples for "Dismiss a response on a bypass request for secret scanning"
If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.
Request example
curl -L \
  -X DELETE \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/bypass-responses/secret-scanning/BYPASS_RESPONSE_IDReview was successfully dismissed.
Status: 204