Skip to main content
The REST API is now versioned. For more information, see "About API versioning."

Cost centers

Use the REST API to get cost center information.

Get all cost centers for an enterprise

Gets a list of all the cost centers for an enterprise.

Fine-grained access tokens for "Get all cost centers 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 "Get all cost centers for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

Query parameters
Name, Type, Description
state string

Set to active or deleted to only list cost centers in a specific state.

Can be one of: active, deleted

HTTP response status codes for "Get all cost centers for an enterprise"

Status codeDescription
200

Response when getting cost centers

400

Bad Request

403

Forbidden

500

Internal Error

503

Service unavailable

Code samples for "Get all cost centers 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

get/enterprises/{enterprise}/settings/billing/cost-centers
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/settings/billing/cost-centers

Response when getting cost centers

Status: 200
{ "costCenters": [ { "id": "2eeb8ffe-6903-11ee-8c99-0242ac120002", "name": "Cost Center Name", "state": "active", "azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "resources": [ { "type": "User", "name": "Monalisa" }, { "type": "Repo", "name": "octocat/hello-world" } ] }, { "id": "3ffb9ffe-6903-11ee-8c99-0242ac120003", "name": "Another Cost Center", "state": "active", "resources": [ { "type": "User", "name": "Octocat" } ] } ] }

Create a new cost center

Creates a new cost center for an enterprise. The authenticated user must be an enterprise admin.

Fine-grained access tokens for "Create a new cost center"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Create a new cost center"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

Body parameters
Name, Type, Description
name string Required

The name of the cost center (max length 255 characters)

HTTP response status codes for "Create a new cost center"

Status codeDescription
200

Cost center created successfully

400

Bad request

409

Conflict

500

Internal server error

Code samples for "Create a new cost center"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

post/enterprises/{enterprise}/settings/billing/cost-centers
curl -L \ -X POST \ -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/settings/billing/cost-centers \ -d '{"name":"Engineering Team"}'

Example response for a created cost center

Status: 200
{ "id": "abc123", "name": "Engineering Team", "resources": [] }

Get a cost center by ID

Gets a cost center by ID. The authenticated user must be an enterprise admin.

Fine-grained access tokens for "Get a cost center by ID"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Get a cost center by ID"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

cost_center_id string Required

The ID corresponding to the cost center.

HTTP response status codes for "Get a cost center by ID"

Status codeDescription
200

Response when getting a cost center

400

Bad Request

403

Forbidden

500

Internal Error

503

Service unavailable

Code samples for "Get a cost center by ID"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

get/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}
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/settings/billing/cost-centers/COST_CENTER_ID

Response when getting a cost center

Status: 200
{ "id": "2eeb8ffe-6903-11ee-8c99-0242ac120002", "name": "Cost Center Name", "state": "active", "azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "resources": [ { "type": "User", "name": "Monalisa" }, { "type": "Repo", "name": "octocat/hello-world" } ] }

Update a cost center name

Updates an existing cost center name.

Fine-grained access tokens for "Update a cost center name"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Update a cost center name"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name

cost_center_id string Required

The unique identifier of the cost center

Body parameters
Name, Type, Description
name string Required

The new name for the cost center

HTTP response status codes for "Update a cost center name"

Status codeDescription
200

Response when updating a cost center

400

Bad Request

403

Forbidden

404

Resource not found

409

Conflict

500

Internal Error

503

Service unavailable

Code samples for "Update a cost center name"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

patch/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}
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/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID \ -d '{"name":"New Cost Center Name"}'

Response when updating a cost center

Status: 200
{ "id": "2eeb8ffe-6903-11ee-8c99-0242ac120002", "name": "Cost Center Name", "state": "active", "azure_subscription": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "resources": [ { "type": "User", "name": "Monalisa" }, { "type": "Repo", "name": "octocat/hello-world" } ] }

Delete a cost center

Archieves a cost center by ID. The authenticated user must be an enterprise admin.

Fine-grained access tokens for "Delete a cost center"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Delete a cost center"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

cost_center_id string Required

The ID corresponding to the cost center.

HTTP response status codes for "Delete a cost center"

Status codeDescription
200

Response when deleting a cost center

400

Bad Request

403

Forbidden

404

Resource not found

500

Internal Error

503

Service unavailable

Code samples for "Delete a cost center"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

delete/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}
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/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID

Response when deleting a cost center

Status: 200
{ "message": "Cost center successfully deleted.", "id": "2066deda-923f-43f9-88d2-62395a28c0cdd", "name": "cc3", "costCenterState": "CostCenterArchived" }

Add resources to a cost center

Adds resources to a cost center.

The usage for the resources will be charged to the cost center's budget. The authenticated user must be an enterprise admin in order to use this endpoint.

Fine-grained access tokens for "Add resources to a cost center"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Add resources to a cost center"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

cost_center_id string Required

The ID corresponding to the cost center.

Body parameters
Name, Type, Description
users array of strings

The usernames of the users to add to the cost center.

organizations array of strings

The organizations to add to the cost center.

repositories array of strings

The repositories to add to the cost center.

HTTP response status codes for "Add resources to a cost center"

Status codeDescription
200

Response when adding resources to a cost center

400

Bad Request

403

Forbidden

409

Conflict

500

Internal Error

503

Service unavailable

Code samples for "Add resources to a cost center"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

post/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}/resource
curl -L \ -X POST \ -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/settings/billing/cost-centers/COST_CENTER_ID/resource \ -d '{"users":["monalisa"]}'

Response when adding resources to a cost center

Status: 200
{ "message": "Resources successfully added to the cost center.", "reassigned_resources": [ { "resource_type": "user", "name": "monalisa", "previous_cost_center": "old-cost-center" }, { "resource_type": "organization", "name": "octo-org", "previous_cost_center": "another-cost-center" }, { "resource_type": "repository", "name": "octo-repo", "previous_cost_center": "yet-another-cost-center" } ] }

Remove resources from a cost center

Remove resources from a cost center.

The usage for the resources will no longer be charged to the cost center's budget. The authenticated user must be an enterprise admin in order to use this endpoint.

Fine-grained access tokens for "Remove resources from a cost center"

This endpoint does not work with GitHub App user access tokens, GitHub App installation access tokens, or fine-grained personal access tokens.

Parameters for "Remove resources from a cost center"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name.

cost_center_id string Required

The ID corresponding to the cost center.

Body parameters
Name, Type, Description
users array of strings

The usernames of the users to remove from the cost center.

organizations array of strings

The organizations to remove from the cost center.

repositories array of strings

The repositories to remove from the cost center.

HTTP response status codes for "Remove resources from a cost center"

Status codeDescription
200

Response when removing resources from a cost center

400

Bad Request

403

Forbidden

500

Internal Error

503

Service unavailable

Code samples for "Remove resources from a cost center"

If you access GitHub at GHE.com, replace api.github.com with your enterprise's dedicated subdomain at api.SUBDOMAIN.ghe.com.

Request example

delete/enterprises/{enterprise}/settings/billing/cost-centers/{cost_center_id}/resource
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/enterprises/ENTERPRISE/settings/billing/cost-centers/COST_CENTER_ID/resource \ -d '{"users":["monalisa"]}'

Response when removing resources from a cost center

Status: 200
{ "message": "Resources successfully removed from the cost center." }