Licensing
Use the REST API to get licensing information.
List enterprise consumed licenses
Lists the license consumption information for all users, including those from connected servers, associated with an enterprise.
The authenticated user must be an enterprise admin to use this endpoint.
OAuth app tokens and personal access tokens (classic) need the read:enterprise scope to use this endpoint.
Fine-grained access tokens for "List enterprise consumed licenses"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise administration" enterprise permissions (read)
Parameters for "List enterprise consumed licenses"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
| 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 enterprise consumed licenses"
| Status code | Description |
|---|---|
200 | Consumed Licenses Response |
Code samples for "List enterprise consumed licenses"
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: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/consumed-licensesConsumed Licenses Response
Status: 200{
"total_seats_consumed": 5000,
"total_seats_purchased": 4500,
"users": [
{
"github_com_login": "monalisa",
"github_com_name": "Mona Lisa",
"enterprise_server_user_ids": [
"example_host_name.com:123",
"example_host_name_2:222"
],
"github_com_user": true,
"enterprise_server_user": true,
"visual_studio_subscription_user": false,
"license_type": "enterprise",
"github_com_profile": "https://github.com/monalisa",
"github_com_member_roles": [
"org1:Owner",
"org2:Owner"
],
"github_com_enterprise_roles": [
"owner"
],
"github_com_verified_domain_emails": [
"monalisa@github.com"
],
"github_com_saml_name_id": "monalisa",
"github_com_orgs_with_pending_invites": [
"org1",
"org2"
],
"github_com_two_factor_auth": true,
"enterprise_server_emails": [
"monalisa@github.com"
],
"visual_studio_license_status": "",
"visual_studio_subscription_email": "",
"total_user_accounts": 3
},
{
"github_com_login": "",
"github_com_name": "",
"enterprise_server_user_ids": [
"example_host_name:123"
],
"github_com_user": false,
"enterprise_server_user": true,
"visual_studio_subscription_user": false,
"license_type": "enterprise",
"github_com_profile": "",
"github_com_member_roles": [],
"github_com_enterprise_role": "",
"github_com_enterprise_roles": [],
"github_com_verified_domain_emails": [],
"github_com_saml_name_id": "",
"github_com_orgs_with_pending_invites": [],
"github_com_two_factor_auth": "",
"enterprise_server_emails": [
"hubot@example.com"
],
"visual_studio_license_status": "",
"visual_studio_subscription_email": "",
"total_user_accounts": 1
}
]
}Get a license sync status
Gets information about the status of a license sync job for an enterprise.
The authenticated user must be an enterprise admin to use this endpoint.
OAuth app tokens and personal access tokens (classic) need the read:enterprise scope to use this endpoint.
Fine-grained access tokens for "Get a license sync status"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise administration" enterprise permissions (read)
Parameters for "Get a license sync status"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name. |
HTTP response status codes for "Get a license sync status"
| Status code | Description |
|---|---|
200 | License Sync Status Response |
Code samples for "Get a license sync status"
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: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/license-sync-statusLicense Sync Status Response
Status: 200{
"server_instances": [
{
"server_id": "deadbeef1",
"hostname": "github.example.com",
"last_sync": {
"date": "2020-01-01T00:00:00Z",
"status": "success",
"error": ""
}
},
{
"server_id": "filetoffish1",
"hostname": "github2.example.com",
"last_sync": {
"date": "2020-01-01T00:00:00Z",
"status": "success",
"error": ""
}
}
]
}Get GitHub Advanced Security active committers for an enterprise
Gets the GitHub Advanced Security active committers for an enterprise per repository. The authenticated user must be an enterprise admin or billing manager.
Each distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of active_users for each repository.
The total number of repositories with committer information is tracked by the total_count field.
Fine-grained access tokens for "Get GitHub Advanced Security active committers for an enterprise"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise administration" enterprise permissions (write)
Parameters for "Get GitHub Advanced Security active committers 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 |
|---|
advanced_security_product string The security product to get GitHub Advanced Security active committers for. For standalone Code Scanning or Secret Protection products, this parameter is required to specify which product you want committer information for. For other plans this parameter cannot be used. Can be one of: |
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 "Get GitHub Advanced Security active committers for an enterprise"
| Status code | Description |
|---|---|
200 | Success |
Code samples for "Get GitHub Advanced Security active committers 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: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/settings/billing/advanced-securitySuccess
Status: 200{
"total_advanced_security_committers": 2,
"total_count": 2,
"maximum_advanced_security_committers": 4,
"purchased_advanced_security_committers": 4,
"repositories": [
{
"name": "octocat-org/Hello-World",
"advanced_security_committers": 2,
"advanced_security_committers_breakdown": [
{
"user_login": "octocat",
"last_pushed_date": "2021-11-03",
"last_pushed_email": "octocat@github.com"
},
{
"user_login": "octokitten",
"last_pushed_date": "2021-10-25",
"last_pushed_email": "octokitten@github.com"
}
]
},
{
"name": "octocat-org/server",
"advanced_security_committers": 1,
"advanced_security_committers_breakdown": [
{
"user_login": "octokitten",
"last_pushed_date": "2021-10-26",
"last_pushed_email": "octokitten@github.com"
}
]
}
]
}Get a list of Visual Studio subscriptions for the enterprise
Retrieves a list of Visual Studio subscriptions for the specified enterprise.
Fine-grained access tokens for "Get a list of Visual Studio subscriptions for the enterprise"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise Licensing" enterprise permissions (read)
Parameters for "Get a list of Visual Studio subscriptions for the enterprise"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
enterprise string RequiredThe slug version of the enterprise name |
| Name, Type, Description |
|---|
is_unmatched_only boolean When true, only returns Visual Studio subscriptions that are not matched to a GitHub user. |
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 "Get a list of Visual Studio subscriptions for the enterprise"
| Status code | Description |
|---|---|
200 | OK |
404 | Resource not found |
Code samples for "Get a list of Visual Studio subscriptions for the 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: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/visual-studio-subscriptionsResponse
Status: 200{
"total_count": 1,
"visual_studio_subscription_assignments": [
{
"email": "test@example.com",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"username": "gh-user",
"manual_match": true
}
]
}Add or update a Visual Studio subscription user match
Updates a manual match between a user and a Visual Studio subscription.
Fine-grained access tokens for "Add or update a Visual Studio subscription user match"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise Licensing" enterprise permissions (write)
Parameters for "Add or update a Visual Studio subscription user match"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
visual_studio_subscription_id string RequiredThe ID of the Visual Studio subscription to add or update the match for. This is a GUID that comes from the Visual Studio management portal. |
enterprise string RequiredThe slug version of the enterprise name |
| Name, Type, Description |
|---|
user_identifier string The handle for the GitHub user account or a verified email associated with their account. |
HTTP response status codes for "Add or update a Visual Studio subscription user match"
| Status code | Description |
|---|---|
200 | OK |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
Code samples for "Add or update a Visual Studio subscription user match"
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 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/visual-studio-subscriptions/VISUAL_STUDIO_SUBSCRIPTION_ID \
-d '{"user_identifier":"monalisa"}'Response
Status: 200{
"visual_studio_subscription_email": "test@example.com",
"subscription_id": "00000000-0000-0000-0000-000000000000",
"username": "gh-user",
"manual_match": true
}Delete a Visual Studio subscription user match
Deletes a manual match between a user and a Visual Studio subscription.
Fine-grained access tokens for "Delete a Visual Studio subscription user match"
This endpoint works with the following fine-grained token types:
The fine-grained token must have the following permission set:
- "Enterprise Licensing" enterprise permissions (write)
Parameters for "Delete a Visual Studio subscription user match"
| Name, Type, Description |
|---|
accept string Setting to |
| Name, Type, Description |
|---|
visual_studio_subscription_id string RequiredThe ID of the Visual Studio subscription to delete the match for. This is a GUID that comes from the visual studio management portal. |
enterprise string RequiredThe slug version of the enterprise name |
HTTP response status codes for "Delete a Visual Studio subscription user match"
| Status code | Description |
|---|---|
200 | OK |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
Code samples for "Delete a Visual Studio subscription user match"
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: 2026-03-10" \
https://api.github.com/enterprises/ENTERPRISE/visual-studio-subscriptions/VISUAL_STUDIO_SUBSCRIPTION_IDResponse
Status: 200{
"visual_studio_subscription_email": "test@example.com",
"subscription_id": "00000000-0000-0000-0000-000000000000",
"username": null,
"manual_match": false
}