Organization configurations
Use the REST API to manage private registry configurations for organizations.
List private registries for an organization
Lists all private registry configurations available at the organization-level without revealing their encrypted values.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "List private registries for an organization"
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:
- "Organization private registries" organization permissions (read)
Parameters for "List private registries 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 response status codes for "List private registries for an organization"
| Status code | Description |
|---|---|
200 | OK |
400 | Bad Request |
404 | Resource not found |
Code samples for "List private registries for an organization"
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/private-registriesResponse
Status: 200{
"total_count": 1,
"configurations": [
{
"name": "MAVEN_REPOSITORY_SECRET",
"registry_type": "maven_repository",
"username": "monalisa",
"created_at": "2019-08-10T14:59:22Z",
"updated_at": "2020-01-10T14:59:22Z",
"visibility": "selected"
}
]
}Create a private registry for an organization
Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using LibSodium. For more information, see "Encrypting secrets for the REST API."
For OIDC-based registries (oidc_azure, oidc_aws, or oidc_jfrog), the encrypted_value and key_id fields should be omitted.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "Create a private registry for an organization"
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:
- "Organization private registries" organization permissions (write)
Parameters for "Create a private registry 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 |
|---|
registry_type string RequiredThe registry type. Can be one of: |
url string RequiredThe URL of the private registry. |
username string or null The username to use when authenticating with the private registry. This field should be omitted if the private registry does not require a username for authentication. |
replaces_base boolean Whether this private registry should replace the base registry (e.g., npmjs.org for npm, rubygems.org for rubygems). When set to Default: |
encrypted_value string The value for your secret, encrypted with LibSodium using the public key retrieved from the Get private registries public key for an organization endpoint. Required when |
key_id string The ID of the key you used to encrypt the secret. Required when |
visibility string RequiredWhich type of organization repositories have access to the private registry. Can be one of: |
selected_repository_ids array of integers An array of repository IDs that can access the organization private registry. You can only provide a list of repository IDs when |
auth_type string The authentication type for the private registry. Defaults to Can be one of: |
tenant_id string The tenant ID of the Azure AD application. Required when |
client_id string The client ID of the Azure AD application. Required when |
aws_region string The AWS region. Required when |
account_id string The AWS account ID. Required when |
role_name string The AWS IAM role name. Required when |
domain string The CodeArtifact domain. Required when |
domain_owner string The CodeArtifact domain owner (AWS account ID). Required when |
jfrog_oidc_provider_name string The JFrog OIDC provider name. Required when |
audience string The OIDC audience. Optional for |
identity_mapping_name string The JFrog identity mapping name. Optional for |
HTTP response status codes for "Create a private registry for an organization"
| Status code | Description |
|---|---|
201 | The organization private registry configuration |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
Code samples for "Create a private registry for an organization"
Request examples
curl -L \
-X POST \
-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/private-registries \
-d '{"registry_type":"maven_repository","url":"https://maven.pkg.github.com/organization/","username":"monalisa","replaces_base":true,"encrypted_value":"c2VjcmV0","key_id":"012345678912345678","visibility":"private"}'The organization private registry configuration
Status: 201{
"name": "MAVEN_REPOSITORY_SECRET",
"registry_type": "maven_repository",
"username": "monalisa",
"visibility": "selected",
"selected_repository_ids": [
1296269,
1296280
],
"created_at": "2019-08-10T14:59:22Z",
"updated_at": "2020-01-10T14:59:22Z"
}Get private registries public key for an organization
Gets the org public key, which is needed to encrypt private registry secrets. You need to encrypt a secret before you can create or update secrets.
OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "Get private registries public key for an organization"
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:
- "Organization private registries" organization permissions (read)
Parameters for "Get private registries public key 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 response status codes for "Get private registries public key for an organization"
| Status code | Description |
|---|---|
200 | OK |
404 | Resource not found |
Code samples for "Get private registries public key for an organization"
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/private-registries/public-keyResponse
Status: 200{
"key_id": "012345678912345678",
"key": "2Sg8iYjAxxmI2LvUXpJjkYrMxURPc8r+dB7TJyvv1234"
}Get a private registry for an organization
Get the configuration of a single private registry defined for an organization, omitting its encrypted value.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "Get a private registry for an organization"
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:
- "Organization private registries" organization permissions (read)
Parameters for "Get a private registry for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
secret_name string RequiredThe name of the secret. |
HTTP response status codes for "Get a private registry for an organization"
| Status code | Description |
|---|---|
200 | The specified private registry configuration for the organization |
404 | Resource not found |
Code samples for "Get a private registry for an organization"
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/private-registries/SECRET_NAMEThe specified private registry configuration for the organization
Status: 200{
"name": "MAVEN_REPOSITORY_SECRET",
"registry_type": "maven_repository",
"username": "monalisa",
"visibility": "private",
"created_at": "2019-08-10T14:59:22Z",
"updated_at": "2020-01-10T14:59:22Z"
}Update a private registry for an organization
Updates a private registry configuration with an encrypted value for an organization. Encrypt your secret using LibSodium. For more information, see "Encrypting secrets for the REST API."
For OIDC-based registries (oidc_azure, oidc_aws, or oidc_jfrog), the encrypted_value and key_id fields should be omitted.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "Update a private registry for an organization"
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:
- "Organization private registries" organization permissions (write)
Parameters for "Update a private registry for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
secret_name string RequiredThe name of the secret. |
| Name, Type, Description |
|---|
registry_type string The registry type. Can be one of: |
url string The URL of the private registry. |
username string or null The username to use when authenticating with the private registry. This field should be omitted if the private registry does not require a username for authentication. |
replaces_base boolean Whether this private registry should replace the base registry (e.g., npmjs.org for npm, rubygems.org for rubygems). When set to Default: |
encrypted_value string The value for your secret, encrypted with LibSodium using the public key retrieved from the Get private registries public key for an organization endpoint. |
key_id string The ID of the key you used to encrypt the secret. |
visibility string Which type of organization repositories have access to the private registry. Can be one of: |
selected_repository_ids array of integers An array of repository IDs that can access the organization private registry. You can only provide a list of repository IDs when |
auth_type string The authentication type for the private registry. This field cannot be changed after creation. If provided, it must match the existing Can be one of: |
tenant_id string The tenant ID of the Azure AD application. Required when |
client_id string The client ID of the Azure AD application. Required when |
aws_region string The AWS region. Required when |
account_id string The AWS account ID. Required when |
role_name string The AWS IAM role name. Required when |
domain string The CodeArtifact domain. Required when |
domain_owner string The CodeArtifact domain owner (AWS account ID). Required when |
jfrog_oidc_provider_name string The JFrog OIDC provider name. Required when |
audience string The OIDC audience. Optional for |
identity_mapping_name string The JFrog identity mapping name. Optional for |
HTTP response status codes for "Update a private registry for an organization"
| Status code | Description |
|---|---|
204 | No Content |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
Delete a private registry for an organization
Delete a private registry configuration at the organization-level.
OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.
Fine-grained access tokens for "Delete a private registry for an organization"
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:
- "Organization private registries" organization permissions (write)
Parameters for "Delete a private registry for an organization"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
org string RequiredThe organization name. The name is not case sensitive. |
secret_name string RequiredThe name of the secret. |
HTTP response status codes for "Delete a private registry for an organization"
| Status code | Description |
|---|---|
204 | No Content |
400 | Bad Request |
404 | Resource not found |
Code samples for "Delete a private registry for an organization"
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/orgs/ORG/private-registries/SECRET_NAMEResponse
Status: 204