GitHub Billing Usage Reports APIが一般提供、課金CSV自動取得の変更点と注意点

GitHub Enterpriseの課金利用レポートを毎月UIから取得し、メールのダウンロードリンク経由でCSVを回収していた管理者にとって、今回の「API access to billing usage reports now generally available」は実務上かなり大きな変更です。結論から言うと、GitHubの課金利用レポートCSVをREST APIで作成・取得できるようになり、月次集計、FinOps、Copilot利用状況の分析、社内配賦用データ作成を自動化しやすくなりました。GitHub Changelogでは2026年6月4日付のReleaseとして、Enterprise管理者向けにbilling usage reportsをCSV形式でリクエスト・ダウンロードできるREST APIが一般提供になったと案内されています。(The GitHub Blog)

ただし、これは「GitHubの料金体系が変わる」アップデートではありません。変わるのは、課金データの取得方法です。従来のUI操作をなくせる一方で、権限、トークン管理、APIバージョン、CSVの保管場所、ポーリング間隔を設計しないまま導入すると、セキュリティリスクや運用トラブルにつながります。

目次

GitHubのbilling usage reports APIで何が変わるのか

今回の変更点は、GitHub Enterpriseで利用できる課金利用レポートを、画面操作ではなくREST APIから作成・取得できるようになったことです。GitHubの公式案内では、UIで利用できる同じbilling reportsをプログラムから作成できるようになったと説明されています。(The GitHub Blog)

従来のUI運用では、管理者がGitHubの「Metered Usage」や「AI usage」画面から利用レポートをリクエストし、準備完了後にメールで届くリンクからCSVをダウンロードする流れでした。GitHub Docsでも、UIから「Get usage report」をクリックし、準備完了後に主メールアドレスへ送られるリンクでレポートを取得する手順が説明されています。(GitHub Docs)

観点従来のUI中心の運用API一般提供後の運用
レポート作成管理者が画面から手動で依頼スクリプトやジョブからPOSTで依頼
取得タイミングメール通知を待って取得APIでステータス確認後に取得
月次処理人手に依存しやすい定期実行しやすい
分析連携CSVを手動でBIや表計算に投入データ基盤・BI・監査用ストレージへ連携しやすい
主な注意点取得漏れ、担当者依存権限、トークン、レート制限、CSV管理

重要なのは、今回のAPIは「Usage reports」のエクスポートを作成・取得するためのAPIであり、既存の「Billing usage」APIと役割が完全に同じではない点です。GitHub Docsでは、Usage reports APIはEnterpriseの使用状況レポートエクスポートを作成・取得するためのREST APIとして説明されています。(GitHub Docs)

影響を受ける主な利用者

今回の恩恵が大きいのは、GitHub Enterpriseの利用料を定期的に集計している管理者、経理・FinOps担当、開発基盤チーム、CopilotやAI利用状況を追跡しているチームです。

特に次のような運用をしている場合は、早めに確認する価値があります。

対象者確認すべきこと理由
Enterprise管理者API実行者の権限とトークン種別課金情報にアクセスできる権限を最小化するため
Billing manager月次レポート取得手順手動取得から自動取得に置き換えられる可能性があるため
開発基盤チーム既存の集計スクリプトやBI連携CSV取得をジョブ化し、集計の抜け漏れを減らせるため
Copilot管理者premium_request、ai_creditレポートの扱いCopilot関連の利用状況やAI credits消費の分析に関係するため
セキュリティ担当CSVの保管場所、アクセス権、保持期間課金・利用状況データには組織やユーザー単位の情報が含まれる可能性があるため

GitHub DocsのUsage reports APIはGitHub Enterprise Cloud向けのREST APIとして掲載されており、認証済みユーザーはEnterprise adminまたはbilling managerである必要があります。エンドポイントでは、GitHub App user access token、GitHub App installation access token、fine-grained personal access tokenが利用でき、必要な権限としてEnterprise administrationのwrite権限が示されています。(GitHub Docs)

利用できるレポート種別

Usage reports APIで作成できるreport_typeは、GitHub Docs上でdetailed、summarized、premium_request、ai_creditの4種類とされています。(GitHub Docs)

