Skip to main content

Automatización de informes de uso con la API de REST

Descubre cómo automatizar los informes sobre el uso de características de pago mediante la API de REST.

¿Quién puede utilizar esta característica?

Enterprise owners, organization owners, and billing managers

La nueva plataforma de facturación se ha implementado completamente para todos los usuarios.

You can automatically pull data from GitHub to populate the business systems you use to monitor costs and usage using the REST API. If you haven't used the GitHub REST API before, see Using the REST API.

Overview of endpoints

You need to use different endpoints to gather data depending on your account type and the information level you want.

AccountReportAccessEndpointMore information
UsersUsage data for all paid productsAccount holder/users/{username}/settings/billing/usageEnhanced billing platform
OrganizationsPremium request consumption, with details of quota and billed usageOrganization owners and billing managers/organizations/{org}/settings/billing/premium_request/usageEnhanced billing platform
OrganizationsUsage data for all paid productsOrganization owners and billing managers/organizations/{org}/settings/billing/usageEnhanced billing platform
EnterprisesPremium request consumption, with details of quota and billed usageEnterprise owners and billing managers/enterprises/{enterprise}/settings/billing/premium_request/usageREST API endpoints for enterprise billing
EnterprisesUsage data for all paid productsEnterprise owners and billing managers/enterprises/{enterprise}/settings/billing/usageREST API endpoints for enterprise billing

Getting premium request consumption

  1. Authenticate with GitHub with one of the following methods:

  2. Call the required premium_request/usage endpoint, specifying the enterprise, organization, or user that you want data for.

To download other metrics for GitHub Copilot, see Analyzing usage over time with the GitHub Copilot metrics API.

Getting usage data for all paid products

  1. Authenticate with GitHub with one of the following methods:

  2. Call the required usage endpoint, specifying the enterprise, organization, or user that you want data for.

  3. By default, data for all products for the current year is reported. For enterprises, only data that is not associated with a cost center is reported.

    You can request more specific data using query parameters.

    • Specify time period by setting one or more of the following parameters: year, month, day, and hour.
    • Specify a cost center to report on by identifier using the cost_center_id query parameter (enterprise endpoint only).

For more detailed information and an example calls and responses, see:

Migrating from the endpoints used for the previous billing platform

After you transition to metered billing, the endpoints you used to get data from the previous billing platform will no longer return accurate usage information.

  • Upgrade all calls of the form: /ACCOUNT-TYPE/NAME/settings/billing/PRODUCT
  • To use the equivalent: /ACCOUNT-TYPE/NAME/settings/billing/usage endpoint

Changes in authentication

If you used a fine-grained personal access token to authenticate with the previous endpoints, you will need create a personal access token (classic) to authenticate with the new endpoint.

In addition, you may want to use the new query parameters to specify a time period or cost center.

Calculating GitHub Actions information from the new response data

Example of the previous response

{"total_minutes_used": 305, "total_paid_minutes_used": 0, "included_minutes": 3000, "minutes_used_breakdown": { "UBUNTU": 205, "MACOS": 10, "WINDOWS": 90 }  }

Example of the new response

{ "usageItems": [ { "date": "2023-08-01", "product": "Actions", "sku": "Actions Linux", "quantity": 100, "unitType": "minutes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example"} ] }

To get the same values from the new response data:

Previous propertyCalculate from new API response
total_minutes_used
  • Filter results by "product": "Actions" and "unitType": "minutes"
  • Sum quantity
total_paid_minutes_usedThis is now represented as a $ amount via netAmount.
  • Filter results by "product": "Actions" and "unitType": "minutes"
  • Sum netAmount
included_minutesThis is now represented as a $ amount via discountAmount.
  • Filter results by "product": "Actions" and "unitType": "minutes"
  • Sum discountAmount
minutes_used_breakdown
  • Filter results by "product": "Actions" and "unitType": "minutes"
  • Sum quantity grouped by sku

Calculating GitHub Packages information from the new response data

Example of the previous response

{ "total_gigabytes_bandwidth_used": 50, "total_paid_gigabytes_bandwidth_used": 40, "included_gigabytes_bandwidth": 10 }

Example of the new response

{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages data transfer", "quantity": 100, "unitType": "gigabytes", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
Previous propertyCalculate from new API response
total_gigabytes_bandwidth_used
  • Filter results by "product": "Packages" and "unitType": "gigabytes"
  • Sum quantity
total_paid_gigabytes_bandwidth_usedThis is now represented as a $ amount via netAmount.
  • Filter results by "product": "Packages" and "unitType": "gigabytes"
  • Sum netAmount
included_gigabytes_bandwidthThis is now represented as a $ amount via discountAmount.
  • Filter results by "product": "Packages" and "unitType": "gigabytes"
  • Sum discountAmount

Calculating shared storage information from the new response data

Example of the previous response

{ "days_left_in_billing_cycle": 20, "estimated_paid_storage_for_month": 15, "estimated_storage_for_month": 40 }

Example of the new response

{ "usageItems": [ { "date": "2023-08-01", "product": "Packages", "sku": "Packages storage", "quantity": 100, "unitType": "GigabyteHours", "pricePerUnit": 0.008, "grossAmount": 0.8, "discountAmount": 0, "netAmount": 0.8, "organizationName": "GitHub", "repositoryName": "github/example" } ] }
Previous propertyCalculate from new API response
days_left_in_billing_cycleNot available. This information can be inferred by subtracting the current day of the month from the number of days in the current month.
estimated_paid_storage_for_monthThis is now represented as a $ amount via netAmount.

Prerequisite: pass the month and year query parameters.

For Actions storage
  • Filter results by "product": "Actions" and "unitType": "GigabyteHours"
  • Sum netAmount
For Packages storage
  • Filter results by "product": "Packages" and "unitType": "GigabyteHours"
  • Sum netAmount
estimated_storage_for_monthPrerequisite: pass the month and year query parameters.

For Actions storage
  • Filter results by "product": "Actions" and "unitType": "GigabyteHours"
  • Sum quantity
For Packages storage
  • Filter results by "product": "Packages" and "unitType": "GigabyteHours"
  • Sum quantity