Use the REST API to manage artifact attestations.
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.
POST /users/{username}/attestations/bulk-list
List a collection of artifact attestations associated with any entry in a list of subject digests owned by a user.
The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the attestations:read permission is required.
Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.
accept (string)application/vnd.github+json is recommended.per_page (integer)
The number of results per page (max 100). For more information, see "Using pagination in the REST API."
Default: 30
before (string)
A cursor, as given in the Link header. If specified, the query only searches for results before this cursor. For more information, see "Using pagination in the REST API."
after (string)
A cursor, as given in the Link header. If specified, the query only searches for results after this cursor. For more information, see "Using pagination in the REST API."
username (string) (required)
The handle for the GitHub user account.
subject_digests (array of strings) (required)
List of subject digests to fetch attestations for.
predicate_type (string)
Optional filter for fetching attestations with a given predicate type.
This option accepts provenance, sbom, release, or freeform text
for custom predicate types.
Request:
curl -L \
-X POST \
https://api.github.com/users/USERNAME/attestations/bulk-list \
-d '{
"subject_digests": [
"sha256:abc123",
"sha512:def456"
]
}'
Response schema (Status: 200):
attestations_subject_digests: object, additional properties: array or nullpage_info: object:
has_next: booleanhas_previous: booleannext: stringprevious: stringPOST /users/{username}/attestations/delete-request
Delete artifact attestations in bulk by either subject digests or unique ID.
accept (string)application/vnd.github+json is recommended.username (string) (required)subject_digests (array of strings) (required)200 - OK
404 - Resource not found
Request:
curl -L \
-X POST \
https://api.github.com/users/USERNAME/attestations/delete-request \
-d '{
"subject_digests": [
"sha256:abc123",
"sha512:def456"
]
}'
Response schema (Status: 200):
Request:
curl -L \
-X POST \
https://api.github.com/users/USERNAME/attestations/delete-request \
-d '{
"attestation_ids": [
111,
222
]
}'
Response schema (Status: 200):
DELETE /users/{username}/attestations/digest/{subject_digest}
Delete an artifact attestation by subject digest.
accept (string)application/vnd.github+json is recommended.username (string) (required)
The handle for the GitHub user account.
subject_digest (string) (required)
Subject Digest
200 - OK
204 - No Content
404 - Resource not found
Request:
curl -L \
-X DELETE \
https://api.github.com/users/USERNAME/attestations/digest/SUBJECT_DIGEST
Response schema (Status: 200):
Request:
curl -L \
-X DELETE \
https://api.github.com/users/USERNAME/attestations/digest/SUBJECT_DIGEST
Response schema (Status: 204):
DELETE /users/{username}/attestations/{attestation_id}
Delete an artifact attestation by unique ID that is associated with a repository owned by a user.
accept (string)application/vnd.github+json is recommended.username (string) (required)
The handle for the GitHub user account.
attestation_id (integer) (required)
Attestation ID
200 - OK
204 - No Content
403 - Forbidden
404 - Resource not found
Request:
curl -L \
-X DELETE \
https://api.github.com/users/USERNAME/attestations/ATTESTATION_ID
Response schema (Status: 200):
Request:
curl -L \
-X DELETE \
https://api.github.com/users/USERNAME/attestations/ATTESTATION_ID
Response schema (Status: 204):
GET /users/{username}/attestations/{subject_digest}
List a collection of artifact attestations with a given subject digest that are associated with repositories owned by a user.
The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the attestations:read permission is required.
Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.
accept (string)application/vnd.github+json is recommended.per_page (integer)
The number of results per page (max 100). For more information, see "Using pagination in the REST API."
Default: 30
before (string)
A cursor, as given in the Link header. If specified, the query only searches for results before this cursor. For more information, see "Using pagination in the REST API."
after (string)
A cursor, as given in the Link header. If specified, the query only searches for results after this cursor. For more information, see "Using pagination in the REST API."
username (string) (required)
The handle for the GitHub user account.
subject_digest (string) (required)
Subject Digest
predicate_type (string)
Optional filter for fetching attestations with a given predicate type.
This option accepts provenance, sbom, release, or freeform text
for custom predicate types.
200 - OK
201 - Created
204 - No Content
404 - Resource not found
Request:
curl -L \
-X GET \
https://api.github.com/users/USERNAME/attestations/SUBJECT_DIGEST
Response schema (Status: 200):
attestations: array of objects:
repository_id: integerbundle_url: stringinitiator: string