チームで Claude Code を使っているが、どれだけ使われていて、どれだけ効いているのかを数字で説明できない。コンソールの画面では足りないが、OpenTelemetry の収集基盤を立てるほどでもない。その中間を埋めるのが Claude Code Analytics Admin API です。この記事では公式ドキュメントの内容を日本語で整理します。
概要
Claude Code Analytics Admin API は、組織の Claude Code 利用者について日次で集計した利用指標をプログラムから取得するための API です。エンドポイントは /v1/organizations/usage_report/claude_code の1本です。
公式ドキュメントは、この API の位置づけを「Analytics ダッシュボードより詳しく、OpenTelemetry 連携より簡単」と説明しています。ここが選び方の軸になります。画面で足りないが、メトリクス収集基盤を立てるほどではない、という中間の需要に当たる API です。
公式が挙げている用途は次の5つです。
- 開発者の生産性分析 … セッション数、追加・削除された行数、Claude Code 経由のコミット数、作成されたプルリクエスト数を追う
- ツール利用の指標 … Edit / MultiEdit / Write / NotebookEdit の各ツールについて、提案が受け入れられた数と拒否された数を見る
- 費用の分析 … 推定費用とトークン使用量を Claude のモデル別に見る
- 独自レポート … データを書き出して経営層向けのダッシュボードやレポートを作る
- 利用の正当化 … 社内で Claude Code の導入を正当化し、広げるための数字を出す
使えるアカウントと必要な鍵
ここが最初の関門です。順に確認してください。
1つ目。Admin API は個人アカウントでは使えません。 組織を作る必要があり、公式は Console の Settings → Organization で設定するよう案内しています。
2つ目。ワークスペースに紐づいた API キーでは呼べません。 使えるのは次の3種類です。
- Admin API キー
org:adminスコープを持つ OAuth トークン- ワークスペースにスコープされていない個人キーまたはサービスアカウントキー
3つ目。組織の種別によって、そもそも別の API を使います。 Claude Enterprise 組織の claude.ai 利用者による Claude Code の活動は、この API ではなく Claude Enterprise Analytics API が報告します。そちらは Admin API キーではなく Analytics API キーを使います。自分の組織がどちらなのかを先に確かめてください。
4つ目。AWS 上の Claude Platform では、この API は現在利用できません。 その場合は Claude Console の Usage ページで Claude Code の利用状況を確認します。
対象になるデプロイ形態
この API が追うのは Claude API 経由の Claude Code の利用だけです。公式は次の経路が含まれないことを明記しています。
- Claude in Amazon Bedrock
- Claude in Microsoft Foundry
- Claude on Google Cloud(Vertex AI)
- Claude Platform on AWS
つまり、社内で Bedrock 経由の Claude Code を併用している組織では、この API の数字は全体の一部にしかなりません。数字を経営報告に使う前に、自組織のデプロイ形態を棚卸ししておく必要があります。ここを確認せずに「導入が進んでいない」と読むと誤診になります。
基本概念
公式が挙げている押さえどころは6点です。
- 日次集計 …
starting_atで指定した1日ぶんだけの指標を返します。期間指定ではありません - 利用者単位のデータ … 1レコードが「ある1人の、その日の活動」に対応します
- 生産性の指標 … セッション数、コード行数、コミット、プルリクエスト、ツール利用
- トークンと費用 … Claude のモデル別に使用量と推定費用を見られます
- カーソル方式のページネーション … 不透明なカーソルで、大きなデータでも安定してページ送りできます
- データの鮮度 … 整合性のため最大1時間の遅れがあります
リクエストパラメータは3つだけ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
starting_at | string | 必須 | UTC の日付(YYYY-MM-DD 形式)。この1日ぶんの指標だけを返す |
limit | integer | 任意 | 1ページあたりのレコード数(既定 20・最大 1000) |
page | string | 任意 | 前回のレスポンスの next_page から得た不透明なカーソル |
日付は UTC です。 starting_at はその日の UTC 0時を指します。日本時間で「9月12日ぶん」を見たいときは、JST が UTC+9 であるため、UTC の 9月11日15時から9月12日15時までが該当します。この API は期間指定を受け付けないので、JST の1日をきれいに切り出すことはできません。 実務上は「UTC の1日」を単位として割り切るか、連続する2日を取得して自分で足し合わせるかのどちらかになります。時差を意識せずに日次レポートを作ると、毎日9時間ぶんずれた集計を出し続けることになります。
取得できる指標
1レコードは、次の4つの区分を持ちます。
ディメンション(誰の・どこでの活動か)
date… RFC 3339 形式の日付(UTC のタイムスタンプ)actor… 操作を行った利用者または API キー。user_actor(email_addressを持つ)かapi_actor(api_key_nameを持つ)のいずれかorganization_id… 組織の UUIDcustomer_type…api(API 利用者)またはsubscription(Pro / Team 利用者)terminal_type… Claude Code を使った端末・環境の種別(例:vscode、iTerm.app、tmux)
コア指標(core_metrics)
num_sessions… この actor が開始した Claude Code セッションの数(重複なし)lines_of_code.added/lines_of_code.removed… Claude Code が全ファイルで追加・削除した行数の合計commits_by_claude_code… Claude Code のコミット機能で作られた git コミットの数pull_requests_by_claude_code… Claude Code の PR 機能で作られたプルリクエストの数
ツール操作の指標(tool_actions)
edit_tool / multi_edit_tool / write_tool / notebook_edit_tool の4つについて、それぞれ accepted と rejected を返します。利用者が提案を受け入れた数と拒否した数です。
モデル別の内訳(model_breakdown)
model… モデル識別子(例:claude-opus-5)tokens.input/tokens.output… 入力・出力のトークン数tokens.cache_read/tokens.cache_creation… キャッシュ読み出し・キャッシュ作成のトークン数estimated_cost.amount… 推定費用。単位は米セントですestimated_cost.currency… 通貨コード(現在は常にUSD)
費用の単位に注意してください。 amount はドルではなくセントです。公式の応答例では 141 という値が入っており、これは 1.41 米ドルにあたります。ここをドルとして読むと、100倍の費用を報告することになります。
使い方
1日ぶんを取得する
まず最小の呼び出しです。ANTHROPIC_ADMIN_KEY に Admin API キーを入れておきます。
curl "https://api.anthropic.com/v1/organizations/usage_report/claude_code?\
starting_at=2025-09-08&\
limit=20" \
-H "anthropic-version: 2023-06-01" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY"
limit を省略すると既定の 20 件になります。
curl "https://api.anthropic.com/v1/organizations/usage_report/claude_code?\
starting_at=2025-09-08" \
-H "anthropic-version: 2023-06-01" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY"
連携ツールを作る場合は、公式が User-Agent ヘッダの設定を推奨しています。Anthropic 側が利用パターンを把握するためです。
User-Agent: YourApp/1.0.0 (https://yourapp.com)
ページを送る
レスポンスの has_more が true のとき、next_page の値を次のリクエストの page に渡します。
curl "https://api.anthropic.com/v1/organizations/usage_report/claude_code?\
starting_at=2025-09-08&\
page=page_MjAyNS0wNS0xNFQwMDowMDowMFo=" \
-H "anthropic-version: 2023-06-01" \
-H "x-api-key: $ANTHROPIC_ADMIN_KEY"
手順は3段です。
- 最初のリクエストを送る(
limitは任意) - レスポンスの
has_moreがtrueなら、next_pageの値を次のリクエストで使う has_moreがfalseになるまで繰り返す
カーソルは最後のレコードの位置を符号化したもので、新しいデータが届いてもページ送りが安定する設計になっています。公式の表現では、ページネーションのセッションごとに一貫したデータ境界が保たれ、レコードの取りこぼしや重複が起きないようにしてあります。カーソルの中身を自分で組み立てないでください。 不透明な値として扱い、レスポンスから受け取ったものをそのまま返すのが正しい使い方です。
レスポンスの形
{
"data": [
{
"date": "2025-09-08T00:00:00Z",
"actor": {
"type": "user_actor",
"email_address": "developer@company.com"
},
"organization_id": "dc9f6c26-b22c-4831-8d01-0446bada88f1",
"customer_type": "api",
"terminal_type": "vscode",
"core_metrics": {
"num_sessions": 5,
"lines_of_code": { "added": 1543, "removed": 892 },
"commits_by_claude_code": 12,
"pull_requests_by_claude_code": 2
},
"tool_actions": {
"edit_tool": { "accepted": 45, "rejected": 5 },
"multi_edit_tool": { "accepted": 12, "rejected": 2 },
"write_tool": { "accepted": 8, "rejected": 1 },
"notebook_edit_tool": { "accepted": 3, "rejected": 0 }
},
"model_breakdown": [
{
"model": "claude-opus-5",
"tokens": {
"input": 100000,
"output": 35000,
"cache_read": 10000,
"cache_creation": 5000
},
"estimated_cost": { "currency": "USD", "amount": 141 }
}
]
}
],
"has_more": false,
"next_page": null
}
ツールの受け入れ率を計算する
公式が示している式はこれだけです。
受け入れ率 = accepted / (accepted + rejected)
ツールの種別ごとに計算します。上の応答例の edit_tool は accepted が 45、rejected が 5 なので、受け入れ率は 90% です。
この数字の読み方には注意が必要です。 受け入れ率が高いことは「提案の質が高い」とも「利用者が内容を確認せずに通している」とも読めます。逆に低い場合は「提案が的外れ」とも「利用者が慎重にレビューしている」とも読めます。1つの数字から品質を結論しないでください。 コード行数やコミット数と併せて、変化の方向を追うほうが実用的です。
鮮度と制限を押さえる
公式の FAQ が明示している点を整理します。
- データの鮮度 … 利用者の活動が終わってからおおむね1時間以内に現れます。ページネーションの結果を一貫させるため、1時間より古いデータだけが応答に含まれます
- リアルタイム取得はできません … この API は日次集計のみです。リアルタイム監視が必要なら OpenTelemetry 連携を使います
- データの保持期間 … 過去のデータは保持され API から参照できます。削除される期間は定められていません
- 費用 … この API 自体は、Admin API を使える組織すべてで無料です
「1時間より古いデータだけが含まれる」という仕様は、当日ぶんを取得しても直近の活動が入っていないことを意味します。日次バッチを組むなら、当日を取りにいくのではなく前日ぶんを取得するのが安全です。
OpenTelemetry 連携との使い分け
| やりたいこと | 向いている手段 |
|---|---|
| 日次の集計値を取り出して社内ダッシュボードに載せる | この Analytics API |
| リアルタイムの監視やアラート | OpenTelemetry 連携 |
| 画面で概況を見るだけ | Claude Console の Analytics ダッシュボード |
| Claude Code 以外も含む API 全体の利用量と費用 | Usage and Cost API |
まとめ
要点を5つに絞ります。
- エンドポイントは
/v1/organizations/usage_report/claude_codeの1本で、パラメータはstarting_at(必須)・limit・pageの3つだけです - 1リクエストで返るのは1日ぶんで、日付は UTC です。JST の1日を切り出す機能はありません
- 鍵は Admin API キー(またはワークスペースにスコープされていないキー、
org:adminの OAuth トークン)で、ワークスペースキーでは呼べません。個人アカウントでは使えません estimated_cost.amountは米セントです。ドルとして読むと100倍になります- 対象は Claude API 経由の利用だけです。Bedrock / Microsoft Foundry / Google Cloud / Claude Platform on AWS 経由の利用は含まれません
導入状況を数字で説明したい場面で、OpenTelemetry の基盤を用意せずに始められるのがこの API の利点です。一方で、UTC 基準・1日単位・セント表記・対象デプロイの限定という4点は、そのまま集計に持ち込むと誤った数字になります。最初にこの4点を自分の環境に当てて確認してから、レポートの形を決めてください。
本記事は Anthropic 公式ドキュメント「Claude Code Analytics API」に基づく非公式の日本語解説です(確認日 2026-09-12)。仕様は更新される場合があるため、実装前に公式ドキュメントとAPI リファレンスをご確認ください。