report_type想定される使いどころ実務上の判断基準
detailed詳細な課金利用レポートを確認したい場合月次締め、異常値調査、請求額の根拠確認に向く
summarized概要レベルで利用傾向を把握したい場合ダッシュボードや定期報告の初期データに向く
premium_requestPremium requestsの利用状況を確認したい場合Copilot関連の従量利用や利用集中の確認に向く
ai_creditAI creditsの消費状況を確認したい場合CopilotやAI機能の利用拡大に伴うコスト把握に向く

CopilotやAI機能を組織展開している企業では、premium_requestとai_creditの扱いが特に重要です。GitHub Docsでは、AI usageビューを使うことで、AI creditsの総消費量、消費の多いユーザー、支出に影響しているモデル、Copilotの展開状況などを確認できると説明されています。(GitHub Docs)

APIの基本フロー

Usage reports APIの流れは、同期的にCSVを即時取得する方式ではありません。まずレポート作成をリクエストし、処理完了後に取得します。GitHub Docsでも、レポートは非同期に処理され、完了後にダウンロードできると説明されています。(GitHub Docs)

レポート作成をリクエストする

レポート作成には、Enterprise slug、report_type、start_date、必要に応じてend_dateやsend_emailを指定します。end_dateを省略した場合はUTCの今日が既定値になり、send_emailは既定でfalseです。(GitHub Docs)

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/enterprises/<ENTERPRISE>/settings/billing/reports \
  -d '{
    "report_type": "summarized",
    "start_date": "2026-05-01",
    "end_date": "2026-05-31",
    "send_email": false
  }'

成功時は202 Acceptedが返り、レスポンスにはレポートIDやステータスなどが含まれます。処理が完了していない場合に備えて、後続処理ではこのIDを保存しておく設計にします。(GitHub Docs)

ステータスを確認してダウンロードURLを取得する

作成したレポートは、個別取得エンドポイントでステータスと詳細を確認します。report_idはレポートエクスポートのUUIDです。(GitHub Docs)

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/reports/<REPORT_ID>

レスポンスのstatusがcompletedになり、download_urlsが取得できたらCSVをダウンロードします。実装では、processingの間は一定間隔で再確認し、失敗時にはログを残して再実行できるようにしておくと安全です。

既存レポートの一覧を確認する

過去に作成したレポートは、一覧取得エンドポイントで確認できます。GitHub DocsではGET /enterprises/{enterprise}/settings/billing/reportsがUsage report exportsの一覧取得として説明されています。(GitHub Docs)

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/reports

月次ジョブでは、レポート作成前に同じ期間・同じreport_typeのエクスポートが既に存在しないか確認すると、重複生成や集計ミスを減らせます。

管理者が確認すべき設定と準備

権限は「便利な管理者アカウント」ではなく最小権限で考える

課金レポートAPIは、Enterprise全体の利用状況に関係します。個人の強権限アカウントでPATを作り、スクリプトに埋め込む運用は避けるべきです。

GitHubはAPI認証情報について、用途に合った認証方式を選ぶこと、必要最小限の権限にすること、有効期限を設定すること、認証情報を安全に保管することを推奨しています。(GitHub Docs)

実務では、次の方針が現実的です。

項目推奨する考え方
実行主体個人に依存しないGitHub Appや専用運用アカウントを検討する
権限Usage reports APIに必要なEnterprise administration write権限に絞る
トークン保管CI/CDのSecrets、クラウドのSecret Manager、社内の認証情報管理基盤を使う
ローテーション期限付きトークンにし、更新手順を運用ドキュメント化する
監査誰が、いつ、どの期間のレポートを作成したかをログに残す

APIバージョンを明示する

GitHub REST APIはバージョン管理されています。GitHub Docsでは、X-GitHub-Api-VersionヘッダーでAPIバージョンを指定すること、未指定の場合は既定のAPIバージョンが使われることが説明されています。(GitHub Docs)

Usage reports APIのドキュメントでは、API Versionとして2026-03-10がlatestと表示されています。コード例でもX-GitHub-Api-Version: 2026-03-10が使われています。(GitHub Docs)

