Claude Sonnet 5は2026年6月30日にリリースされ、Anthropicが発表した中で最もエージェント的なSonnetモデルです。ツール利用やコーディングタスクにおいてOpus 4.8に近い性能を発揮し、はるかに低価格であるため、ループ内でツールを呼び出すあらゆる用途に強力なデフォルトとして機能します。このガイドでは、Claude Sonnet 5 APIをエンドツーエンドで呼び出す方法を示します。具体的には、キーの取得、curlおよびPythonでの最初のリクエスト送信、応答の読み取り、新しい適応的思考のデフォルト処理、400エラーを返す3つのリクエスト変更の回避、長い出力のストリーミング、新しいトークナイザーでのトークンカウントが含まれます。
また、全体をApidogで設定することで、リクエストがシェル履歴に散らばることなく、保存された環境と自動テストを備えた再利用可能なコレクションに保存されます。Messages APIを以前に呼び出したことがある方なら、このほとんどがおなじみだと感じるでしょう。モデルIDはclaude-sonnet-5で、リクエストの形式はすでにお使いのものと一致します。
始める前に必要なもの
APIを呼び出すには3つのものが必要です。
- AnthropicアカウントとClaudeプラットフォームコンソールからのAPIキー。
- モデルID:
claude-sonnet-5。日付サフィックスのない正確な文字列です。 - HTTPリクエストを送信する方法。迅速なテストにはcurlが機能します。反復作業を行う際にはApidogがより効果的です。

