Claude APIのエラー
Claude APIが返すHTTPステータスコード、エラーレスポンスの形式、リクエストIDを理解し、SDKの型付き例外でエラーを処理します。
HTTPエラー
APIは予測可能なHTTPエラーコード形式に従います。
-
400 -
invalid_request_error:リクエストの形式または内容に問題がありました。このエラータイプは、このセクションに記載されていない他の4XXステータスコードにも使用される場合があります。また、使用量が組織またはワークスペースに設定した支出制限に達した場合にも、APIは400を返します。ただし、Claude Codeワークスペースの制限は例外で、代わりに429を返すことがあります。 -
401 -
authentication_error:APIキーに問題があります(たとえば、形式が不正である、取り消されている、または有効期限が切れているなど。キーの有効期限を参照してください)。Claude Platform on AWSでは、AWS認証情報またはSigV4署名の問題を示している場合もあります。 -
402 -
billing_error:請求情報または支払い情報に問題があります。Claude Consoleで、またはClaude Platform on AWSを使用している場合はAWS Marketplaceで、支払いの詳細を確認してください。 -
403 -
permission_error:APIキーに、指定されたリソースを使用する権限がありません。Claude Consoleで組織のアクセス設定とワークスペース設定を確認してください。 -
404 -
not_found_error:リクエストされたリソースが見つかりませんでした。エンドポイントのパスと、リクエストURL内のリソースIDを確認してください。 -
409 -
conflict_error:リクエストがリソースの現在の状態と競合しています。たとえば、リソースが同時に変更された場合や、一意である必要がある値がすでに使用されている場合です。競合を解決してから、リクエストを再試行してください。 -
413 -
request_too_large:リクエストが許可されている最大バイト数を超えています。エンドポイントごとの上限についてはリクエストサイズ制限を参照してください。 -
429 -
rate_limit_error:組織が「rate limit」(レート制限)に達したか、使用量ティアの月間支出上限に達したか、Claude Codeワークスペースの支出制限に達しました。ティアの支出上限による429にはretry-afterヘッダーがなく、アクセスが再開されるまで失敗し続けます。見分け方については使用量上限に達した場合を参照してください。 -
500 -
api_error:Anthropicのシステム内部で予期しないエラーが発生しました。「exponential backoff」(指数バックオフ)を使用してリクエストを再試行してください。エラーが解消しない場合は、リクエストIDを添えてサポートにお問い合わせください。 -
504 -
timeout_error:処理中にリクエストがタイムアウトしました。長時間実行されるリクエストには、ストリーミングMessages APIの使用を検討してください。その他のオプションについては長時間のリクエストを参照してください。 -
529 -
overloaded_error:APIが一時的に過負荷状態です。
公式SDKは、一時的な障害(接続エラー、レート制限、5xxサーバーエラーなど)を指数バックオフで自動的に再試行します。デフォルトでは2回再試行し、retry-afterヘッダーが存在する場合はそれに従います。SDKクライアントはmax_retriesを受け付け、この動作を設定または無効化できます。
「server-sent events」(サーバー送信イベント)、すなわちSSEを介してストリーミングレスポンスを受信する場合、APIが200レスポンスを返した後にエラーが発生することがあります。その場合、エラー処理はこれらの標準的な仕組みに従いません。ストリーム途中のエラーの形式についてはエラーイベントを参照してください。
リクエストサイズ制限
APIはリクエストサイズ制限を適用します。
これらの制限を超えると、413 request_too_largeエラーが返されます。直接のClaude APIでは、リクエストがAPIサーバーに到達する前にCloudflareがこのエラーを返します。
エラーの形式
APIは常にエラーをJSONとして返します。トップレベルのerrorオブジェクトには常にtypeとmessageの値が含まれます。レスポンスには、追跡とデバッグを容易にするためのrequest_idフィールドも含まれます。例:
{
"type": "error",
"error": {
"type": "not_found_error",
"message": "The requested resource could not be found."
},
"request_id": "req_011CSHoEeqs5C35K2UUqR7Fy"
}バージョニングポリシーに従い、これらのオブジェクト内の値は拡張される可能性があり、typeの値が時間とともに増える可能性があります。
SDKのエラータイプ
公式SDKは、生のJSONを返す代わりに、これらのエラーに対して型付き例外を発生させます。たとえば、404はanthropic.NotFoundErrorとして通知されます。Go SDKにはすべてのステータスに対して1つのエラータイプ*anthropic.Errorがあるため、StatusCodeで分岐してください。エラーメッセージを文字列照合するのではなく、SDKの型付きクラスをキャッチし、最も具体的なクラスから先に処理してください。例外階層の全体は、各SDKのページに記載されています。
リクエストID
すべてのAPIレスポンスには一意のrequest-idヘッダーが含まれます。このヘッダーにはreq_018EeWyXxfu5pfWkrYcMdjWGのような値が含まれます。同じ識別子がエラーレスポンス本文のrequest_idフィールドにも表示されます。特定のリクエストについてサポートに問い合わせる際は、問題を迅速に解決できるようこのIDを含めてください。
Claude Platform on AWSでは、レスポンスに2つのリクエストIDが含まれます。AWSリクエストID(x-amzn-requestid、プライマリ、CloudTrailでインデックス化)とAnthropicリクエストID(request-id、セカンダリ)です。CloudTrailの検索にはAWSリクエストIDを、AnthropicのサポートチケットにはAnthropicリクエストIDを使用してください。
PythonおよびTypeScript SDKでは、トップレベルのレスポンスオブジェクトの_request_idプロパティからリクエストIDを取得できます。C#、Go、Java、PHP SDKでは生レスポンスのアクセサーから、Ruby SDKではミドルウェアから取得できます。Ruby以外のすべてのSDKでは、with_raw_responseを使用すると、anthropic-organization-idやanthropic-workspace-idなど、その他のレスポンスヘッダーも読み取れます。Rubyでは、同じミドルウェアを使用してください。Claude Platform on AWSでは、生レスポンスのアクセサーを使用してAWSリクエストID(x-amzn-requestid)も読み取れます。
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(f"Request ID: {message._request_id}")他の言語でのClaude Platform on AWSのリクエストIDの例については、リクエストIDを参照してください。
長時間のリクエスト
ストリーミングMessages API
またはMessage Batches APIを使用せずに、大きなmax_tokens値を設定することは避けてください。
- 一部のネットワークでは、一定時間が経過するとアイドル状態の接続が切断されることがあり、 その結果、Anthropicからレスポンスを受信せずにリクエストが失敗またはタイムアウトする可能性があります。
- ネットワークの信頼性はさまざまです。Message Batches APIを使用すると、 途切れないネットワーク接続を必要とせずに結果をポーリングできるため、ネットワーク問題のリスクを管理するのに役立ちます。
直接のAPI統合を構築している場合、TCPソケットのキープアライブを設定すると、一部のネットワークでアイドル接続のタイムアウトによる影響を軽減できます。
SDKは、非ストリーミングのMessages APIリクエストが10分のタイムアウトを超えると予想されないことを検証します。また、TCPキープアライブのソケットオプションも設定します。
イベントを段階的に処理する必要がない場合は、SDKがストリームを消費して、非ストリーミング呼び出しが返すものと同一の完全なMessageオブジェクトを返すことができます。
client = anthropic.Anthropic()
with client.messages.stream(
max_tokens=128000,
messages=[{"role": "user", "content": "Write a detailed analysis..."}],
model="claude-sonnet-5",
) as stream:
message = stream.get_final_message()
print(next(block.text for block in message.content if block.type == "text"))詳細については、ストリーミングメッセージを参照してください。
よくあるバリデーションエラー
プリフィルはサポートされていません
Claude 4.6以降のモデルおよびClaude Mythos Previewは、アシスタントメッセージの「prefill」(プリフィル)をサポートしていません。これらのモデルのいずれかに、最後のアシスタントメッセージをプリフィルしたリクエストを送信すると、400 invalid_request_errorが返されます。
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "This model does not support assistant message prefill. The conversation must end with a user message."
}
}代わりに、サポートしているモデルでは構造化出力、システムプロンプトでの指示、またはoutput_config.formatを使用してください。
thinkingブロックは変更できません
最新のアシスタントメッセージに、APIに送り返される前に編集、並べ替え、除外、または再構築されたthinkingまたはredacted_thinkingブロックが含まれている場合、リクエストは400 invalid_request_errorを返します。エラーメッセージは問題のあるブロックの位置(例:messages.1.content.0)で始まり、次の内容を含みます。
`thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. These blocks must remain as they were in the original response.「tool use」(ツール使用)では、アシスタントターンのすべてのthinkingおよびredacted_thinkingブロックを、thinkingフィールドが空のブロックも含めて、受信したとおりに正確に渡し返す必要があります。thinkingブロックは変更せずに渡し返してください。アプリケーションが再送信前にコンテンツブロックをタイプでフィルタリングする場合は、thinkingとredacted_thinkingの両方を含めてください。思考のトラブルシューティング、thinkingブロックの保持、および保持された思考を参照してください。
拡張思考はサポートされていません
Claude 4.7以降のモデルでは「extended thinking」(拡張思考)が削除されました。これらのモデルのいずれかにthinking: {"type": "enabled"}を送信すると、400 invalid_request_errorが返されます。
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.代わりに適応型思考を使用してください。適応型思考への移行にパラメータの対応関係が示されており、思考のトラブルシューティングでは症状から始める修正方法を説明しています。
適応型思考はサポートされていません
拡張思考のみをサポートするモデル(Claude 4.5以前のモデル)は、thinking: {"type": "adaptive"}を400 invalid_request_errorで拒否します。
adaptive thinking is not supported on this modelこれらのモデルではthinking: {"type": "enabled", "budget_tokens": N}を使用してください。設定については拡張思考を、症状から始める修正方法については思考のトラブルシューティングを参照してください。
思考は無効にできません
Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5、Claude Mythos 5、Claude Opus 5.5、およびClaude Mythos Previewでは、思考は常にオンです。これらのモデルのいずれかにthinking: {"type": "disabled"}を送信すると、400 invalid_request_errorが返されます。Claude Mythos Preview以外のこれらすべてのモデルでは、メッセージは次のとおりです。
"thinking.type.disabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.これらのモデルの中で唯一拡張思考を受け付けるClaude Mythos Previewでは、メッセージは次のとおりです。
"thinking.type.disabled" is not supported for this model. Thinking defaults to adaptive mode when not specified; use "thinking.type.enabled" with "budget_tokens" for extended thinking.Claude Sonnet 5.5では、思考をdisabledに設定することはできません。最も低い思考設定にはthinking: {"type": "between_tools"}を使用してください。これにより事前の思考がオフになります。thinking: {"type": "disabled"}を送信すると、次のメッセージとともに400 invalid_request_errorが返されます。
To turn thinking off on this model, send "thinking": {"type": "between_tools"} instead of {"type": "disabled"}. The model does not think before responding. The short updates it writes between tool calls come back as thinking blocks.xhighまたはmaxのeffortでは、between_toolsを指定したリクエストも400 invalid_request_errorを返します。between_toolsには事前の思考がないため、メッセージでは思考が無効になっていると示されます。
output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.between_toolsでは、会話の途中でeffortを変更できません。有効なレベルと異なるメッセージごとのoutput_config.effortを指定すると、400エラーが返されます。エラーには、新しいレベルを設定したメッセージの位置が示されます。
messages.N: output_config.effort 'low' differs from the 'high' in effect before it; effort cannot change when thinking is disabled on this model. Use effort 'high', or enable thinking.Claude Haiku 5.5はthinking: {"type": "disabled"}を受け付け、between_toolsに適用されるのと同じ2つのeffort制限を適用します。xhighまたはmaxのeffortの場合、または有効なレベルと異なるメッセージごとのoutput_config.effortを指定した場合、リクエストは前述の対応するメッセージとともに400 invalid_request_errorを返します。
どちらのメッセージでも、「enable thinking」は適応型思考を意味します。thinkingフィールドを省略するか、thinking: {"type": "adaptive"}を送信してください。Claude Sonnet 5.5とClaude Haiku 5.5は"enabled"を400エラーで拒否します。ターンごとにeffortを変えるには、適応型思考を使用してください。
Claude Sonnet 5.5以外のモデルにthinking: {"type": "between_tools"}を送信すると、400 invalid_request_errorが返されます。
"thinking.type.between_tools" is not supported for this model.修正方法については、between_toolsおよびeffortのエラーを扱っている思考のトラブルシューティングを参照してください。
thinkingパラメータを省略すると、リクエストは適応型思考で実行されます。思考をオフにせずにレスポンスから思考の内容を除外するには、思考の設定でdisplay: "omitted"を設定してください。思考のトラブルシューティングを参照してください。
強制的なツール使用はサポートされていません
Claude Opus 5.5、Claude Sonnet 5.5、Claude Fable 5.1、およびClaude Mythos 5.1は、強制的なツール使用をサポートしていません。トークンカウントエンドポイントを含め、これらのモデルのいずれかにtool_choice: {"type": "any"}またはtool_choice: {"type": "tool", "name": "..."}を送信すると、400 invalid_request_errorが返されます。
tool_choice: type "tool" and "any" are not supported for this model.tool_choice: {"type": "auto"}(デフォルト)と{"type": "none"}は受け付けられます。ツールの入力をスキーマに準拠させるにはautoを厳密なツール使用と組み合わせて使用し、レスポンス自体を固定のJSON形式にする必要がある場合は構造化出力を使用してください。ツール使用の強制を参照してください。
コンピューター使用ツールのバージョンはサポートされていません
Claude APIおよびGoogle Cloudでは、Claude Opus 5.5、Claude Sonnet 5.5、Claude Haiku 5.5は、コンピューター使用をcomputer_toolset_20260801ツールセットとしてのみサポートします。これらのプラットフォームで、これらのモデルのいずれかに、以前のcomputer_20251124またはcomputer_20250124タイプのtoolsエントリをそのツールのベータヘッダーとともに送信すると、400 invalid_request_errorが返されます。メッセージには拒否されたタイプが示され、続いてDid you mean one ofの後にモデルが受け付けるツールタイプが列挙されます。Claude Opus 5.5の場合、メッセージは次のように始まります。
'claude-opus-5-5' does not support tool types: computer_20251124.APIは、リクエストされたモデルがサポートしていないAnthropic定義のツールタイプに対して同じメッセージを返します。ベータヘッダーなしで{"type": "computer_toolset_20260801"}を宣言し、computer_20251124からの移行の説明に従ってエージェントループを更新してください。computer_20250124から移行するには、Claude Haiku 5.5移行ガイドのコンピューター使用をツールセットに移行するを参照してください。ツールセットをサポートする以前のモデルは引き続きcomputer_20251124を受け付けます。Amazon Bedrock上のClaude Opus 5.5、Claude Sonnet 5.5、Claude Haiku 5.5も同様です。
思考ブロックが会話と一致しなくなりました
Claude Fable 5.1、Claude Opus 5.5、Claude Sonnet 5.5、Claude Haiku 5.5では、APIは、再送された思考ブロックより前にあるsystemプロンプト、tools、およびメッセージが変更されていない場合にのみ、そのブロックを受け付けます。2026年8月31日以降に作成された新しいアカウント、およびthinking.block_binding.prefix_mismatch_behaviorを"error"に設定したリクエストでは、それ以前の履歴が変更された再送ブロックは400 invalid_request_errorで拒否されます("drop_block"の場合、APIはそのブロックを破棄し、リクエストは成功します)。メッセージは最初に失敗したブロックの位置で始まります。
messages.{i}.content.{j}: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block".thinking-binding-controls-2026-08-01ベータヘッダーがない場合、メッセージにはそのヘッダー名も示されます。会話履歴を追記のみにするか、ベータヘッダーをprefix_mismatch_behavior: "drop_block"とともに送信してブロックを破棄し、続行してください。Claude Sonnet 5.5とClaude Haiku 5.5では、block_bindingはthinking: {"type": "adaptive"}でのみ機能します。Claude Sonnet 5.5でbetween_toolsを使用する場合、またはClaude Haiku 5.5でthinking: {"type": "disabled"}を使用する場合は、履歴を追記のみにするか、編集したターン以降の思考ブロックを削除してください。対象モデルが読み取れないモデルからのブロックは、拒否されるのではなく破棄されます。プレフィックスを変更しないようにするおよび思考のトラブルシューティングを参照してください。
thinking-binding-controls-2026-08-01ベータヘッダーなしでthinking.block_bindingを送信すると、次の文で終わるメッセージとともに400 invalid_request_errorが返されます。
block_binding: Extra inputs are not permittedヘッダーを追加するか、フィールドを削除してください。
アウトバウンドWeb IDフェデレーションが無効(Claude Platform on AWS)
Claude Platform on AWSへのすべてのリクエストが"Outbound web identity federation is disabled for your account"を返す場合は、AWSアカウントごとに1回aws iam enable-outbound-web-identity-federationを実行してください。詳細についてはアウトバウンドWeb IDフェデレーションの有効化を参照してください。
次のステップ
thinking設定の400エラー、空のthinkingブロック、max_tokensによる停止に対する、症状から始める修正方法。
APIの悪用を軽減し容量を管理するため、組織がClaude APIを使用できる量には制限が設けられています。
テキスト、ツール使用、拡張思考のデルタを含むMessages APIレスポンスを、server-sent eventsで段階的にストリーミングします。
Was this page helpful?