APIバージョンを明示しない実装は、将来のバージョン切り替え時に挙動差分を見落としやすくなります。月次バッチやBI連携のように長く動かす処理では、バージョンヘッダーを固定し、アップグレード時にテストする運用にしましょう。

GHE.com環境ではAPIホスト名を確認する

GitHub Docsのコード例では、GHE.comを利用している場合はapi.github.comをEnterprise専用サブドメインのapi.SUBDOMAIN.ghe.comに置き換えるよう案内されています。(GitHub Docs)

社内でGitHub Enterprise Cloudの専用ドメインを使っている場合、サンプルコードをそのままコピーすると接続先を間違える可能性があります。APIクライアントの設定値として、次の3つは環境変数化しておくと展開しやすくなります。

GITHUB_API_BASE_URL="https://api.github.com"
GITHUB_ENTERPRISE_SLUG="your-enterprise"
GITHUB_API_VERSION="2026-03-10"

日付範囲は明示し、UTC前提で扱う

end_dateを省略するとUTCの今日が既定値になります。日本時間の月次処理で「月末の深夜に実行したのに、期待した期間とずれた」という事故を防ぐには、start_dateとend_dateを必ず明示するのが安全です。(GitHub Docs)

また、GitHub Docsでは、Usage画面のグラフは「請求期間」ではなく月初から月末を表すよう構成されていると説明されています。請求書上の期間、社内締め日、GitHubの画面上の月次表示を混同しないよう、集計基準日を先に決めておく必要があります。(GitHub Docs)

既存運用から移行する手順

いきなり本番の月次処理を置き換えるより、まずはUIで取得したCSVとAPIで取得したCSVを同じ期間で比較し、差分を確認するのが安全です。

手順やること失敗しやすいポイント
現状確認誰が、いつ、どの画面から、どのレポートを取得しているか棚卸しする「担当者しか知らない手順」が残る
権限設計Enterprise adminまたはbilling managerのどちらで運用するか決める個人PATに依存する
試験取得1か月分のsummarizedなど小さめのレポートで試すenterprise slugやAPIホスト名を間違える
UI比較同じ期間のUI CSVとAPI取得CSVを比較する日付範囲やタイムゾーンの違いを見落とす
ETL設計CSVを保存し、必要な列をデータ基盤やBIに取り込むCSVスキーマ変化に弱い実装にする
定期実行月次または週次のジョブにする再実行時に重複取り込みする
監視401、403、404、429、5xxを検知する失敗しても担当者が気づかない

既に/usage系のBilling usage APIを使っている場合は、すぐに置き換えるのではなく、役割を分けるのが現実的です。GitHub Docsでは、Billing usage APIは請求対象アカウントに関連する利用情報を返すAPIとして説明されており、Usage reports APIとは別ページで提供されています。(GitHub Docs)

たとえば、日次の軽量な利用傾向は既存API、月次の正式なCSVアーカイブや監査用データはUsage reports API、という分け方ができます。

開発者が注意すべき実装上の落とし穴

ポーリングを短くしすぎない

Usage reports APIは非同期処理です。完了待ちのために短い間隔で大量にGETを繰り返すと、レート制限や二次レート制限に近づきます。

GitHub Docsでは、REST APIのベストプラクティスとして、不要なポーリングを避けること、並列リクエストを避けること、レート制限時はretry-afterやx-ratelimit-resetに従うことが説明されています。(GitHub Docs)

月次レポートであれば、数秒単位の高速ポーリングは通常不要です。たとえば、初回は30秒後、その後は60秒ごとに確認し、一定回数でタイムアウトする設計にしておくと、APIにも運用にも優しい実装になります。

ダウンロードURLを長期保存しない

ダウンロードURLは、CSVを取得するための一時的な情報として扱うべきです。取得したCSVそのものを、アクセス制御されたストレージに保存し、ダウンロードURLはログに残さない運用が安全です。

特に避けたいのは、次のような実装です。

NG例理由
ダウンロードURLをアプリケーションログに出力するURLを知った人がCSVへアクセスできる可能性がある
CSVを開発者全員が見られる共有フォルダへ置く課金・ユーザー利用状況の閲覧範囲が広がる
レポートCSVを無期限に保存する不要な情報保持が増え、監査時の説明が難しくなる
CSV列の順番だけに依存してパースする将来の列追加・変更に弱い