Sonnet 5はすべてのAPI顧客に加え、Amazon Bedrock(AWS上のClaudeプラットフォーム経由)、Vertex AI経由のGoogle Cloud、およびプレビュー版のMicrosoft Foundryで利用可能です。このガイドでは、Anthropicの直接APIを使用します。リクエストボディはプラットフォーム間で同じであり、認証とエンドポイントホストのみが変更されます。
APIキーの取得
Claudeプラットフォームコンソールにサインインし、「APIキー」セクションを開いて新しいキーを作成します。一度コピーしたら安全な場所に保管してください。コンソールでは二度と表示されません。キーをソースコードにハードコードしたり、gitにコミットしたりしないでください。代わりに環境変数として設定してください。
export ANTHROPIC_API_KEY="sk-ant-..."
ZDR契約をご利用の場合、Sonnet 5はゼロデータ保持をサポートしているため、APIインターフェースに関して変更はありません。
最初のリクエスト
Sonnet 5 APIはAnthropicのMessagesエンドポイントを使用します。以下はcurlによる最小限のリクエストです。
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-sonnet-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Write a haiku about API testing."}
]
}'
Python SDKを使用した同じリクエストです。
import os
from anthropic import Anthropic
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "Write a haiku about API testing."}
],
)
print(message.content[0].text)
2つのフィールドが重要な役割を果たします。modelはSonnet 5を選択します。max_tokensは総出力を制限します。max_tokensはSonnet 4.6とは動作が異なるため、読み続けてください。これは最も間違いやすい点です。
応答の読み取り
成功した呼び出しは、以下のようなJSONボディ(一部省略)とともにHTTP 200を返します。
{
"id": "msg_01ABC...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-5",
"content": [
{"type": "text", "text": "Assertions green,\nendpoints answer on the first try,\nship the merge tonight."}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 18,
"output_tokens": 27
}
}
いくつかのフィールドが実務で重要になります。
contentは配列です。テキストはtypeが"text"のブロックに存在します。ツール利用や思考が有効な場合、同じ配列内に他のブロックタイプが表示されるため、反復処理を行ってください。content[0]が常にあなたの答えであると仮定しないでください。stop_reasonは生成が終了した理由を伝えます。end_turnは正常です。max_tokensは上限に達して出力が切り詰められたことを意味します。refusalは新しく、理解する価値があります(下記参照)。usageはinput_tokensとoutput_tokensを報告します。これが課金の対象となり、新しいトークナイザーのため、同じテキストでもSonnet 5では数値が高くなります。
拒否(refusal)の停止理由
Sonnet 5は、リアルタイムのサイバーセキュリティ保護機能を備えた初のSonnetティアモデルです。リクエストが禁止されている、またはリスクの高いサイバーセキュリティ関連のトピックに触れた場合、モデルは拒否することがあります。拒否はエラーではなく、stop_reason: "refusal"とともに通常のHTTP 200として返されます。失敗したHTTP呼び出しとして扱うのではなく、end_turn以外の停止理由を処理するのと同じ方法で、応答解析コードでこれを処理してください。
適応的思考がデフォルトで有効に
これはSonnet 4.6からの最大の動作変更であり、多くの人が戸惑う点です。Sonnet 4.6では、thinkingフィールドがない場合、思考は行われませんでした。Sonnet 5では、適応的思考がデフォルトで有効になっています。thinkingフィールドのないリクエストは、適応的思考とともに実行され、思考トークンが総出力に含まれます。
max_tokensは総出力(思考トークンと応答テキストの合計)に対する厳格な上限であるため、4.6で快適だったmax_tokensの値では、可視応答が完了する前に切り詰められる可能性があります。思考を使用せず、厳密なmax_tokensを設定していたワークロードを移行した場合、値を上げるか、切り詰めを覚悟してください。
思考を完全にオフにするには、次のようになります。
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "disabled"},
messages=[
{"role": "user", "content": "Return only the JSON, no reasoning."}
],
)
適応的思考を有効に保ち、モデルの動作強度を制御するには、手動でトークン予算を設定しようとするのではなく、`effort`パラメータを使用します。`effort`はlow、medium、high、xhighをサポートします。`effort`が高いほど、より深い思考とより多くのトークン消費を意味します。Anthropicは、適応的思考のページでこの動作を説明しています。フィールド値はbudget_tokensの数値ではなく、{"type": "adaptive"}であることに注意してください。
400エラーを返す3つのリクエスト変更点
Sonnet 4.6またはそれ以前のClaudeモデルからコードを移植する場合、以前は機能していた3つの変更点が400エラーを返すようになりました。移行する前にこれらを修正してください。
- 手動による拡張思考が削除されました。
thinking: {type: "enabled", budget_tokens: N}は400を返します。これは4.6でも既に非推奨でした。代わりに適応的思考と`effort`パラメータを使用してください。 - サンプリングパラメータは拒否されます。
temperature、top_p、またはtop_kをデフォルト以外の値に設定すると400が返されます。これらを削除してください。省略するか、デフォルトのままにするのは問題ありません。代わりにシステムプロンプトの指示で動作を制御してください。この制約はOpus 4.7以降では既に存在していましたが、Sonnetクラスでは今回が初めてです。 - アシスタントメッセージの事前入力はサポートされていません。 アシスタントの応答の開始部分を事前入力すると400が返されます。代わりに、構造化出力、
output_config.format、またはシステムプロンプトの指示を使用して出力を整形してください。
Sonnet 4.6で動作する他のすべての機能は、コード変更なしにSonnet 5でも動作します。リクエスト、応答、およびストリーミングの形式は同じです。より詳細な移行手順については、Sonnet 5が継承する同じリクエストインターフェースをカバーするClaude Sonnet 4.6 APIに関するガイドを参照してください。
大量出力のためのストリーミング
Sonnet 5は最大128,000トークンの出力をサポートします。長い応答の場合、または適応的思考によって総出力が高くなるリクエストの場合、結果をストリーミングすることで、完全な応答を待つことなく、生成されたトークンを順次取得できます。ストリーミングは、大規模な生成におけるクライアントのタイムアウトも回避します。
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=8000,
messages=[
{"role": "user", "content": "Draft an OpenAPI 3.1 spec for a bookstore checkout API."}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
ストリーミングイベントの形式はSonnet 4.6と同じであるため、既存のストリームハンドラは変更なく動作します。
新しいトークナイザーでのトークンカウント
Sonnet 5は新しいトークナイザーを使用しています。同じ入力テキストでも、Sonnet 4.6よりも約30%多くのトークン、つまり約1.3倍のトークンが生成されます。これはAPIの変更ではありません。リクエスト、応答、ストリーミングの形式は同じであり、これに関するコードの変更は不要です。しかし、トークンで測定または予算設定するあらゆるものに影響を与えます。
- 同じテキストであっても、
usageの数値とトークンカウントの結果が高くなります。Sonnet 4.6のカウントを再利用せず、Sonnet 5で再カウントしてください。 - 各トークンがカバーするテキスト量が減少したため、1,000,000トークンのコンテキストウィンドウには平均して少ないテキストしか含まれなくなります。
- 期待される出力に近い
max_tokensの値は、現在では切り詰められる可能性があります。再検討してください。 - トークンあたりの価格は変わらないにもかかわらず、同等のテキストに対するリクエストごとのコストが高くなる可能性があります。
送信前に`count-tokens`エンドポイントを使用することで、Sonnet 5の実際の数値に基づいて予算を立てることができます。
count = client.messages.count_tokens(
model="claude-sonnet-5",
messages=[
{"role": "user", "content": "Estimate the tokens for this prompt on Sonnet 5."}
],
)
print(count.input_tokens)
Anthropicは、トークンカウントのページでこれを説明しています。
エラー、レート制限、および費用の基礎
標準的なHTTPセマンティクスが適用されます。400は不正なリクエストを意味します(上記の3つの変更点がSonnet 5での主な原因です)。401は不正または不足しているAPIキーを意味します。429はレート制限に達したことを意味します。retry-afterヘッダーを読み取り、再試行する前に待機してください。拒否はエラーではなく200であるため、再試行ロジックを介して処理しないように注意してください。
料金については、導入期間として2026年8月31日までは、入力トークン100万あたり2ドル、出力トークン100万あたり10ドルです。その後は、標準の入力100万あたり3ドル、出力100万あたり15ドルに移行し、Sonnet 4.6と同じトークンあたりの料金になります。トークナイザーの変更により、トークンあたりの料金は一致しても、同等のテキストでのリクエストコストは4.6よりも高くなる可能性があるため、均一な同等性を仮定するのではなく、トークンカウントを使用して実際のワークロードをモデル化してください。詳細なコストの解説については、Claude APIコストの内訳とClaude APIレート制限ガイドをご覧ください。Sonnet 5ではPriority Tierは利用できません。
ApidogでSonnet 5の呼び出しをテストおよび整理する
最初のcurlコマンドを越えたら、リクエストを保存し、キーを一度保存し、応答を自動的にチェックしたいと思うでしょう。そこでApidogの出番です。これはオールインワンのAPIプラットフォームであるため、手動で送信する同じリクエストが、再利用可能でテスト可能なアセットになります。Apidogをダウンロードして手順に従ってください。
以下は、Sonnet 5 APIの実際的な設定です。
1. リクエストを作成する。 Apidogで新しいHTTPリクエストを追加します。メソッドをPOSTに、URLをhttps://api.anthropic.com/v1/messagesに設定します。ヘッダーにanthropic-version: 2023-06-01とcontent-type: application/jsonを追加します。JSONボディには"model": "claude-sonnet-5"を貼り付けます。
2. APIキーを環境変数として保存する。 環境(例:「Anthropic Production」)を作成し、ANTHROPIC_API_KEYという名前の変数を追加します。x-api-keyヘッダーで{{ANTHROPIC_API_KEY}}として参照します。これにより、キーはリクエストボディとは別の1箇所に保存され、リクエストを編集することなく環境を切り替えることができます。
3. コレクションに保存する。 Sonnet 5のリクエスト、通常のメッセージ呼び出し、ストリーミング呼び出し、ツール呼び出しを1つのコレクションにグループ化します。これにより、チーム全体がcurlスニペットをコピーし回すことなく、同じ既知の良好なリクエストを利用できます。
4. 自動テストを追加する。 リクエストにアサーションを付加し、何らかの逸脱があった場合にテストが明確に失敗するようにします。例えば、次のようになります。
- 応答ステータスが
200であることをアサートする。 modelがclaude-sonnet-5と等しいことをアサートする。stop_reasonが存在し、max_tokensではないことをアサートする(トークナイザー変更後の切り詰めを素早く検出する方法)。usage.output_tokensが0より大きいことをアサートする。
これらをテストシナリオに連結し、プロンプトを変更したりモデルバージョンを移行したりするたびにCIで実行します。最後のアサーションは、適応的思考がデフォルトで有効になったことによって引き起こされるmax_tokensの回帰を検出する最も安価な方法です。
5. エンドポイントをモックする。 Apidogのスマートモックは、Messagesの形式に対して現実的な応答を返すため、アプリのクライアントコード、エラー処理、およびストリーミングパーサーを1トークンも消費せずに構築・テストできます。これは、フロントエンド作業や自身の統合レイヤーの負荷テストに役立ちます。
Postmanから移行する場合、2026年におけるPostmanなしでのAPIテストに関する我々の見解は、1つのツールで設計、テスト、モックのワークフローを組み合わせることで往復を節約できる理由を説明しています。ターミナルを好む場合、Apidog CLI完全ガイドは、これらの保存されたテストをパイプラインで実行する方法を示しています。
FAQ(よくある質問)
Claude Sonnet 5のモデルIDは何ですか?
claude-sonnet-5です。日付サフィックスのない正確な文字列です。Messagesリクエストのmodelフィールドで使用してください。これはclaude-sonnet-4-6のドロップイン代替であるため、ほとんどの場合、モデルIDを変更し、次の3点を再確認します:適応的思考がデフォルトで有効になったこと、削除されたサンプリングパラメータ、および削除された手動思考予算。このモデルの全体像については、Claude Sonnet 5とは何かをお読みください。
Sonnet 5でmax_tokensの出力が途切れるのはなぜですか?
適応的思考がデフォルトで有効になっており、思考トークンは応答テキストとともにmax_tokensの対象となります。Sonnet 4.6で思考なしのワークロード向けに調整されていた上限値の場合、それを引き上げるか、思考を一切行いたくない場合はthinking: {"type": "disabled"}を設定してください。新しいトークナイザーは同じテキストに対して約30%多くのトークンを生成するため、この影響は増大します。
Sonnet 4.6から移行するためにコードを変更する必要がありますか?
3箇所だけです。デフォルト以外のtemperature、top_p、top_kを削除してください。thinking: {type: "enabled", budget_tokens: N}を削除してください。アシスタントメッセージの事前入力を削除してください。これらはいずれもSonnet 5では400を返します。ストリーミングや応答形式を含む他のすべては変更ありません。Opusも実行している場合、弊社のOpus 4.8 APIガイドは同じMessagesインターフェースを使用しています。
拒否(refusal)は捕捉すべきエラーですか?
いいえ。サイバーセキュリティによる拒否は、stop_reason: "refusal"とともにHTTP 200を返します。失敗したリクエストとしてではなく、end_turn以外の停止理由を持つ通常の応答として扱ってください。エラー時の再試行パスを介して送信しないでください。
Sonnet 5 APIの費用はいくらですか?
導入価格は、2026年8月31日まで、入力トークン100万あたり2ドル、出力トークン100万あたり10ドルです。その後は、入力100万あたり3ドル、出力100万あたり15ドルになります。トークンあたりの料金はSonnet 4.6と同じですが、新しいトークナイザーのため、同等のテキストでもコストが高くなる可能性があるため、同等性を仮定するのではなく、トークンカウントで測定してください。
