Anthropic API完全ガイド — モデル選択・料金・実装まで
Anthropic APIはClaudeモデルへ直接アクセスする公式API。モデル選択と料金、Messages APIの構造、Tool use、Prompt caching、Batch、MCP connectorまでを扱います。
Claude.aiのチャットもClaude Codeのターミナルも、裏側で叩いているのは同じ1本のエンドポイントです。Anthropic APIは、Claudeのモデル群(Fable 5・Opus 5・Sonnet 5・Haiku 4.5)へ直接アクセスする公式APIで、開発者はこれをトークン単位の従量課金で自分のアプリケーションに組み込めます。
この記事では、モデル選択と料金体系、Messages APIのリクエスト構造を扱います。続いてTool use・思考の深さの制御・ストリーミングという実行系の機能を解説します。Prompt caching・Batch API・Structured outputs・Files API・MCP connectorというコストと拡張の機能も扱います。最後にレート制限・エラー処理・SDK、そしてAgent SDK・Managed Agentsとの関係までをカバーします。
Anthropic APIとは
Anthropic APIはHTTPS・JSONベースのRESTful APIで、エンドポイントはhttps://api.anthropic.comです。中核はMessages API(POST /v1/messages)で、モデル名・メッセージ列・システムプロンプト・ツール定義を渡すとClaudeが応答を返します。
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で発行します。コンソールアカウントを作成し、Account SettingsでAPIキーを生成すればそのまま使えます。有効期限はキー発行時に選べます。
最小構成のリクエストは次のとおりです。
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",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "こんにちは"}
]
}'必須ヘッダーは3つです。x-api-keyまたはAuthorization(いずれか一方。後者はWorkload Identity Federation経由のBearerトークン)、anthropic-version(APIのバージョン、例: 2023-06-01)、content-type(application/json)。公式SDKを使えばこれらは自動で付与されます。
Python SDKでの最小例です。
import anthropic
client = anthropic.Anthropic() # ANTHROPIC_API_KEY 環境変数を自動で読む
message = client.messages.create(
model="claude-opus-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系統です。知能の深さ・速度・コストのトレードオフがそれぞれ異なります。
| モデル | 単価(input / output、per 1M tokens) | コンテキスト・最大出力 | 選ぶ基準 |
|---|---|---|---|
| Claude Fable 5 | 単価(input / output、per 1M tokens)$10 / $50 | コンテキスト・最大出力1M・128k | 選ぶ基準Opus 5でも届かない、最長時間の自律タスクだけに絞る |
| Claude Opus 5 | 単価(input / output、per 1M tokens)$5 / $25 | コンテキスト・最大出力1M・128k | 選ぶ基準複雑なエージェント開発・深い推論・コードレビューの主力 |
| Claude Sonnet 5 | 単価(input / output、per 1M tokens)$2 / $10(〜2026年8月末、以降$3 / $15) | コンテキスト・最大出力1M・128k | 選ぶ基準汎用最強。標準的な執筆・調査・製品統合の大半をここで賄う |
| Claude Haiku 4.5 | 単価(input / output、per 1M tokens)$1 / $5 | コンテキスト・最大出力200k・64k | 選ぶ基準明確な判定基準がある抽出・採点・軽量バッチ |
モデルIDは正確な文字列で指定します。Fable 5はclaude-fable-5、Opus 5はclaude-opus-5、Sonnet 5はclaude-sonnet-5、Haiku 4.5はclaude-haiku-4-5(内部的にはclaude-haiku-4-5-20251001に解決)です。日付サフィックスを勝手に付け足すと404になります。
思考の挙動はモデルごとに違います。Fable 5は常にAdaptive thinkingがオンで、thinkingの指定は不要です。{"type": "disabled"}と{"type": "enabled", "budget_tokens": N}はどちらも400になり、思考をオフにはできません。思考の要約を見たいときは{"type": "adaptive", "display": "summarized"}を指定します。Opus 5もデフォルトでオン(Opus 4.8・4.7からの変更点)で、thinking: {"type": "disabled"}はeffortがhigh以下のときだけ受け付けられます。Sonnet 5は{"type": "adaptive"}だけがオンモードで、thinkingを省略してもAdaptive thinkingで走ります。Haiku 4.5だけがAdaptive thinkingに対応せず、旧来のbudget_tokens指定によるExtended thinkingのみ使えます。
Fable 5・Mythos 5は30日以上のデータ保持が必須で、Zero Data Retention(ZDR)を選べません。この要件を満たさない組織がリクエストを送ると、ペイロードが正しくても400 invalid_request_errorが返ります。
モデル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%割引)。書き込みTTLと同じ期間有効 |
| Batch API | 単価の考え方input・outputともに50%割引 |
Prompt cachingの読み取り割引とBatch APIの50%割引は重ね掛けできます。キャッシュ単体でも、1時間TTLを2回読めば書き込み2倍のコストを読み取り0.1倍×2で相殺して黒字化し、5分TTLなら読み取り1回で黒字化する計算です。
Sonnet 5には2026年8月31日までの導入価格が設定されています。input $2 / output $10(通常価格は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 / tool_use / pause_turn / refusalのいずれかで終了理由を示します。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・Opus 5・Sonnet 5では廃止され、Adaptive thinking({"type": "adaptive"})とoutput_config.effortの組み合わせに一本化されています。
effortはlow / medium / high / xhigh / maxの5段階(Haiku 4.5は非対応)で、深さとコストのトレードオフを制御します。APIの既定はhighで、effortを省略した場合と同じです。コーディングやエージェント的なタスクではxhighの明示指定が出発点として推奨されており、抽出・分類のような決まったパターン処理はlow〜mediumで足ります。
thinking.displayはデフォルトで"omitted"(思考ブロックは返るが中身は空文字列)です。ユーザーに思考の要約を見せたい場合はdisplay: "summarized"を明示します。生の思考過程がそのまま返ることはどのモデルでもありません。
旧モデルのbudget_tokens指定コードをFable 5・Opus 5・Sonnet 5にそのまま持ち込むと400エラーになります。移行手順はClaudeモデル移行ガイドにまとめています。
Tool use(Function calling)の実装
Tool useは、ツールの仕様をClaudeに渡し、Claudeが「このツールをこの引数で呼びたい」と判断してリクエストを返す仕組みです。ツールには2種類あります。クライアントツール(ユーザー定義ツール、bash・text editorなどAnthropic定義ツール)はアプリケーション側が実行し、サーバーツール(web_search・web_fetch・code_executionなど)はAnthropicのインフラ上で実行され、結果がそのまま返ります。
{
"model": "claude-opus-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トークンです。ツールを1つも渡さなければこの加算はありません。
自分でループを書く代わりに、SDKのTool Runner(client.beta.messages.tool_runner)を使うと、リクエスト→実行→ループの往復を自動化できます。承認ゲートやエラー傍受も、ツール実行関数の中でハンドリングできるので、手書きループが必要になる場面は限られます。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で深掘りしています。
ストリーミング(SSE)の実装
stream: trueを指定すると、Server-Sent Events形式で応答がチャンク単位で返ります。イベントの流れは固定です。message_start(空のcontentを持つMessageオブジェクト)→ コンテンツブロックごとのcontent_block_start / content_block_delta(複数)/ content_block_stop → message_delta(トークン数などの更新)→ message_stop。
const stream = client.messages.stream({
model: "claude-sonnet-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%割引)で、頻繁な再利用がある構成ではコストへの効き目が最も大きい仕組みです。
{
"model": "claude-sonnet-5",
"system": [
{
"type": "text",
"text": "あなたは...(長いシステムプロンプト)",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [{"role": "user", "content": "..."}]
}cache_control: {"type": "ephemeral"}を付けたブロックがキャッシュ対象になります。既定のTTLは5分、ttl: "1h"を指定すれば1時間に延長できます。1時間TTLはキャッシュ書き込みが2倍コストになる代わりに、12倍長くキャッシュが生き残ります。
キャッシュ対象になる最小トークン数はモデルによって違います。Opus 5・Fable 5・Mythos 5は512トークン、Sonnet 5は1,024トークンからキャッシュできる一方、Haiku 4.5は4,096トークンからしかキャッシュされません。最も安いモデルが最も長いプロンプトを要求するという逆転が起きているので、Haiku 4.5でキャッシュを設計するときは注意が必要です。短いプロンプトはエラーにならず黙ってキャッシュされないだけなので、usage.cache_read_input_tokensが0のままなら最小長を疑います。
キャッシュのプレフィックスマッチは厳密です。tools → system → messagesの順でレンダリングされ、途中の1バイトでも変わると、そこから先のキャッシュはすべて無効になります。日時やUUIDをシステムプロンプトの先頭付近に埋め込むと、キャッシュが実質機能しなくなります。
Batch APIの50%割引とキャッシュの割引は重ね掛けできます。実装の詳細はPrompt caching完全活用にまとめています。
Batch API — 50%割引のバルク処理
Batch APIは即時性を捨てる代わりに、input・output両方が50%割引になる非同期処理です。POST /v1/messages/batchesに対して最大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をキーにします。用途は数千〜数万件の記事生成・採点・抽出、月次レポート、大量翻訳などです。制限値と実装手順、つまずきどころは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",
"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
}
}
}
}'対応モデルはClaude 4.5以降とMythos Preview系です(Bedrock・Google Cloudでは対応モデルの範囲が異なります)。additionalProperties: falseが必須で、minLengthやmultipleOfのような数値・文字列の制約はサポート外です。推奨の呼び出し方はclient.messages.parse()で、レスポンスをスキーマに沿って自動検証してくれます。ツール呼び出しのスキーマだけ厳密にしたいなら、ツール定義にstrict: trueを付けるStrict tool useのほうが軽量です。tool useとの使い分けを含めた実装手順はClaude JSONモードの使い方で扱っています。
Files API — 画像・PDF・データセットの再利用
Files APIは、ファイルを一度アップロードしてfile_idで使い回す仕組みです。ベータのためanthropic-beta: files-api-2025-04-14ヘッダーが必要です(SDKのbeta.files名前空間経由なら自動付与されます)。
| 項目 | 値 |
|---|---|
| 1ファイルの最大サイズ | 値500MB |
| 組織あたりの総ストレージ | 値500GB |
| アップロード・ダウンロード・一覧・削除 | 値すべて無料 |
| メッセージで参照したファイルの内容 | 値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は非推奨)。
{
"model": "claude-opus-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(Hosted on Anthropic配置のみ)で、Amazon BedrockとGoogle Cloudでは現状使えません。この対応状況はサーバーツール(web search・code execution)とは別なので、使いたい機能ごとに確認してから経路を選びます。
レート制限 — Start・Build・Scaleティア
レート制限は組織単位のティア制です。利用実績に応じてStart → Build → Scaleへ自動的に上がり、それぞれ月あたりの支出上限(Start $500・Build $1,000・Scale $200,000)も設定されています。上限を超える場合はカスタムティアとして個別に交渉します。
| ティア | Fable 5(RPM / ITPM / OTPM) | Opus 5(RPM / ITPM / OTPM) |
|---|---|---|
| Start | Fable 5(RPM / ITPM / OTPM)1,000 / 500,000 / 100,000 | Opus 5(RPM / ITPM / OTPM)1,000 / 2,000,000 / 400,000 |
| Build | Fable 5(RPM / ITPM / OTPM)2,000 / 1,500,000 / 300,000 | Opus 5(RPM / ITPM / OTPM)5,000 / 5,000,000 / 1,000,000 |
| Scale | Fable 5(RPM / ITPM / OTPM)4,000 / 4,000,000 / 800,000 | Opus 5(RPM / ITPM / OTPM)10,000 / 10,000,000 / 2,000,000 |
Fable 5とOpus 5とSonnet 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の計算に含まれません。つまりキャッシュヒット率を上げると、同じ実効スループットをより少ないレート制限消費で処理できます。
429エラーが返ったらretry-afterヘッダーの秒数だけ待ってから再試行します。SDKは429と5xxを最大2回まで自動リトライします。具体的な対処手順は429・Overloadedエラーの対処法にまとめています。
エラーハンドリングと落とし穴
| コード | エラータイプ | 主な原因 | 対処 |
|---|---|---|---|
| 400 | エラータイプinvalid_request_error | 主な原因パラメータ不正・非対応の組み合わせ | 対処リクエスト形式を修正。リトライ不要 |
| 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以降とSonnet 5では、これらを既定値以外にすると400エラーになります(Haiku 4.5ではtemperatureとtop_pはどちらか一方だけ指定できます)。SDKの型定義にはフィールドが残っているため型チェックは通りますが、サーバー側で拒否されます。プロンプトで挙動を制御しますthinking: {"type": "enabled", "budget_tokens": N}を現行モデルに送る: Opus 4.7以降とSonnet 5・Fable 5では拒否されます。{"type": "adaptive"}とoutput_config.effortに置き換えます- アシスタント末尾のprefill(事前入力)を送る: 現行モデルではアシスタントメッセージのprefillが400エラーになります。Structured outputsかシステムプロンプトの指示に置き換えます
thinkingブロックを改変して送り返す: 直前のツール呼び出しに紐づくthinking・redacted_thinkingブロックは、中身が空文字列でもそのまま送り返す必要があります。フィルタして除外すると400になります- ストリーミングなしで
max_tokensを大きく取る: SDKの非ストリーミングリクエストは10分のタイムアウト見込みを検証しており、これを超えそうな設定はストリーミングへの切り替えが必要です。128kまで出したいときはストリーミングが必須です
11種類のエラーコードごとの対処とリトライ設計、SDKの型付き例外までを掘り下げた内容はClaude APIのエラーハンドリング設計にまとめています。
SDK — 主要7言語の使い分け
Anthropic公式はPython・TypeScript・Go・Java・C#・PHP・Rubyの7言語でSDKを提供しています。いずれもMessages API・Tool use・Streaming・Prompt caching・Adaptive thinking・Batchをフルサポートし、リクエスト構造は本記事のMessages APIの節がそのまま当てはまります。
| 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環境 |
エラーは各SDKが型付き例外を投げます。文字列マッチではなく、NotFoundError → RateLimitError → APIStatusError → APIConnectionErrorのように具体的な型から順にキャッチするのが公式の推奨パターンです。認証はAPIキー(ANTHROPIC_API_KEY)のほか、ant auth loginによるOAuthプロファイルやWorkload Identity Federationにも対応しています。
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はそのループをラップし、承認・エラー傍受・キャッシュ制御をフックとして提供します。Claude Agent SDKはこれとは別パッケージで、Claude Codeを動かしているツール・エージェントループ・コンテキスト管理をライブラリとして切り出したものです。ファイル操作・bash・grep・Web検索といった組み込みツール、コンテキスト管理、フック、サブエージェント、パーミッションまでを一式で提供します。Claude Managed Agentsはさらにその先で、ループはAnthropicがホストし、実行環境はAnthropic管理のクラウドサンドボックスか自前インフラ上のself-hostedサンドボックスから選びます。/v1/agentsでエージェント設定を作り、/v1/sessionsでセッションを開始する構成です。
Claude Code自身は内部でAnthropic APIを呼んでいます。デフォルトのモデルは環境によって異なりますが、/modelコマンドでOpus 5・Sonnet 5・Haiku 4.5に切り替え可能です。認証もAPIキーだけでなく、Claude.aiのMaxプランに紐づくOAuthでも動きます。トークン単価を直接管理したくない開発者は、この経路を選ぶことが多いです。
Agent SDKでエージェントを組み始める手順はAgent SDKクイックスタート、Slack連携などの実践例はAgent SDKでSlackボットを作るで扱っています。
マルチクラウド展開の選び方
ClaudeモデルはAnthropic直APIを含め、全部で4つの経路で利用できます。それぞれ運用元と価格体系が異なります。
| 経路 | 運用元 | モデルID形式 | 特徴 |
|---|---|---|---|
| Anthropic直API | 運用元Anthropic | モデルID形式claude-opus-5(素の文字列) | 特徴最新機能への直接アクセス、Anthropic請求 |
| Claude Platform on AWS | 運用元Anthropic(AWS上で運用) | モデルID形式claude-opus-5(接頭辞なし) | 特徴直APIと通常は同日でパリティ、AWS Marketplace請求(CCU単位) |
| Amazon Bedrock | 運用元AWS(パートナー運用) | モデルID形式anthropic.claude-opus-5(接頭辞あり) | 特徴AWSのリリーススケジュールに従う、機能サブセット |
| Google Cloud(Vertex AI) | 運用元Google(パートナー運用) | モデルID形式claude-opus-5(接頭辞なし) | 特徴GCP統合、独自のリージョン体系 |
「Claude Platform on AWS」と「Amazon Bedrock」は名前が紛らわしいですが別物です。前者はAnthropicが運用し直APIと同日に新機能が出る一方、後者はAWSが運用し機能追加のタイミングが遅れることがあります。MCP connectorやFiles APIのように、Bedrock・Google Cloudでは未対応の機能が直APIやClaude Platform on AWSにはある、という非対称も珍しくありません。使う機能ごとに対応状況を確認してから経路を選びます。
AUP — 利用規約上の留意点
Anthropic Acceptable Use Policy(AUP)はAPI利用時の禁止行為を定めています。
- advice / recommendationsカテゴリ: 医療・法律・金融・人材判断のような強い助言はHuman-in-the-loopが必須です
- 高リスク用途: インフラ制御・致死性の判断・武器関連は禁止です
- コンテンツ: 児童性的虐待・自殺扇動・マルウェア生成・大規模偽情報は禁止です
- 政治広告・選挙影響操作には制限があります
商用利用時の権利関係やデータの扱いはClaudeの商用利用とデータ権利で整理しています。
よくある質問
Q. Anthropic APIとClaude.aiの違いは?
Claude.aiはAnthropic公式のチャットUI(Web・Desktop・Mobile)で、Pro・Team・Maxの月額課金です。Anthropic APIは開発者向けのAPIで、トークン単位の従量課金です。両者は裏側で同じClaudeモデルを使いますが、課金体系とアクセス方法が違います。
Q. Claude CodeはAnthropic APIを使っていますか?
はい。Claude Codeは内部でAnthropic APIを呼び出しています。Agent SDKは、この呼び出しを支えるツール・エージェントループ・コンテキスト管理をライブラリとして切り出したものです。/modelコマンドでモデルを切り替えられ、認証はAPIキーのほか、Claude.aiのMaxプランに紐づくOAuthでも可能です。
Q. Prompt cachingとBatch APIは併用できますか?
できます。Prompt cachingの割引(読み取り0.1倍)とBatch APIの割引(50%)は重ね掛けされ、両方を組み合わせると累計コストを大きく下げられます。
Q. Adaptive thinkingとExtended thinkingの違いは?
Extended thinkingはbudget_tokensでトークン数の上限を明示する旧方式で、Haiku 4.5など一部のモデルにしか残っていません。Adaptive thinkingはClaude自身が思考の深さを判断する方式で、Fable 5・Opus 5・Sonnet 5ではこちらに一本化されています。
Q. どのモデルを選べばよいですか?
汎用的な作業ならSonnet 5、判断軸が複雑な開発やレビューにはOpus 5、明確な判定基準がある抽出・分類作業にはHaiku 4.5が向きます。Opus 5でも足りない最難関のタスクだけFable 5に絞ります。
Q. Claude Managed AgentsとAgent SDKはどう違いますか?
どちらもエージェントの実行ハーネスを提供しますが、Agent SDKはハーネスだけで、実行環境のホスティングは自分で用意します。Claude Managed AgentsはループをAnthropicがホストし、実行環境はAnthropic管理のクラウドサンドボックスか自前インフラ上のself-hostedサンドボックスから選びます。
Q. レート制限に達したらどうすればよいですか?
429エラーのretry-afterヘッダーの秒数だけ待ってから再試行します。恒常的に到達するならPrompt cachingでITPM消費を減らすか、Consoleの「Request rate limit increase」からティアの引き上げを申請します。
Q. 無料トライアルはありますか?
新規ユーザーには少額の無料クレジットが付与されます。エンタープライズ評価向けの拡張トライアルは営業チームへの問い合わせが必要です。
まとめ
Anthropic APIは、モデル選択・Tool use・Prompt caching・Batch・Structured outputs・MCP connectorを組み合わせて、コストと柔軟性を両立させるプラットフォームです。設計判断の軸は3つに集約されます。
- モデルを用途で分ける: Sonnet 5を基準に、複雑な判断だけOpus 5、抽出・分類はHaiku 4.5に振り分けます
- 変わらない部分をキャッシュする: システムプロンプト・ツール定義・RAGコンテキストにcache_controlを付けるだけで、input単価が実質10分の1になります
- 即時性が要らない処理はBatchに逃がす: 50%割引と引き換えに、最大24時間の非同期実行を受け入れます
Agent SDKやClaude Managed Agentsへ進む前提知識としても、まずはMessages APIの構造とレート制限・エラーの型を正確に押さえておくと、上位レイヤーでの判断が速くなります。
関連する記事
Anthropic をもっと見る →Agent SDKのManaged Agentsの設計思想 — セッション/ハーネス/サンドボックス分離
長時間稼働エージェントのハーネス設計 — Anthropic engineeringが示す失敗モードと対処パターン
think toolとは — Claudeに考える間を与える設計とextended thinkingの使い分け
Anthropicのマルチエージェント研究システム — Claude Researchを支える分業設計と9割向上の内訳
Claude APIのエラーハンドリング設計 — コード別対処とリトライ実装
Anthropicのハーネス設計 — Planner/Generator/Evaluatorの三段構成