CSVは「請求データ」ではなく「業務上の機微情報」として扱うのが安全です。最低限、保存先、閲覧権限、保持期間、削除ルールを決めてから自動化しましょう。

エラーごとの原因を切り分ける

Usage reports APIでは、一覧取得、作成、個別取得の各エンドポイントで、認証エラー、権限不足、リソース未検出、サーバー側エラーなどのステータスが定義されています。たとえばレポート作成では、202のほか、400、401、403、404、500、503が示されています。(GitHub Docs)

実装では、すべての失敗を「APIエラー」とまとめず、原因別にメッセージを分けると復旧が早くなります。

ステータスよくある原因対応
400日付形式、report_type、パラメータ不備リクエスト内容をログに残し、バリデーションを追加する
401トークン不正、有効期限切れトークン更新、Secrets設定を確認する
403権限不足、Enterprise権限不備Enterprise adminまたはbilling manager権限を確認する
404Enterprise slugやreport_idの誤り環境変数とID保存処理を確認する
429または403レート制限の可能性retry-afterやx-ratelimit-resetに従って待機する
500、503GitHub側または一時的な障害リトライ回数を制限し、アラートを出す

CopilotやAI利用のコスト管理にどう活用するか

今回のAPIは、GitHub ActionsやPackagesなどの従量課金だけでなく、CopilotやAI関連の利用把握にも関係します。premium_requestやai_creditのレポート種別が用意されているため、AI機能の利用が増えている企業では、単なる請求確認ではなく「どの機能がコストに効いているのか」を継続的に見る仕組みに発展させられます。(GitHub Docs)

実務では、次のような使い方が考えられます。

活用シーン具体例
月次コストレビュー前月の利用レポートを自動取得し、経理・開発基盤・各部門に共有する
Copilot展開後の利用確認AI creditsやPremium requestsの増減を追い、想定外の増加を早期に把握する
異常値検知前月比で急増したSKUや利用区分を抽出し、原因調査につなげる
社内配賦Organization、リポジトリ、部門マスタなど社内データと突合する
監査対応取得済みCSVと取得日時、実行者、対象期間を保存して説明可能にする

特にCopilotやAI機能は、導入初期よりも展開後に利用量が増えやすい領域です。ライセンス数だけでなく、AI creditsやPremium requestsの利用傾向を定期的に見ておくと、予算超過の兆候を早めに発見できます。

導入前のチェックリスト

本番運用に入る前に、最低限次の項目を確認しておきましょう。

チェック項目確認内容
対象Enterpriseenterprise slugが正しいか
実行権限Enterprise adminまたはbilling managerで実行できるか
トークン必要な権限だけを付与し、有効期限と保管場所を決めたか
APIバージョンX-GitHub-Api-Versionを明示しているか
日付範囲start_dateとend_dateを明示しているか
レポート種別detailed、summarized、premium_request、ai_creditのどれを使うか決めたか
リトライprocessing、レート制限、5xxへの対応を実装したか
CSV保管保存先、閲覧権限、保持期間、削除ルールを決めたか
比較検証UIで取得したCSVとAPI取得結果を同一期間で比較したか
運用移管手順書、アラート、担当者、再実行手順を整備したか

まず何をすべきか

GitHubのbilling usage reports APIが一般提供になったことで、GitHub Enterpriseの課金レポート取得は「担当者がUIで操作する作業」から「定期実行できる管理プロセス」へ移行しやすくなりました。特に、月次締め、Copilot利用分析、AI credits管理、社内配賦、監査対応を行っている組織では、手動取得を残したままにするより、自動取得の設計を始める価値があります。

最初の一歩は、いきなり本番バッチを作ることではありません。まず、直近1か月分のsummarizedレポートをAPIで取得し、同じ条件でUIから取得したCSVと比較してください。そのうえで、権限、トークン保管、APIバージョン、日付範囲、CSVの保存先を決めてから、月次ジョブへ展開するのが安全です。

今回のアップデートは、派手なUI変更ではありません。しかし、GitHub Enterpriseを大規模に使う組織にとっては、課金管理を属人化から仕組み化へ進めるための重要な変更です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次