Claude API のコストを「見える化」する時代へ
Claude APIを本番環境で運用していると、「今月のAPI費用はいくらかかっているのか」「どのモデルが最もコストを消費しているのか」といった疑問が必ず浮かびます。Anthropicが提供する Usage & Cost Admin API を使えば、こうした疑問にプログラムで答えることができます。
このAPIを使えば、Claude Consoleにログインしなくても、トークン消費量やコストの推移をリアルタイムに把握し、チームへの自動レポート配信やアラート設定まで実現できます。
Usage & Cost API とは?
Usage & Cost Admin APIは、Anthropicが提供する管理者向けAPIで、組織のClaude API利用データにプログラムからアクセスできるエンドポイントです。Claude Consoleの「Usage」「Cost」ページで確認できる情報と同等のデータを、APIとして取得できます。
主な活用シーンは以下の通りです。
- 正確な利用量トラッキング: レスポンスのトークンカウントに頼らず、精密なトークン消費量を取得
- コスト照合: 経理・会計チーム向けに、Anthropic請求書と内部記録の照合を自動化
- プロダクト改善: システム変更の効果測定やパフォーマンス監視を実現
- レートリミット最適化: プロンプトキャッシュの効率を測定し、割り当て容量を最大限に活用
- 高度な分析: Console画面より踏み込んだデータ分析を実行
2つのエンドポイント
Usage & Cost APIは、目的に応じて2つのエンドポイントを提供しています。
| エンドポイント | パス | 用途 |
|---|---|---|
| Usage API | /v1/organizations/usage_report/messages | トークン消費量の詳細な内訳 |
| Cost API | /v1/organizations/cost_report | USD建てのコスト内訳 |
事前準備:Admin APIキーの取得
Usage & Cost APIを使うには、通常のAPIキー(sk-ant-api...)ではなく、Admin APIキー(sk-ant-admin...)が必要です。
Admin APIキーの発行手順は以下の通りです。
- Claude Consoleにログイン
- Settings → Organization で組織をセットアップ(個人アカウントでは利用不可)
- Settings → Admin Keys でAdmin APIキーを発行
- 組織内で admin ロールを持つメンバーのみが発行可能
# 環境変数にAdmin APIキーを設定
export ADMIN_API_KEY="sk-ant-admin-your-key-here"注意: Admin APIキーは通常のAPIキーとは異なります。メッセージ送信には使用できず、管理操作専用です。セキュリティのため、本番環境では環境変数やシークレットマネージャーで管理してください。
Usage API:トークン消費量を詳細に把握する
基本的な使い方
直近7日間のデイリー利用量を取得する最もシンプルな例から始めましょう。
# 直近7日間の日次利用量を取得
curl "https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-03-17T00:00:00Z&\
ending_at=2026-03-24T00:00:00Z&\
bucket_width=1d" \
--header "anthropic-version: 2023-06-01" \
--header "x-api-key: $ADMIN_API_KEY"時間粒度(バケット幅)の選択
データの集計単位は3種類から選択できます。
| 粒度 | デフォルトバケット数 | 最大バケット数 | 用途 |
|---|---|---|---|
1m(1分) | 60 | 1,440 | リアルタイム監視 |
1h(1時間) | 24 | 168 | 日次パターン分析 |
1d(1日) | 7 | 31 | 週次・月次レポート |
モデル別の利用量を把握する
# モデル別の日次トークン消費量
curl "https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-03-01T00:00:00Z&\
ending_at=2026-03-24T00:00:00Z&\
group_by[]=model&\
bucket_width=1d" \
--header "anthropic-version: 2023-06-01" \
--header "x-api-key: $ADMIN_API_KEY"group_by パラメータを使うと、以下のディメンションでデータをグルーピングできます。
model— モデル別(Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 など)workspace_id— ワークスペース別api_key_id— APIキー別service_tier— サービスティア別(standard, batch, priority)context_window— コンテキストウィンドウサイズ別inference_geo— データレジデンシー地域別speed— 速度モード別(standard, fast)※ベータ
高度なフィルタリング
特定のモデルとサービスティアに絞り込んで、1時間単位で監視する例です。
# Claude Opus 4.6のバッチ処理利用量を1時間単位で取得
curl "https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-03-24T00:00:00Z&\
ending_at=2026-03-24T23:59:59Z&\
models[]=claude-opus-4-6&\
service_tiers[]=batch&\
context_window[]=0-200k&\
bucket_width=1h" \
--header "anthropic-version: 2023-06-01" \
--header "x-api-key: $ADMIN_API_KEY"データレジデンシーの追跡
組織がデータレジデンシーを利用している場合、推論処理がどの地域で実行されたかを確認できます。
# 地域別・モデル別の利用量を取得
curl "https://api.anthropic.com/v1/organizations/usage_report/messages?\
starting_at=2026-03-01T00:00:00Z&\
ending_at=2026-03-24T00:00:00Z&\
group_by[]=inference_geo&\
group_by[]=model&\
bucket_width=1d" \
--header "anthropic-version: 2023-06-01" \
--header "x-api-key: $ADMIN_API_KEY"inference_geo のフィルタ値は global、us、not_available の3種類です。2026年2月以前にリリースされたモデル(Claude Opus 4.6より前)は not_available を返します。
Cost API:コストをUSD建てで取得する
基本的な使い方
# ワークスペース別・サービス別の月間コスト
curl "https://api.anthropic.com/v1/organizations/cost_report?\
starting_at=2026-03-01T00:00:00Z&\
ending_at=2026-03-31T00:00:00Z&\
group_by[]=workspace_id&\
group_by[]=description" \
--header "anthropic-version: 2023-06-01" \
--header "x-api-key: $ADMIN_API_KEY"Cost APIの特徴
Cost APIにはUsage APIと異なる特徴がいくつかあります。
- コストはすべて USD(米ドル) で、最小単位(セント)の小数文字列として返される
- トークン利用コスト、Web検索コスト、コード実行コストを個別に追跡可能
- 時間粒度は 1日(
1d)のみ descriptionでグルーピングすると、modelやinference_geoなどの解析済みフィールドが含まれる- Priority Tierのコストは含まれない(Usage APIの
service_tierフィルタで追跡)
実践:Pythonでコスト監視ダッシュボードを構築する
ここからは、Pythonを使って実用的なコスト監視スクリプトを構築する方法を紹介します。
import requests
import json
from datetime import datetime, timedelta, timezone
# Admin APIキーを設定
ADMIN_API_KEY = "sk-ant-admin-your-key-here"
BASE_URL = "https://api.anthropic.com/v1/organizations"
HEADERS = {
"anthropic-version": "2023-06-01",
"x-api-key": ADMIN_API_KEY
}
def get_usage_report(days=7, group_by="model"):
"""直近N日間の利用量レポートを取得"""
now = datetime.now(timezone.utc)
start = now - timedelta(days=days)
params = {
"starting_at": start.strftime("%Y-%m-%dT00:00:00Z"),
"ending_at": now.strftime("%Y-%m-%dT23:59:59Z"),
"group_by[]": group_by,
"bucket_width": "1d"
}
response = requests.get(
f"{BASE_URL}/usage_report/messages",
headers=HEADERS,
params=params
)
response.raise_for_status()
return response.json()
def get_cost_report(days=30):
"""直近N日間のコストレポートを取得"""
now = datetime.now(timezone.utc)
start = now - timedelta(days=days)
params = {
"starting_at": start.strftime("%Y-%m-%dT00:00:00Z"),
"ending_at": now.strftime("%Y-%m-%dT23:59:59Z"),
"group_by[]": ["workspace_id", "description"],
"bucket_width": "1d"
}
response = requests.get(
f"{BASE_URL}/cost_report",
headers=HEADERS,
params=params
)
response.raise_for_status()
return response.json()
def print_usage_summary(data):
"""利用量サマリーを表示"""
print("=" * 60)
print("📊 Claude API 利用量サマリー")
print("=" * 60)
for bucket in data.get("data", []):
date = bucket.get("bucket_start", "N/A")
model = bucket.get("model", "all")
input_tokens = bucket.get("input_tokens", 0)
output_tokens = bucket.get("output_tokens", 0)
cached_tokens = bucket.get("cache_read_input_tokens", 0)
print(f"\n日付: {date[:10]} | モデル: {model}")
print(f" 入力トークン: {input_tokens:,}")
print(f" 出力トークン: {output_tokens:,}")
print(f" キャッシュ読取: {cached_tokens:,}")
# 実行例
# usage = get_usage_report(days=7, group_by="model")
# print_usage_summary(usage)
# 期待される出力:
# ============================================================
# 📊 Claude API 利用量サマリー
# ============================================================
#
# 日付: 2026-03-23 | モデル: claude-sonnet-4-6
# 入力トークン: 1,245,678
# 出力トークン: 523,456
# キャッシュ読取: 890,123ページネーション対応
大量のデータを取得する場合は、ページネーションの処理が必要です。
def get_all_pages(endpoint, params):
"""ページネーションを処理して全データを取得"""
all_data = []
while True:
response = requests.get(
f"{BASE_URL}/{endpoint}",
headers=HEADERS,
params=params
)
response.raise_for_status()
result = response.json()
all_data.extend(result.get("data", []))
# 次のページがあるかチェック
if result.get("has_more", False):
params["page"] = result["next_page"]
else:
break
return all_data
# 使用例: 1ヶ月分のデータを全ページ取得
# all_usage = get_all_pages("usage_report/messages", {
# "starting_at": "2026-03-01T00:00:00Z",
# "ending_at": "2026-03-31T00:00:00Z",
# "bucket_width": "1d",
# "limit": 7
# })
# print(f"取得したバケット数: {len(all_usage)}")
# 期待される出力:
# 取得したバケット数: 24コスト最適化のための実践テクニック
Usage & Cost APIで取得したデータを分析すると、いくつかの最適化パターンが見えてきます。
1. プロンプトキャッシュの効率測定
def analyze_cache_efficiency(usage_data):
"""キャッシュ効率を分析して最適化の余地を見つける"""
total_input = 0
total_cached = 0
for bucket in usage_data.get("data", []):
total_input += bucket.get("input_tokens", 0)
total_cached += bucket.get("cache_read_input_tokens", 0)
if total_input > 0:
cache_rate = (total_cached / total_input) * 100
print(f"キャッシュヒット率: {cache_rate:.1f}%")
if cache_rate < 30:
print("⚠️ キャッシュ率が低めです。")
print(" → システムプロンプトやツール定義の")
print(" キャッシュ設定を見直しましょう。")
elif cache_rate > 70:
print("✅ キャッシュが効率的に機能しています。")
else:
print("データがありません。")
# 期待される出力:
# キャッシュヒット率: 45.2%
# ⚠️ キャッシュ率が低めです。
# → システムプロンプトやツール定義の
# キャッシュ設定を見直しましょう。プロンプトキャッシュを活用すると、同じシステムプロンプトやツール定義を繰り返し送信する際のコストを大幅に削減できます。
2. モデルの使い分け最適化
Claude API の現在の料金体系は以下の通りです。
| モデル | 入力 (100万トークンあたり) | 出力 (100万トークンあたり) |
|---|---|---|
| Claude Opus 4.6 | $5 | $25 |
| Claude Sonnet 4.6 | $3 | $15 |
| Claude Haiku 4.5 | $1 | $5 |
Usage APIのモデル別データを分析し、「Opus 4.6で処理しているがSonnet 4.6で十分なタスク」を特定できれば、大きなコスト削減につながります。
3. バッチ処理による50%コスト削減
service_tier でグルーピングし、リアルタイムで処理しているリクエストのうち、即時レスポンスが不要なものをバッチ処理に移行することで、最大50%のコスト削減が可能です。
パートナーソリューション:コードを書かずに監視する
自前でダッシュボードを構築する工数がない場合は、Anthropic公式のパートナーインテグレーションを活用できます。
- Grafana Cloud — エージェントレスでダッシュボードとアラートを即座にセットアップ
- Datadog — LLM Observabilityとして自動トレーシング・監視を提供
- CloudZero — クラウドコスト管理プラットフォームとしてコスト予測を支援
- Honeycomb — OpenTelemetryベースの高度なクエリと可視化
- Vantage — FinOpsプラットフォームとしてLLMコストを一元管理
これらのプラットフォームは、Admin APIキーを設定するだけで、自動的にデータを収集・可視化してくれます。
全体を振り返って
Claude API の Usage & Cost APIは、APIコストの「見える化」と最適化に不可欠なツールです。この記事で紹介したポイントをまとめます。
- Usage API でトークン消費を分単位〜日単位で追跡できる
- Cost API でUSD建てのコスト内訳を取得できる
- Admin APIキー(
sk-ant-admin...)が必要で、組織アカウントのadminロール保持者のみが発行可能 - Pythonなどのスクリプトで自動レポートやアラートを構築でき、Grafana・Datadogなどのパートナーソリューションも利用可能
- プロンプトキャッシュの効率測定やモデル使い分けの分析により、実質的なコスト削減が可能
コストを適切に管理することは、Claude APIを長期的に活用していく上での基盤となります。まずは基本的な利用量レポートの取得から始めて、段階的に監視体制を構築していきます。