Anthropic API完全ガイド — モデル選択・料金・実装まで
Anthropic APIはClaudeモデルへ直接アクセスする公式API。モデル選択と料金、Messages APIの構造、Tool use、Prompt caching、Batch、MCP connectorまでを扱います。
自分のアプリからClaudeを呼ぶ入口は、1本のエンドポイントです。Anthropic APIは、Claudeのモデル群(Fable 5.1・Opus 5.5・Sonnet 5.5・Haiku 4.5)へ直接アクセスする公式APIです。開発者はトークン単位の従量課金で、自分のアプリケーションに組み込めます。
モデル選びと料金、Messages APIの構造から始めます。続いてTool use・Prompt caching・Batchなどの機能を扱います。最後にレート制限とエラーの見分け方、Agent SDKやManaged Agentsとの関係を見ます。
Anthropic API(アンソロピックAPI)とは
アンソロピックAPIとも呼ばれるAnthropic APIは、HTTPS・JSONベースのRESTful APIです。ベースURLはhttps://api.anthropic.comで、各機能のパスは/v1の下に並びます。中核はMessages API(POST /v1/messages)で、モデル名・メッセージ列・システムプロンプト・ツール定義を渡すとClaudeが応答を返します。
主要なエンドポイントは次の8つです。
| API | 主なパス | 用途 |
|---|---|---|
| Messages | 主なパスPOST /v1/messages | 用途Claudeへ送信して応答を受け取る |
| Message Batches | 主なパスPOST /v1/messages/batches | 用途大量のリクエストを非同期で処理する(50%割引) |
| Token Counting | 主なパスPOST /v1/messages/count_tokens | 用途送信前にトークン数を数える |
| Models | 主なパスGET /v1/models | 用途使えるモデルの一覧と詳細を取る |
| Files | 主なパスPOST /v1/files | 用途ファイルを預けて複数のリクエストで再利用する |
| Skills | 主なパスPOST /v1/skills | 用途カスタムのエージェントスキルを作成・管理する |
| Agents(ベータ) | 主なパスPOST /v1/agents | 用途Managed Agents用のエージェント設定を作る |
| Sessions(ベータ) | 主なパスPOST /v1/sessions | 用途マネージドなサンドボックスで状態を持つセッションを動かす |
Anthropic APIは4ステップで動く
- 1
キーを発行
Claude ConsoleのAccount SettingsでAPIキーを作る
- 2
リクエストを送る
SDK・
antCLI・HTTPでPOST /v1/messages - 3
Claudeが応答
モデル名・メッセージ・ツール定義に応じてJSONで返す
- 4
機能を足す
Tool use・ストリーミング・Prompt caching・Batch・Structured outputs
Claude.aiのチャットUIと違い、Anthropic APIは次の特徴を持ちます。
- 自前のアプリケーションから直接呼べる(公式SDK・
antCLI・任意のHTTPクライアント) - トークン単位の従量課金で、input・output・キャッシュ書き込み・読み取りごとに単価が分かれる
- Tool use・ストリーミング・Prompt caching・Structured outputs・Batch・Visionなど、Claude.aiでは触れない開発向け機能を持つ
- レート制限がStart・Build・Scaleのティア制で、利用実績に応じて自動的に引き上がる
Claude Codeは内部でAnthropic APIを呼んでおり、「APIの上に乗ったアプリケーション層」です。詳細は本記事後半の「Agent SDK・Managed Agentsとの関係」で扱います。
最初のAPIリクエスト — キー取得から動作確認まで
APIキーはClaude Consoleで発行します。Claude Consoleにサインインし、Settings → API keysのCreate keyで発行します。発行時にキーの種類(個人キー・サービスアカウントキー)と有効期限を選びます。コードを書く前にリクエストを試したい場合は、Claude ConsoleのPlaygroundでAPIリクエストを試す使い方で紹介するPlaygroundが使えます。
最小構成のリクエストは次のとおりです。
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "こんにちは"}
]
}'必須ヘッダーは次の3つです。公式SDKを使えばこれらは自動で付与されます。複数のワークスペースにまたがるAPIキーでは、anthropic-workspace-idも指定します。
必須ヘッダー3つ
x-api-key / Authorization
いずれか一方を指定します。
Authorization: Bearer <token>には、APIキーかWorkload Identity Federationの短期トークンを渡します。x-api-keyは従来からの互換手段で、今も使えます。anthropic-version
APIのバージョンを指定します。例:
2023-06-01content-type
application/jsonを指定します。
Python SDKでの最小例です。
import anthropic
client = anthropic.Anthropic() # ANTHROPIC_API_KEY 環境変数を自動で読む
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "こんにちは"}],
)
for block in message.content:
if block.type == "text":
print(block.text)インストールはpip install anthropic(Python)またはnpm install @anthropic-ai/sdk(TypeScript)です。リクエストサイズの上限はMessages APIとToken Counting APIが32MB、Batch APIが256MB、Files APIが500MBで、超えると413 request_too_largeが返ります。
モデル選択 — 4モデルの使い分け早見表
Anthropic APIの現行モデルは4系統で、表にはレガシー扱いのOpus 5も載せています。知能の深さ・速度・コストのトレードオフがそれぞれ異なります。
| モデル | 単価(input / output、per 1M tokens) | コンテキスト・最大出力 | 選ぶ基準 |
|---|---|---|---|
| Claude Fable 5.1 | 単価(input / output、per 1M tokens)$10 / $50 | コンテキスト・最大出力1M・128k | 選ぶ基準Opus 5.5でも届かない、最長時間の自律タスクだけに絞る |
| Claude Opus 5.5 | 単価(input / output、per 1M tokens)$4 / $20 | コンテキスト・最大出力1M・128k | 選ぶ基準長時間のエージェント開発・ナレッジワークの主力。公式は迷ったときの出発点に挙げている |
| Claude Opus 5 | 単価(input / output、per 1M tokens)$5 / $25 | コンテキスト・最大出力1M・128k | 選ぶ基準レガシー(旧世代のOpus。引き続き呼び出し可) |
| Claude Sonnet 5.5 | 単価(input / output、per 1M tokens)$2 / $10 | コンテキスト・最大出力1M・128k | 選ぶ基準速度と知能のバランスを取ったモデル。Sonnet 5と同額で、標準的な執筆・調査・製品統合の大半をここで賄う |
| Claude Haiku 4.5 | 単価(input / output、per 1M tokens)$1 / $5 | コンテキスト・最大出力200k・64k | 選ぶ基準明確な判定基準がある抽出・採点・軽量バッチ |
モデルIDは正確な文字列で指定します。Fable 5.1はclaude-fable-5-1、Opus 5.5はclaude-opus-5-5、Sonnet 5.5はclaude-sonnet-5-5です。Haiku 4.5はclaude-haiku-4-5で、内部的にはclaude-haiku-4-5-20251001に解決します。日付サフィックスを勝手に付け足すと404になります。旧世代のFable 5(claude-fable-5)もレガシーとして引き続き呼び出せます。
思考の挙動はモデルごとに違います。Fable 5.1は常にAdaptive thinkingがオンで、thinkingの指定は不要です。{"type": "disabled"}と{"type": "enabled", "budget_tokens": N}はどちらも400になり、思考をオフにはできません。思考の要約を見たいときは{"type": "adaptive", "display": "summarized"}を指定します。Opus 5.5も常にオンで、disabledとbudget_tokens指定はどちらも400になります。Opus 5もデフォルトでオン(Opus 4.8・4.7からの変更点)で、thinking: {"type": "disabled"}はeffortがhigh以下のときだけ受け付けられます。Sonnet 5は{"type": "adaptive"}だけがオンモードで、thinkingを省略してもAdaptive thinkingで走ります。Sonnet 5.5は{"type": "disabled"}が400になり、思考の代わりにbetween_tools(effortはhigh以下)を使います。現行の4モデルのうちHaiku 4.5だけがAdaptive thinkingに対応せず、旧来のbudget_tokens指定によるExtended thinkingのみ使えます。
Fable 5.1・Fable 5・Mythos 5.1・Mythos 5は、30日間のデータ保持が必須です。Zero Data Retention(ZDR)は、Anthropicが明示的に認めた場合を除いて選べません。Claude APIでは、保持設定が要件を満たさない組織のリクエストが400 invalid_request_errorで拒否されます。メッセージはIn order to access this model, your organization or workspace must have data retention enabled.で、公式の例はFable 5です。仕様の詳細はClaude Fable 5.1の仕様解説にまとめています。
モデルIDと機能差の一覧はClaudeモデル一覧、性能面の詳細な比較はClaudeモデル比較にまとめています。旧モデルからの移行手順はClaudeモデル移行ガイドを参照してください。
料金体系 — トークン単価とコスト最適化
Anthropic APIは入力・出力トークンに加えて、Prompt cachingの書き込み・読み取り、Batch APIの割引が別単価で設定されています。
| 課金軸 | 単価の考え方 |
|---|---|
| input tokens | 単価の考え方リクエストで送ったメッセージ・システムプロンプト・ツール定義のトークン数 |
| output tokens | 単価の考え方モデルが生成したテキストのトークン数 |
| cache write(5分) | 単価の考え方inputの1.25倍。5分間キャッシュを保持 |
| cache write(1時間) | 単価の考え方inputの2倍。1時間キャッシュを保持 |
| cache read | 単価の考え方inputの0.1倍(90%割引)。直前の書き込みと同じ期間有効。Fable 5.1・Mythos 5.1は0.025倍(97.5%割引)、Opus 5.5とSonnet 5.5は0.05倍(95%割引) |
| Batch API | 単価の考え方input・outputともに50%割引 |
Prompt cachingの読み取り割引とBatch APIの50%割引は重ね掛けできます。ただしBatchは非同期で並行処理されるため、キャッシュヒットはベストエフォートです。Fable 5.1・Mythos 5.1は読み取りが0.025倍なので、1時間TTLでも読み取り1回でほぼ相殺し、2回目から黒字に転じます。損益分岐の詳しい試算はClaude Fable 5.1の仕様解説の料金の節にまとめています。
割引は重ね掛けできる
通常のinput
1倍Batch API
0.5倍(50%割引)キャッシュ読み取り
0.1倍(90%割引)キャッシュ読み取り × Batch
0.05倍(重ね掛け)
Opus 5.5は2026年9月22日、Sonnet 5.5は9月28日に公開されました。Sonnet 5.5はclaude-sonnet-5-5で呼び出せ、単価はSonnet 5と同じinput $2 / output $10です。詳細はClaude Sonnet 5.5の仕様解説にあります。
Sonnet 5のinput $2 / output $10は、当初「2026年8月31日までの導入価格」として発表されました。その後、9月1日に予定していたinput $3 / output $15への値上げは実施しないと告知されています。この単価が正式な通常価格です。
Claude.aiの月額プラン(Pro・Team・Max)とAPIの従量課金は別会計です。プラン比較はClaudeの料金プラン、Claude CodeでAPIとMaxプランのどちらが得かはClaude Codeの料金試算ガイドで扱っています。
Messages APIのリクエスト構造
Messages APIの必須パラメータは3つだけです。model(モデルID)、max_tokens(出力トークンの上限)、messages(会話履歴の配列)。
| パラメータ | 役割 | 必須 |
|---|---|---|
model | 役割使うモデルのID | 必須✓ |
max_tokens | 役割出力トークンの上限 | 必須✓ |
messages | 役割role: "user" / "assistant"の会話履歴 | 必須✓ |
system | 役割システムプロンプト。文字列または配列(配列ならブロック単位でキャッシュ可能) | 必須— |
tools | 役割Tool use定義 | 必須— |
thinking | 役割思考の設定(モデルごとに挙動が違う。前節参照) | 必須— |
output_config | 役割effort(思考の深さ)やformat(構造化出力)を格納 | 必須— |
応答はcontentフィールドにブロックの配列で返ります。ブロックタイプはtext・tool_use・thinkingなどが混在します。stop_reasonは終了理由を示します。値はend_turn / max_tokens / stop_sequence / tool_use / pause_turn / refusal / model_context_window_exceededのいずれかです。refusalのときはstop_detailsにカテゴリ(cyber・bioなど)が入るので、contentを読む前にstop_reasonを確認する実装にします。
max_tokensを大きく取るときはストリーミングが実質必須です。SDKは非ストリーミングリクエストが10分のタイムアウトを超えない見込みかを検証します。Haiku 4.5だけが最大出力64kで、他の現行モデルは128kまで伸ばせます。
思考の深さの制御 — Adaptive thinking
Claudeは応答の前に内部で「思考」フェーズを挟めます。旧来のExtended thinking(thinking: {"type": "enabled", "budget_tokens": N})は、思考に使うトークン数の上限を明示する方式でした。Fable 5.1・Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5ではこの方式が廃止されています。代わりにAdaptive thinking({"type": "adaptive"})とoutput_config.effortの組み合わせで制御します。
effortはlow / medium / high / xhigh / maxの5段階(Haiku 4.5は非対応)で、深さとコストのトレードオフを制御します。APIの既定はhighです。ただしOpus 5.5だけはmediumで、省略するとOpus 5より1段低い設定で動きます。既定値を明示した場合は省略と同じ挙動です。出発点は、Fable 5.1が既定のhigh、Sonnet 5.5はhigh(仕様の明確なエージェント作業はmedium)で、xhigh以上は評価で効果が出た場面だけに絞ります。モデルごとに水準が違うため、旧モデルの設定は持ち越さず、自分の評価で確かめ直します。抽出・分類のような決まったパターン処理はlow〜mediumで足ります。
thinking.displayはデフォルトで"omitted"(思考ブロックは返るが中身は空文字列)です。ユーザーに思考の要約を見せたい場合はdisplay: "summarized"を明示します。生の思考過程がそのまま返ることはどのモデルでもありません。表示される思考の要約が実際の推論をどこまで忠実に反映しているかはClaudeの拡張思考は本音を話しているかで扱っています。
旧モデルのbudget_tokens指定コードをFable 5.1・Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5にそのまま持ち込むと400エラーになります。移行手順はClaudeモデル移行ガイドにまとめています。
thinkingブロックは、それを生成したモデルに紐づきます。2026年8月31日以降に作られたアカウントでは、Fable 5.1・Opus 5.5・Sonnet 5.5のthinkingブロックより前の履歴(system・tools・過去のメッセージ)を書き換えて再送すると400になります。会話は追記だけにするのが安全です。
長時間タスクを支えるコンテキスト運用
エージェント的なタスクが長く続くと、会話履歴がコンテキストウィンドウを圧迫し、応答品質が落ちていきます。長いコンテキストが安全策の効きを弱める現象はMany-shot Jailbreakingでコンテキストウィンドウの安全策が崩れる仕組みで扱っています。AnthropicはこれをClaude側の設定で緩和する仕組みを段階的に増やしていて、現行は4つあります(いずれもベータです)。
| 機能 | 何をするか | 対象 |
|---|---|---|
| Compaction | 何をするか古い履歴をサーバー側で要約して差し替える。要約のタイミングを自分で決める「オンデマンド」(compact-2026-09-04、トップレベルのcompactionパラメータ)と、トークン数の閾値でAPIが自動で行う「閾値方式」(compact-2026-01-12)がある | 対象Fable 5.1・Fable 5・Opus 5.5・Opus 5・Opus 4.8〜4.6・Sonnet 5.5・Sonnet 5・Sonnet 4.6。Bedrockはオンデマンド非対応 |
Context editing(context-management-2025-06-27) | 何をするかツール結果や思考ブロックなど、指定した種類の内容だけをリクエスト直前に選択的にクリアする | 対象Compactionより細かい制御が要る場面向け |
Task budgets(task-budgets-2026-03-13) | 何をするかエージェントループ全体のトークン予算(目安)を渡し、Claudeが残量を見ながら仕事を優先づけて締めくくる | 対象Fable 5.1・Fable 5・Opus 5.5・Opus 5・Opus 4.8・Opus 4.7・Sonnet 5.5 |
Fast mode(fast-mode-2026-02-01) | 何をするかspeed: "fast"指定で出力速度を最大2.5倍にする(割増料金、リサーチプレビュー。Opus 5.5はinput $8 / output $40) | 対象Opus 5.5・Opus 5・Opus 4.8のみ、Claude API限定 |
Compactionは「まずこれを使う」位置づけの標準機能で、オンデマンド方式が優先とされています。要約による管理を望まないときだけContext editingで細かく制御します。Task budgetsはeffort(前節)と役割が違い、effortが「1ステップの思考の深さ」を制御するのに対し、Task budgetsは「エージェントループ全体の総消費量」の目安を渡す点が異なります。厳密な上限ではなく、モデルが自分で使い方を調整するための助言です。Fast modeはAnthropic直APIのみが対象で、Claude Platform on AWSを含む他の経路(Amazon Bedrock・Google Cloud・Microsoft Foundry)では使えません。
Tool use(Function calling)の実装
Tool useは、ツールの仕様をClaudeに渡し、Claudeが「このツールをこの引数で呼びたい」と判断してリクエストを返す仕組みです。ツールには2種類あります。クライアントツール(ユーザー定義ツールと、bash・text editorなどAnthropic定義ツール)はアプリケーション側が実行します。サーバーツール(web_search・web_fetch・code_execution・tool_searchなど)はAnthropicのインフラ上で実行され、結果がそのまま返ります。
{
"model": "claude-opus-5-5",
"tools": [
{
"name": "get_weather",
"description": "指定された都市の現在の天気を返す",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "都市名"}
},
"required": ["city"]
}
}
],
"messages": [
{"role": "user", "content": "東京の天気は?"}
]
}Claudeがtool_useブロックを返したら、アプリケーション側でツールを実行し、結果をtool_resultとして次のリクエストのmessagesに含めます。並列ツール呼び出し(1ターンで複数のtool_useブロックを返す)がデフォルトで有効で、独立した処理を1往復で片付けられます。並列で呼ばれたツールの結果は、必ず1つのuserメッセージにまとめて送り返します。分割して送ると、以降の並列呼び出しが減ります。
ツール呼び出しには、モデルごとに固有のシステムプロンプトトークンが加算されます。Opus 5はtool_choice: "auto"で286トークン、"any" / "tool"で406トークン。Sonnet 5はそれぞれ354・474トークンです。Opus 5.5とSonnet 5.5はautoで286トークンで、any / toolは400になるため対象外です。ツールを1つも渡さなければこの加算はありません。tool_choiceにはauto / any / tool(特定ツール指定)/ noneの4種類があります。any / toolを指定するとAPIがassistantメッセージをプリフィルするため、ツール呼び出しの前に説明文は出ません。Fable 5.1・Opus 5.5・Sonnet 5.5ではany / toolが400になるので、autoとStrict tool use(strict: true)で入力の形を保証します。違いはClaudeのtool_choiceの使い方とauto/any/tool/noneの違いにまとめています。
自分でループを書く代わりに、SDKのTool Runner(client.beta.messages.tool_runner、ベータ)を使うと、リクエスト→実行→ループの往復を自動化できます。ツールのエラー傍受や、結果へのcache_controlの付与もできます。一方、人手による承認や条件付き実行が要る場面は、手書きのループが勧められています。Python/TypeScript双方の実装とAgent SDKとの使い分けはTool RunnerでAnthropic APIのツール呼び出しループを自動化するで扱っています。
サーバーツールのweb searchは1,000検索あたり$10で、トークン費用は別にかかります。code executionは最新版のweb search・web fetchと同時に使えば無料です。単独で使う場合は組織あたり月1,550時間まで無料で、超えた分は1時間・1コンテナあたり$0.05です。MCPサーバーへの接続や高度なツール構成はコード実行×MCPの設計と高度なTool useで深掘りしています。
ツールが増えたときに効く4つの拡張
ツールを何十個も渡すエージェント運用向けに、Tool useを補う機能が増えています。
Tool useを補う4つの機能
Tool search tool
GitHub・Slack・Sentry・Grafana・Splunkのようなマルチサーバー構成では、全ツール定義を渡すだけで5万トークン超をコンテキストが消費することがあります。Tool search toolはツールカタログを検索させ、その場面で必要な3〜5個だけを読み込む仕組みで、消費トークンを通常85%超削減します。利用可能なツールが30〜50個を超えるとClaudeの選択精度が落ちる問題にも効きます。
Advisor tool
速く安いexecutorモデルが作業を進めつつ、要所だけ知能の高いadvisorモデルに相談する構成です。advisorは会話全体を読んで計画や軌道修正を返し、executorはその指示を踏まえて作業を続けます。コーディングエージェントや複数ステップの調査のように、大半のターンは機械的だが計画の質が結果を左右するタスクに向きます。
Memory tool
Claudeがセッションをまたいで情報を保存・参照できるようにする、クライアント側実装のツールです。ファイル操作(作成・読み取り・更新・削除)をアプリケーション側が実行し、保存場所とデータの扱いは自分のインフラで管理します。学んだ内容をメモリファイルに書き留め、必要なときだけ読み返す設計のため、コンテキストウィンドウを圧迫しません。
Programmatic tool calling
code executionコンテナの中でClaudeがツール呼び出しをコードとして書き、モデルとの往復なしに実行する機能です。ツールを何度も呼ぶ多段階の処理で、モデルとの往復とトークン消費を減らせます。code executionツール(
code_execution_20260120以降)の有効化が前提で、Haiku 4.5は対象外です。
ストリーミング(SSE)の実装
stream: trueを指定すると、Server-Sent Events形式で応答がチャンク単位で返ります。イベントの流れは固定です。
ストリーミングのイベントの流れ
- 1
message_start
空の
contentを持つMessageオブジェクトが届きます。 - 2
content_block_start / content_block_delta / content_block_stop
コンテンツブロックごとに、開始・差分(複数)・終了が届きます。
- 3
message_delta
トークン数などの更新が届きます。
- 4
message_stop
メッセージの終わりを示します。
const stream = client.messages.stream({
model: "claude-sonnet-5-5",
max_tokens: 64000,
messages: [{ role: "user", content: "..." }],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}イベント単位で処理する必要がなければ、SDKの.get_final_message()(Python)/.finalMessage()(TypeScript)が使えます。内部ではストリーミングしつつ、.create()と同じ完成したMessageオブジェクトを受け取れます。max_tokensが大きいリクエストではこの方式が推奨です。HTTPのタイムアウトを避けられます。
Tool useのストリーミングでは、tool_useブロックのinputが部分的なJSON文字列(input_json_delta)として分割送信されます。content_block_stopが来るまで蓄積してからパースします。中断からの復旧は、Claude 4.6以降のモデルでは中断された応答をassistantメッセージへ入れず、ユーザーメッセージとして「続きから」と指示する方式に変わっています。
Prompt caching — コストを1桁下げる設計
Prompt cachingは、システムプロンプト・ツール定義・長いRAGコンテキストなど変わらない部分をキャッシュし、後続リクエストで再利用する機能です。キャッシュ読込はinputの0.1倍(90%割引。Fable 5.1・Mythos 5.1は0.025倍、Opus 5.5とSonnet 5.5は0.05倍)で、頻繁な再利用がある構成ではコストへの効き目が最も大きい仕組みです。
{
"model": "claude-sonnet-5-5",
"system": [
{
"type": "text",
"text": "あなたは...(長いシステムプロンプト)",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [{"role": "user", "content": "..."}]
}cache_control: {"type": "ephemeral"}を付けたブロックがキャッシュ対象になります。リクエストの最上位にcache_controlを1つ置く自動キャッシュもあり、会話が伸びるにつれてブレークポイントが自動で進みます。既定のTTLは5分、ttl: "1h"を指定すれば1時間に延長できます。
キャッシュのTTL: 5分と1時間
5分(既定)
ttlを省略した場合の既定です。読み取り1回で黒字化します。
1時間
ttl: "1h"で指定します。12倍長く生き残り、読み取り2回で黒字化します。
キャッシュ対象になる最小トークン数はモデルによって違います。Opus 5.5・Opus 5・Sonnet 5.5・Fable 5.1・Fable 5・Mythos 5.1・Mythos 5は512トークン、Sonnet 5は1,024トークンからキャッシュできます。一方、Haiku 4.5は4,096トークンからしかキャッシュされません。最も安いモデルが最も長いプロンプトを要求するという逆転が起きているので、Haiku 4.5でキャッシュを設計するときは注意が必要です。短いプロンプトはエラーにならず、キャッシュされないまま処理されます。usageのcache_creation_input_tokensとcache_read_input_tokensが両方0なら、最小長に届いていないことが疑われます。2回目以降で読み取りだけが0なら、TTL(既定5分)切れ、プレフィックスの変化、tool_choice・画像の有無・thinking設定・effortの変更を疑います。Cache diagnostics(リクエストにdiagnosticsオブジェクトを付けて有効にします)を使うと、APIが前回のリクエストと比べて分岐した箇所を返します。
キャッシュのプレフィックスマッチは厳密です。tools → system → messagesの順でレンダリングされ、途中の1バイトでも変わると、そこから先のキャッシュはすべて無効になります。日時やUUIDをシステムプロンプトの先頭付近に埋め込むと、キャッシュが実質機能しなくなります。
実装の詳細はPrompt caching完全活用にまとめています。
Batch API — 50%割引のバルク処理
Batch APIは即時性を捨てる代わりに、input・output両方が50%割引になる非同期処理です。POST /v1/messages/batchesに送る非同期ジョブで、処理時間と上限は次のとおりです。
Batch APIの数字
割引
50%
通常単価から
処理時間
最大24時間
多くは1時間以内
1バッチの上限
100,000件
または256MB
結果の取得期間
29日間
作成から
{
"requests": [
{
"custom_id": "request-1",
"params": {
"model": "claude-haiku-4-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "..."}]
}
}
]
}processing_statusが"ended"になるまでポーリングし、resultsエンドポイントから結果をストリームで受け取ります。結果はcustom_idで紐付け、到着順は保証されないため、配列の位置ではなくcustom_idをキーにします。用途は数千〜数万件の記事生成・採点・抽出、月次レポート、大量翻訳などです。
長文出力が必要なバッチではanthropic-beta: output-300k-2026-03-24ヘッダーを付けます。max_tokensの上限が通常の128kから300,000まで引き上がります。対象はOpus 5.5・Opus 5・Opus 4.8・Opus 4.7・Opus 4.6・Sonnet 5.5・Sonnet 5・Sonnet 4.6です。1件で30万トークンを生成するリクエストは処理に1時間を超えることもあるため、24時間の処理枠を見込んで送信します。単価は通常のBatch割引(50%)がそのまま適用されます。制限値と実装手順、つまずきどころはClaude Batch APIの使い方にまとめています。
Structured outputsで出力を固定する
output_config.formatは、Messages APIの応答を指定したJSON Schemaに強制的に一致させる機能です。旧来のoutput_formatパラメータは非推奨で、新規コードはoutput_config.formatを使います。
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "メールから情報を抽出して"}],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {"name": {"type": "string"}, "email": {"type": "string"}},
"required": ["name", "email"],
"additionalProperties": false
}
}
}
}'一般提供(GA)の機能で、ベータヘッダーは不要です。対応モデルはClaude 4.5以降とMythos系です(Amazon Bedrockでは対応モデルが限られます)。additionalProperties: falseが必須で、minLengthやmultipleOfのような数値・文字列の制約はサポート外です。推奨の呼び出し方はclient.messages.parse()で、レスポンスをスキーマに沿って自動検証してくれます。ツール呼び出しのスキーマだけ厳密にしたいなら、ツール定義にstrict: trueを付けるStrict tool useのほうが軽量です。tool useとの使い分けを含めた実装手順はClaude JSONモードの使い方で扱っています。
Files API — 画像・PDF・データセットの再利用
Files APIは、ファイルを一度アップロードしてfile_idで使い回す仕組みです。ベータを終えたGAの機能で、ベータヘッダーは不要です。古いコードが送っているanthropic-beta: files-api-2025-04-14は、付けたままでも従来のレスポンス形式で動き続けます。SDKではclient.filesを使います。ベータヘッダー全般の併用ルールはClaude APIでanthropic-betaヘッダーを使う方法にまとめています。
| 項目 | 値 |
|---|---|
| 1ファイルの最大サイズ | 値500MB |
| 組織あたりの総ストレージ | 値1TB |
| アップロード・ダウンロード・一覧・削除 | 値すべて無料 |
| 期限 | 値アップロード時にexpires_in_seconds(1時間〜90日)を付ければ自動で失効 |
| メッセージで参照したファイルの内容 | 値inputトークンとして課金 |
アップロードしたファイルはワークスペース内の全員が参照できます。エンドユーザーや会話ごとには分離されないため、テナントごとにワークスペースを分けます。
PDFやテキストはdocumentブロック、画像はimageブロックで{"type": "file", "file_id": "..."}を参照します。.docxや.xlsxのようにdocumentブロックが対応しない形式は、プレーンテキストに変換して地の文に含めるか、code executionツールのcontainer_uploadブロックでデータセットとして渡します。
citations: {"enabled": true}をdocumentブロックに付けると、応答が引用付きの複数textブロックに分割され、各ブロックのcitations配列に出典位置(ページ番号や文字インデックス)が入ります。RAGで「この主張はどのページの何文字目に基づくか」を機械的に追跡したいときに使います。Structured outputs(output_config.format)とCitationsは同時に使えず、併用すると400エラーになります。アップロードからfile_idでの再利用、コスト試算までの実装手順はClaude Files APIでPDFを処理する方法にまとめています。
MCP connectorで直接繋ぐ
MCP(Model Context Protocol)connectorは、別途MCPクライアントを実装しなくても、Messages APIから直接リモートMCPサーバーへ接続できる機能です。現行のベータヘッダーはmcp-client-2025-11-20(旧mcp-client-2025-04-04は非推奨)です。ツール一覧を記録して固定できるmcp-client-2026-09-15も、Claude APIで使えます。旧ヘッダーからの書き換え手順はmcp-client-2025-04-04の移行にあります。
{
"model": "claude-opus-5-5",
"max_tokens": 1000,
"messages": [{"role": "user", "content": "使えるツールを教えて"}],
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}
],
"tools": [{"type": "mcp_toolset", "mcp_server_name": "example-mcp"}]
}mcp_serversでサーバー接続(URL・認証トークン)、toolsのmcp_toolsetでどのツールを有効にするかを設定します。全ツール許可・allowlist・denylistのいずれもdefault_configとconfigsの組み合わせで表現できます。対応しているのはツール呼び出しのみで、MCP仕様のプロンプトやリソースは未対応です。ローカルのSTDIOサーバーは直接繋げず、公開HTTPサーバー(Streamable HTTPまたはSSE)だけが対象です。
ベータ機能として利用できるのはClaude API本体・Claude Platform on AWS・Microsoft Foundryで、Amazon BedrockとGoogle Cloudでは使えません。この対応状況はサーバーツール(web search・code execution)とは別なので、使いたい機能ごとに確認してから経路を選びます。
レート制限 — Start・Build・Scaleティア
レート制限は組織単位のティア制です。新規組織や利用履歴の浅い組織は、Evaluationティアから始まる場合があります。このティアの上限は標準ティアより低く抑えられ、不正利用を防ぎながら利用実績が積み上がると自動的に引き上がる仕組みです。実績を重ねるとStart → Build → Scaleへ自動的に上がり、ティアごとに月あたりの支出上限があります。上限を超える場合はカスタムティアとして個別に交渉します。
ティアごとの月間支出上限
Start
$500
月あたり
Build
$1,000
月あたり
Scale
$200,000
月あたり
| ティア | Fable 5.1 + Fable 5(合算。RPM / ITPM / OTPM) | Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5・Haiku 4.5(モデルごと。RPM / ITPM / OTPM) |
|---|---|---|
| Start | Fable 5.1 + Fable 5(合算。RPM / ITPM / OTPM)1,000 / 500,000 / 100,000 | Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5・Haiku 4.5(モデルごと。RPM / ITPM / OTPM)1,000 / 2,000,000 / 400,000 |
| Build | Fable 5.1 + Fable 5(合算。RPM / ITPM / OTPM)2,000 / 1,500,000 / 300,000 | Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5・Haiku 4.5(モデルごと。RPM / ITPM / OTPM)5,000 / 5,000,000 / 1,000,000 |
| Scale | Fable 5.1 + Fable 5(合算。RPM / ITPM / OTPM)4,000 / 4,000,000 / 800,000 | Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5・Haiku 4.5(モデルごと。RPM / ITPM / OTPM)10,000 / 10,000,000 / 2,000,000 |
表のうち右の列は、Opus 5.5・Opus 5・Sonnet 5.5・Sonnet 5・Haiku 4.5で同じ値です。これらはそれぞれ独立したレート制限バケットを持ち、別々に上限まで使えます。ただしFable 5.1とレガシーのFable 5は合算の「Fable 5.x」バケットを共有します(Mythos 5.1とMythos 5も別の合算バケットです)。Opus 4.8・4.7・4.6・4.5は合算の「Opus 4.x」バケットを共有し、Sonnet 4.6・4.5も合算の「Sonnet 4.x」バケットを共有します。新モデルに切り替えても、旧モデルのバケットの空きは引き継がれません。
レート制限はトークンバケットアルゴリズムで、固定間隔でリセットされるのではなく継続的に補充されます。キャッシュ読み取りトークン(cache_read_input_tokens)は、Haiku 3.5を除く全モデルでITPMの計算に含まれません。つまりキャッシュヒット率を上げると、同じ実効スループットをより少ないレート制限消費で処理できます。ITPM消費を送信前に見積もりたい場合は、実際にメッセージを送らずに済むcount_tokensエンドポイントが使えます。Start/Build/Scaleそれぞれのレート制限と合わせた使い方はcount_tokensで送信前にトークン数を数える方法とレート制限にまとめています。
429エラーが返ったらretry-afterヘッダーの秒数だけ待ってから再試行します。ただし「上限に達した」エラーは3通りあり、見分け方と待ち方が違います。
| 状況 | ステータス・目印 | retry-after | 解ける条件 |
|---|---|---|---|
| 通常のレート制限(RPM・ITPM・OTPM) | ステータス・目印429、rate_limit_error | retry-afterあり | 解ける条件示された秒数の経過後 |
| ティアの月間支出上限 | ステータス・目印429、Messages APIではerror.details.error_codeがenforced_spend_limit_reached | retry-afterなし | 解ける条件翌月1日0時(UTC)か、ティアの引き上げ |
| 自分で設定した支出上限 | ステータス・目印400、invalid_request_error。メッセージがYou have reached your specified API usage limitsで始まる | retry-afterなし(400のため) | 解ける条件上限の引き上げか削除。メッセージに再開時刻が書かれる |
自分で設定した上限は、組織だけでなくワークスペースにも置けます。メッセージの冒頭がspecified workspace API usage limitsになるのがワークスペース側の上限です。Claude Codeワークスペースの上限だけは検査が別扱いで、400でなくretry-after付きの429になることがあります。429を見て一律に待つ実装だと、2行目の支出上限では再試行が最後まで失敗し続けます。400を一律に「リクエスト形式の不備」として扱う実装も、3行目では原因を取り違えます。
SDKは接続エラー・429・5xxを最大2回まで自動リトライしますが、支出上限の429では何度繰り返しても通りません。具体的な対処手順は429・Overloadedエラーの対処法にまとめています。
エラーハンドリングと落とし穴
| コード | エラータイプ | 主な原因 | 対処 |
|---|---|---|---|
| 400 | エラータイプinvalid_request_error | 主な原因パラメータ不正・非対応の組み合わせ。自分で設定した支出上限への到達も400 | 対処リクエスト形式を修正。リトライ不要 |
| 401 | エラータイプauthentication_error | 主な原因APIキーの失効・形式不正 | 対処キーを再発行。リトライ不要 |
| 402 | エラータイプbilling_error | 主な原因支払い情報の問題 | 対処Consoleで請求情報を確認 |
| 403 | エラータイプpermission_error | 主な原因権限不足(モデル・ベータ機能へのアクセス権なし) | 対処ワークスペース設定を確認 |
| 404 | エラータイプnot_found_error | 主な原因モデルIDのtypo、存在しないリソース | 対処モデルIDの綴りを確認 |
| 409 | エラータイプconflict_error | 主な原因リソースの状態競合(同時更新など) | 対処再取得してから再試行 |
| 413 | エラータイプrequest_too_large | 主な原因リクエストサイズ超過(Messages APIは32MB) | 対処入力を分割・圧縮 |
| 429 | エラータイプrate_limit_error | 主な原因レート制限到達、またはティアの月間支出上限への到達 | 対処retry-after分待って再試行。支出上限は翌月まで解けない |
| 500 | エラータイプapi_error | 主な原因Anthropic側の内部エラー | 対処指数バックオフで再試行 |
| 504 | エラータイプtimeout_error | 主な原因処理中にタイムアウト | 対処ストリーミングAPIに切り替える |
| 529 | エラータイプoverloaded_error | 主な原因一時的な高負荷 | 対処指数バックオフで再試行 |
実装でよく踏む落とし穴
temperature/top_p/top_kを既定値以外にする: 対象はOpus 4.7以降(Opus 5.5を含む)・Fable 5.1・Sonnet 5.5・Sonnet 5で、既定値以外を送ると400エラーになります。Python SDK v1.0以降は型に定義がなく、渡すとTypeErrorになります。リクエストから外し、プロンプトで挙動を制御します- アシスタント末尾のprefill(事前入力)を送る: Opus 4.6以降のOpus(Opus 5.5を含む)・Fable 5.1・Sonnet 5では、アシスタントメッセージのprefillが400エラーになります。Sonnet 5.5は思考が既定でオンのため、同様に避けるのが安全です。Structured outputsかシステムプロンプトの指示に置き換えます
thinkingブロックを改変して送り返す: 直前のツール呼び出しに紐づくthinking・redacted_thinkingブロックは、中身が空文字列でも、改変や除外をせずそのまま送り返します。ブロックより前の履歴を書き換えて再送したときの400は、前の節のとおりです
11種類のエラーコードごとの対処とリトライ設計、SDKの型付き例外までを掘り下げた内容はClaude APIのエラーハンドリング設計にまとめています。
SDK — 主要7言語の使い分け
Anthropic公式はPython・TypeScript・Go・Java・C#・PHP・Rubyの7言語でSDKを提供しています。いずれもMessages APIとストリーミング・リトライ・型付きのエラー処理を備え、リクエスト構造は本記事のMessages APIの節がそのまま当てはまります。機能ごとの対応範囲はSDKによって差があるため、使う機能は各SDKのドキュメントで確認してください。
| SDK | インストール | 主用途 |
|---|---|---|
| Python | インストールpip install anthropic | 主用途データ分析・ML・バックエンド |
| TypeScript | インストールnpm install @anthropic-ai/sdk | 主用途Webアプリ・Node.js・フロントエンド |
| Go | インストールgo get github.com/anthropics/anthropic-sdk-go | 主用途高並行処理のバックエンド |
| Java | インストールMaven / Gradle(com.anthropic:anthropic-java) | 主用途エンタープライズJVM環境 |
| C# | インストールdotnet add package Anthropic | 主用途.NETアプリケーション(IChatClient連携あり) |
| PHP | インストールcomposer require "anthropic-ai/sdk" "guzzlehttp/guzzle:^7" | 主用途PHPのWebアプリ |
| Ruby | インストールbundle add anthropic | 主用途Railsなどのバックエンド |
エラーは各SDKが型付き例外を投げます。エラー文言の文字列マッチではなく、RateLimitErrorのような具体的な型を先に、汎用のAPIStatusErrorを後にキャッチします(Python SDKの例)。SDKは接続エラー・408・409・429・5xxを既定で2回まで自動リトライします。認証はAPIキー(ANTHROPIC_API_KEY)のほか、antCLIではant auth loginによるブラウザ経由のOAuthやWorkload Identity Federationにも対応しています。
SDK以外に、Anthropicはシェルからそのまま叩けるant CLI(タイプ付きフラグ、レスポンス変換に対応)と、Messages APIを直接呼ばずに他フレームワークの流儀でClaudeを使う2つの互換レイヤーを提供しています。OpenAI SDK compatibilityは、OpenAIのSDK・APIサーフェスのままClaudeを呼び出せる互換層です。Apple Foundation Modelsは、SwiftのLanguageModelSession APIからClaudeを呼ぶパッケージです。既存コードをOpenAI SDKやApple純正APIから大きく書き換えずに移行したい場面で候補になります。
Agent SDK・Managed Agentsとの関係
「Anthropic API」「Agent SDK」「Claude Code」「Claude Managed Agents」は名前が似ているために混同されがちですが、担っている層がまったく違います。
| 層 | 何を書くか | ループを回すのは誰か | ホスティングは誰か |
|---|---|---|---|
| Anthropic API(手動ループ) | 何を書くかwhile stop_reason == "tool_use"のループ自体 | ループを回すのは誰か自分 | ホスティングは誰か自分 |
| Tool Runner(SDKベータ) | 何を書くかツール関数だけ | ループを回すのは誰かSDK | ホスティングは誰か自分 |
| Claude Agent SDK | 何を書くかプロンプトとオプション | ループを回すのは誰かSDK(Claude Codeのハーネス) | ホスティングは誰か自分 |
| Claude Managed Agents | 何を書くかエージェント設定とツール結果 | ループを回すのは誰かAnthropic | ホスティングは誰かクラウド(Anthropic管理)またはself-hostedを選択 |
Anthropic APIの手動ループは自由度が最大な代わりに、承認ゲートやコンテキスト管理を自前で書く必要があります。Tool Runnerはそのループをラップし、エラー傍受や結果の加工(cache_controlの付与など)をフックとして提供します。人手の承認が要るときは手書きのループが向きます。Claude Agent SDKはこれとは別パッケージで、Claude Codeを動かしているツール・エージェントループ・コンテキスト管理をライブラリとして切り出したものです。ファイル操作・bash・grep・Web検索といった組み込みツール、コンテキスト管理、フック、サブエージェント、パーミッションまでを一式で提供します。Claude Managed Agentsはさらにその先で、ループはAnthropicがホストし、実行環境はAnthropic管理のクラウドサンドボックスか自前インフラ上のself-hostedサンドボックスから選びます。/v1/agentsでエージェント設定を作り、/v1/sessionsでセッションを開始する構成です(全エンドポイントがmanaged-agents-2026-04-01のベータヘッダーを要求するベータ機能)。
Managed Agentsの機能面はβ期間中も拡張が続いています。
| 機能 | 何をするか |
|---|---|
| Vaults | 何をするか認証情報(APIキー・OAuthトークン等)を保管・注入する |
| Environments | 何をするかセッションが動く実行環境(クラウドまたはself-hosted)を設定する |
| Scheduled deployments | 何をするかエージェントの定期実行(cronスケジュール)を組む |
| Webhooks | 何をするかセッションの完了・失敗をアプリ側へ通知する |
| Memory stores | 何をするかセッションをまたいで知識を蓄積する |
| Multiagent orchestration | 何をするか複数エージェントが同一サンドボックスを共有し並列作業する |
| Dreams(リサーチプレビュー) | 何をするか過去セッションのメモリストアを読み直し、重複や矛盾を整理し直す |
ステートフルに設計されているため、Managed AgentsはZero Data Retention(ZDR)やHIPAA BAAの対象外です。
エンタープライズ向けには、これとは別に管理機能も拡張されています。Workload Identity Federationは、静的なAPIキーの代わりに外部IdPの短期トークンで認証する仕組みです。ほかに、権限をグループ・ロール単位で管理するRBAC、利用状況を集計するAdmin API analytics、監査・データ取得のためのCompliance APIがあります。
Claude Code自身は内部でAnthropic APIを呼んでいます。デフォルトのモデルは環境によって異なりますが、/modelコマンドでSonnetやHaiku 4.5に切り替えられます(v2.1.284以降、Anthropic APIで使う場合のsonnetはSonnet 5.5を指します)。認証もAPIキーだけでなく、Claude.aiのMaxプランに紐づくOAuthでも動きます。トークン単価を直接管理したくない開発者は、この経路を選ぶことが多いです。
Agent SDKでエージェントを組み始める手順はAgent SDKクイックスタート、Slack連携などの実践例はAgent SDKでSlackボットを作るで扱っています。
マルチクラウド展開の選び方
ClaudeモデルはAnthropic直APIを含め、全部で5つの経路で利用できます。それぞれ運用元と請求が異なります。
| 経路 | 運用元 | モデルID形式 | 特徴 |
|---|---|---|---|
| Anthropic直API | 運用元Anthropic | モデルID形式claude-opus-5-5(素の文字列) | 特徴最新機能への直接アクセス、Anthropic請求 |
| Claude Platform on AWS | 運用元Anthropic(AWS上で運用) | モデルID形式claude-opus-5-5(接頭辞なし) | 特徴直APIと通常は同日でパリティ、AWS Marketplace請求(CCU単位) |
| Amazon Bedrock | 運用元AWS(パートナー運用) | モデルID形式anthropic.claude-opus-5-5(接頭辞あり) | 特徴AWSの請求と運用。対応する機能とライフサイクルの日付は独自 |
| Google Cloud | 運用元Google(パートナー運用) | モデルID形式claude-opus-5-5(接頭辞なし) | 特徴GCP統合、独自のエンドポイント体系(グローバル・マルチリージョン・リージョン) |
| Microsoft Foundry | 運用元Microsoft(Azure)。配置は「Hosted on Azure」と「Hosted on Anthropic」から選ぶ | モデルID形式claude-opus-5-5(接頭辞なし) | 特徴Azure Marketplace請求(CCU単位)。Hosted on Azureではcode executionやFiles APIなど一部の機能が使えない |
「Claude Platform on AWS」と「Amazon Bedrock」は名前が紛らわしいですが別物です。前者はAnthropicが運用し、新モデルは通常は直APIと同日に出ます。後者はAWSが運用し、対応する機能とライフサイクルの日付は別に決まります。MCP connectorやFiles APIのように、Bedrock・Google Cloudでは使えない機能が直APIやClaude Platform on AWSにはある、という非対称も珍しくありません。Foundryは、Message Batches APIとManaged Agentsが対象外です。使う機能ごとに対応状況を確認してから経路を選びます。
AUP — 利用規約上の留意点
Anthropic Acceptable Use Policy(AUP)はAPI利用時の禁止行為を定めています。
- 高リスク用途: 法律・医療・保険・金融・雇用や住宅の審査といった、消費者に直接届く助言・判断では、資格のある専門家による確認(Human-in-the-loop)と、AIを使っている旨の開示が求められます
- 禁止: 重要インフラの破壊や妨害、武器の開発、児童性的虐待コンテンツ、自傷の助長、マルウェアの作成は禁止です
- 政治: 有権者を欺く内容や、虚偽の情報による選挙・政治への介入は禁止です
商用利用時の権利関係やデータの扱いはClaudeの商用利用とデータ権利で整理しています。
まとめ
迷ったときの順序は、モデルを用途で決め、変わらない部分にcache_controlを付け、即時性の要らない処理をBatchへ逃がすことです。実装で最初に当たる壁は、400と429が「上限到達」を意味する場合があることなので、エラーのerror_codeとメッセージ冒頭で原因を切り分けます。