REST API endpoints for GitHub Actions cache
Use the REST API to interact with the cache for repositories in GitHub Actions.
About the cache in GitHub Actions
You can use the REST API to query and manage the cache for repositories in GitHub Actions. You can also install a GitHub CLI extension to manage your caches from the command line. For more information, see Dependency caching reference.
Get GitHub Actions cache retention limit for an enterprise
Gets GitHub Actions cache retention limit for an enterprise. All organizations and repositories under this enterprise may not set a higher cache retention limit.
OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Enterprise administration" enterprise permissions (write)
Parameters for "Get GitHub Actions cache retention limit for an enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/actions/cache/retention-limitResponse
Status: 200{
"max_cache_retention_days": 80
}Set GitHub Actions cache retention limit for an enterprise
Sets GitHub Actions cache retention limit for an enterprise. All organizations and repositories under this enterprise may not set a higher cache retention limit.
OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Enterprise administration" enterprise permissions (write)
Parameters for "Set GitHub Actions cache retention limit for an enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
| Name, Type, Description |
|---|
max_cache_retention_days integer For repositories & organizations in an enterprise, the maximum duration, in days, for which caches in a repository may be retained. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/actions/cache/retention-limit \
-d '{"max_cache_retention_days":80}'Response
Status: 204Get GitHub Actions cache storage limit for an enterprise
Gets GitHub Actions cache storage limit for an enterprise. All organizations and repositories under this enterprise may not set a higher cache storage limit.
OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Enterprise administration" enterprise permissions (write)
Parameters for "Get GitHub Actions cache storage limit for an enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/actions/cache/storage-limitResponse
Status: 200{
"max_cache_size_gb": 150
}Set GitHub Actions cache storage limit for an enterprise
Sets GitHub Actions cache storage limit for an enterprise. All organizations and repositories under this enterprise may not set a higher cache storage limit.
OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Enterprise administration" enterprise permissions (write)
Parameters for "Set GitHub Actions cache storage limit for an enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
| Name, Type, Description |
|---|
max_cache_size_gb integer For repositories & organizations in an enterprise, the maximum size limit for the sum of all caches in a repository, in gigabytes. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/actions/cache/storage-limit \
-d '{"max_cache_size_gb":150}'Response
Status: 204Get GitHub Actions cache retention limit for an organization
Gets GitHub Actions cache retention limit for an organization. All repositories under this organization may not set a higher cache retention limit.
OAuth tokens and personal access tokens (classic) need the admin:organization scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (read)
Parameters for "Get GitHub Actions cache retention limit for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/organizations/ORG/actions/cache/retention-limitResponse
Status: 200{
"max_cache_retention_days": 80
}Set GitHub Actions cache retention limit for an organization
Sets GitHub Actions cache retention limit for an organization. All repositories under this organization may not set a higher cache retention limit.
OAuth tokens and personal access tokens (classic) need the admin:organization scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (write)
Parameters for "Set GitHub Actions cache retention limit for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
| Name, Type, Description |
|---|
max_cache_retention_days integer For repositories in this organization, the maximum duration, in days, for which caches in a repository may be retained. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/organizations/ORG/actions/cache/retention-limit \
-d '{"max_cache_retention_days":80}'Response
Status: 204Get GitHub Actions cache storage limit for an organization
Gets GitHub Actions cache storage limit for an organization. All repositories under this organization may not set a higher cache storage limit.
OAuth tokens and personal access tokens (classic) need the admin:organization scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (read)
Parameters for "Get GitHub Actions cache storage limit for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/organizations/ORG/actions/cache/storage-limitResponse
Status: 200{
"max_cache_size_gb": 150
}Set GitHub Actions cache storage limit for an organization
Sets GitHub Actions cache storage limit for an organization. All organizations and repositories under this organization may not set a higher cache storage limit.
OAuth tokens and personal access tokens (classic) need the admin:organization scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (write)
Parameters for "Set GitHub Actions cache storage limit for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
| Name, Type, Description |
|---|
max_cache_size_gb integer For repositories in the organization, the maximum size limit for the sum of all caches in a repository, in gigabytes. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/organizations/ORG/actions/cache/storage-limit \
-d '{"max_cache_size_gb":150}'Response
Status: 204Get GitHub Actions cache usage for an organization
Gets the total GitHub Actions cache usage for an organization. The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (read)
Parameters for "Get GitHub Actions cache usage for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/orgs/ORG/actions/cache/usageResponse
Status: 200{
"total_active_caches_size_in_bytes": 3344284,
"total_active_caches_count": 5
}List repositories with GitHub Actions cache usage for an organization
Lists repositories and their GitHub Actions cache usage for an organization. The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" organization permissions (read)
Parameters for "List repositories with GitHub Actions cache usage for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
| Name, Type, Description |
|---|
per_page integer The number of results per page (max 100). For more information, see "Using pagination in the REST API." Default: |
page integer The page number of the results to fetch. For more information, see "Using pagination in the REST API." Default: |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/orgs/ORG/actions/cache/usage-by-repositoryResponse
Status: 200{
"total_count": 2,
"repository_cache_usages": [
{
"full_name": "octo-org/Hello-World",
"active_caches_size_in_bytes": 2322142,
"active_caches_count": 3
},
{
"full_name": "octo-org/server",
"active_caches_size_in_bytes": 1022142,
"active_caches_count": 2
}
]
}Get GitHub Actions cache retention limit for a repository
Gets GitHub Actions cache retention limit for a repository. This determines how long caches will be retained for, if not manually removed or evicted due to size constraints.
OAuth tokens and personal access tokens (classic) need the admin:repository scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" repository permissions (read)
Parameters for "Get GitHub Actions cache retention limit for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cache/retention-limitResponse
Status: 200{
"max_cache_retention_days": 80
}Set GitHub Actions cache retention limit for a repository
Sets GitHub Actions cache retention limit for a repository. This determines how long caches will be retained for, if not manually removed or evicted due to size constraints.
OAuth tokens and personal access tokens (classic) need the admin:repository scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" repository permissions (write)
Parameters for "Set GitHub Actions cache retention limit for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
| Name, Type, Description |
|---|
max_cache_retention_days integer The maximum number of days to keep caches in this repository. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cache/retention-limit \
-d '{"max_cache_retention_days":80}'Response
Status: 204Get GitHub Actions cache storage limit for a repository
Gets GitHub Actions cache storage limit for a repository. This determines the maximum size of caches that can be stored before eviction occurs.
OAuth tokens and personal access tokens (classic) need the admin:repository scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Actions" repository permissions (read)
Parameters for "Get GitHub Actions cache storage limit for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cache/storage-limitResponse
Status: 200{
"max_cache_size_gb": 150
}Set GitHub Actions cache storage limit for a repository
Sets GitHub Actions cache storage limit for a repository. This determines the maximum size of caches that can be stored before eviction occurs.
OAuth tokens and personal access tokens (classic) need the admin:repository scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Administration" repository permissions (write)
Parameters for "Set GitHub Actions cache storage limit for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
| Name, Type, Description |
|---|
max_cache_size_gb integer The maximum total cache size for this repository, in gigabytes. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
403 | Forbidden |
404 | Resource not found |
code_samples
request_example
curl -L \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cache/storage-limit \
-d '{"max_cache_size_gb":150}'Response
Status: 204Get GitHub Actions cache usage for a repository
Gets GitHub Actions cache usage for a repository. The data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
Anyone with read access to the repository can use this endpoint.
If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Actions" repository permissions (read)
allows_public_read_access
Parameters for "Get GitHub Actions cache usage for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cache/usageResponse
Status: 200{
"full_name": "octo-org/Hello-World",
"active_caches_size_in_bytes": 2322142,
"active_caches_count": 3
}List GitHub Actions caches for a repository
Lists the GitHub Actions caches for a repository.
OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Actions" repository permissions (read)
allows_public_read_access
Parameters for "List GitHub Actions caches for a repository"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
| Name, Type, Description |
|---|
per_page integer The number of results per page (max 100). For more information, see "Using pagination in the REST API." Default: |
page integer The page number of the results to fetch. For more information, see "Using pagination in the REST API." Default: |
ref string The full Git reference for narrowing down the cache. The |
key string An explicit key or prefix for identifying the cache |
sort string The property to sort the results by. Default: Can be one of: |
direction string The direction to sort the results by. Default: Can be one of: |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
code_samples
request_example
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/cachesResponse
Status: 200{
"total_count": 1,
"actions_caches": [
{
"id": 505,
"ref": "refs/heads/main",
"key": "Linux-node-958aff96db2d75d67787d1e634ae70b659de937b",
"version": "73885106f58cc52a7df9ec4d4a5622a5614813162cb516c759a30af6bf56e6f0",
"last_accessed_at": "2019-01-24T22:45:36.000Z",
"created_at": "2019-01-24T22:45:36.000Z",
"size_in_bytes": 1024
}
]
}Delete GitHub Actions caches for a repository (using a cache key)
Deletes one or more GitHub Actions caches for a repository, using a complete cache key. By default, all caches that match the provided key are deleted, but you can optionally provide a Git ref to restrict deletions to caches that match both the provided key and the Git ref.
OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Actions" repository permissions (write)
Parameters for "Delete GitHub Actions caches for a repository (using a cache key)"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
| Name, Type, Description |
|---|
key string RequiredA key for identifying the cache. |
ref string The full Git reference for narrowing down the cache. The |
http_status_code
| status_code | Description |
|---|---|
200 | OK |
code_samples
request_example
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
"https://api.github.com/repos/OWNER/REPO/actions/caches?key=Linux-node-958aff96db2d75d67787d1e634ae70b659de937b"Response
Status: 200{
"total_count": 1,
"actions_caches": [
{
"id": 505,
"ref": "refs/heads/main",
"key": "Linux-node-958aff96db2d75d67787d1e634ae70b659de937b",
"version": "73885106f58cc52a7df9ec4d4a5622a5614813162cb516c759a30af6bf56e6f0",
"last_accessed_at": "2019-01-24T22:45:36.000Z",
"created_at": "2019-01-24T22:45:36.000Z",
"size_in_bytes": 1024
}
]
}Delete a GitHub Actions cache for a repository (using a cache ID)
Deletes a GitHub Actions cache for a repository, using a cache ID.
OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.
fine_grained_access
works_with_fine_grained_tokens:
permission_set:
- "Actions" repository permissions (write)
Parameters for "Delete a GitHub Actions cache for a repository (using a cache ID)"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
cache_id integer RequiredThe unique identifier of the GitHub Actions cache. |
http_status_code
| status_code | Description |
|---|---|
204 | No Content |
code_samples
request_example
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2026-03-10" \
https://api.github.com/repos/OWNER/REPO/actions/caches/CACHE_IDResponse
Status: 204