Anthropic Console の Usage タブは便利ですが、 プログラムから取得したい ケースもあります。月次レポートを Slack に流したい、自社ダッシュボードに統合したい、 Excel/CSV にエクスポートしたい、 などです。

Anthropic は Admin API を介して、組織全体の API 使用量を取得する手段を提供しています。 この記事では Admin Key の発行から、 使用量取得 API の叩き方、レスポンスの構造まで、 curl と Python の実例つきで解説します。

準備: Admin Key を発行する

まず、組織オーナー権限で Anthropic Console にログインし、次のページを開きます。

https://console.anthropic.com/settings/admin-keys

「Create Admin Key」をクリックし、 名前(例: tokscope-readonly)を入れて作成。 表示されたキー(sk-ant-admin01-... で始まる)を 必ずすぐコピー。再表示はできません。

通常の API Key と何が違う?

  • 通常の API Key(sk-ant-api03-...): メッセージ送信用。組織管理 API は叩けない
  • Admin Key(sk-ant-admin01-...): 組織情報・メンバー・使用量・コストの読み書き用。メッセージ送信はできない

役割が分離されているので、Admin Key が漏洩しても「Claude 推論で金を溶かされる」事故にはならない設計です。 ただし使用量データは見えてしまうので、扱いには十分な注意が必要。

使用量取得 API を叩く

エンドポイント:

GET /v1/organizations/usage_report/messages

必須パラメータ

  • starting_at: ISO 8601 形式の開始時刻(例: 2026-05-01T00:00:00Z)
  • ending_at: ISO 8601 形式の終了時刻

よく使うオプション

  • bucket_width: 集計幅。 1d(日次)or 1h(時間次)
  • group_by[]: 結果をどう束ねるか。 modelservice_tiercontext_window など。複数指定可

curl 例

curl 'https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-05-01T00:00:00Z&\
ending_at=2026-05-14T00:00:00Z&\
bucket_width=1d&\
group_by[]=model' \
  -H 'x-api-key: sk-ant-admin01-xxxxx' \
  -H 'anthropic-version: 2023-06-01'

Python 例

import os
import requests

ADMIN_KEY = os.environ["ANTHROPIC_ADMIN_KEY"]

res = requests.get(
    "https://api.anthropic.com/v1/organizations/usage_report/messages",
    params={
        "starting_at": "2026-05-01T00:00:00Z",
        "ending_at": "2026-05-14T00:00:00Z",
        "bucket_width": "1d",
        "group_by[]": "model",
    },
    headers={
        "x-api-key": ADMIN_KEY,
        "anthropic-version": "2023-06-01",
    },
)
res.raise_for_status()
data = res.json()

for bucket in data["data"]:
    date = bucket["starting_at"][:10]
    for row in bucket["results"]:
        model = row.get("model")
        in_tokens = (
            (row.get("uncached_input_tokens") or 0)
            + (row.get("cache_creation_input_tokens") or 0)
            + (row.get("cache_read_input_tokens") or 0)
        )
        out_tokens = row.get("output_tokens") or 0
        print(f"{date} {model:30} in={in_tokens:>10} out={out_tokens:>10}")

レスポンスの構造

Admin API はバケット(時間範囲)の配列を返します。各バケットには、 group_by で指定したキーで束ねられた results 配列が入ります。

{
  "data": [
    {
      "starting_at": "2026-05-13T00:00:00Z",
      "ending_at":   "2026-05-14T00:00:00Z",
      "results": [
        {
          "type": "messages",
          "model": "claude-opus-4-7",
          "uncached_input_tokens": 421022,
          "cache_creation_input_tokens": 12000,
          "cache_read_input_tokens": 380000,
          "output_tokens": 95721
        },
        {
          "type": "messages",
          "model": "claude-sonnet-4-6",
          ...
        }
      ]
    },
    ...
  ]
}

注意点

  • uncached_input_tokens は、 キャッシュを使わなかった通常の入力トークン。
  • cache_read_input_tokens は、 キャッシュ読み込みで節約された入力分。料金は通常の 1/10。
  • cache_creation_input_tokens は、 キャッシュへの書き込み。これは通常入力の 1.25 倍の料金。
  • 合算した「総入力トークン数」 = uncached + cache_creation + cache_read。
  • 料金 はレスポンスには含まれていない。 トークン数 × 単価 を自分で計算する必要がある。

料金計算は自前で

Admin API はトークン数しか返さないので、 USD 換算は自前です。 単価表 を持って掛け算します。

PRICES = {
    "claude-opus-4-7":   {"in": 15.00, "out": 75.00, "cache": 1.50},
    "claude-sonnet-4-6": {"in":  3.00, "out": 15.00, "cache": 0.30},
    "claude-haiku-4-5":  {"in":  0.80, "out":  4.00, "cache": 0.08},
}

def cost_usd(model, uncached, cache_read, output):
    p = PRICES[model]
    return (
        uncached    * p["in"]    / 1_000_000
        + cache_read * p["cache"] / 1_000_000
        + output    * p["out"]   / 1_000_000
    )

単価は時々改定されるので、 公式の console.anthropic.com/billing で常に確認するクセが必要です。

レート制限とリトライ

Admin API には組織あたりの レート制限 があります。 ループで日付を細かく刻んで叩くと簡単に上限に当たるので、 bucket_width=1d でまとめて取るのが基本です。 429 が返ったら指数バックオフでリトライしましょう。

自前でやる場合の維持コスト

ここまでの設計を実装すると、 だいたい以下の作業が発生します。

  • Admin Key の発行と環境変数管理(漏洩したら即 revoke できる体制)
  • Cron / GitHub Actions / Lambda 等で毎日叩く仕組み
  • 結果を保存する DB(BigQuery、Postgres、SQLite、Notion、Spreadsheet 等)
  • 単価表のメンテナンス(モデル追加・価格改定への追従)
  • ダッシュボード作成(Metabase、Grafana、自作)
  • アラート発火(Slack / Discord / Email 通知ロジック)

実装ボリュームは 小さな SaaS そのもの。 週末に作って一度動かして満足する分には楽しいですが、 維持し続けるのは別の話。

Tokscope がやっていること

Tokscope は、上記の作業を全部肩代わりするサービスです。具体的には:

  • ユーザーが Admin Key を貼ると AES-256-GCM で暗号化保存
  • 日次で /v1/organizations/usage_report/messages を自動取得
  • モデル別単価で USD と JPY を計算、 90 日分の履歴を保持
  • 月予算を超えたら Discord/Slack/Email に通知
  • OpenAI / Gemini / DeepSeek も同様に統合

自前で同じものを作るのに 数十時間。 Tokscope の Pro プランは月額 ¥1,980。 どっちが得かは、 あなたの時給次第 です。