400 invalid_request_error
Claude Fable 5 の 400 invalid_request_error
リクエスト本文に Fable 5 が廃止したパラメータが含まれているか、組織のデータ保持設定がモデル自体をブロックしているかのどちらかです。
30 秒でわかる要点
Fable 5 の 400 の多くは、新しい Claude モデルが受け付けなくなったパラメータが原因です。デフォルト以外の temperature・top_p・top_k、assistant メッセージのプリフィル、thinking の disabled 指定、budget_tokens を伴う手動の拡張思考などです。もう 1 つの系統は組織起因で、Fable 5 は 30 日データ保持を必須とするため、これを満たさない組織ではリクエスト本文にかかわらずすべてが 400 になります。
Fable 5 で 400 を引き起こすもの
まずエラーメッセージを読んでください。問題のフィールド名が示され、thinking ブロック関連ではブロックの位置も示されます。
assistant メッセージをプリフィルした
Claude 4.6 以降のモデルは assistant ターンのプリフィルに対応していません。messages 配列を assistant メッセージで終えると、会話は user メッセージで終わる必要がある旨のメッセージとともに 400 が返ります。代わりに構造化出力、output_config.format、システムプロンプトでの指示を使ってください。
組織のデータ保持が 30 日未満
Fable 5 は 30 日データ保持を必須とする Covered Model であり、ゼロデータ保持では利用できません。Claude API では、保持設定がこの要件を満たさない組織からのリクエストは 400 invalid_request_error になります。症状は、最小限の hello world リクエストを含め、すべてのリクエストが同じように失敗することです。
編集またはフィルタされた thinking ブロック
直近の assistant メッセージに含まれる thinking または redacted_thinking ブロックが、送り返す前に並べ替え・除外・再構成されていた場合、リクエストは 400 になります。メッセージは問題のブロック位置(例:messages.1.content.0)から始まります。
temperature・top_p・top_k にデフォルト以外の値を設定した
これらのいずれかにデフォルト以外の値を設定すると 400 になります。Fable 5 固有ではなく Claude Opus 4.7 以降の仕様で、Sonnet 5、Opus 5、Fable 5 に共通します。SDK のリクエスト型は旧モデル互換のためフィールドを残しているので、コードはコンパイルでき、サーバー側で拒否されます。
Fable 5 が受け付けない thinking 設定
アダプティブ思考は常時オンです。thinking の disabled 指定も、budget_tokens 値を伴う手動の拡張思考も 400 になります。disabled の場合のエラーメッセージは thinking.type.enabled を勧めますが、Fable 5 ではその形式も拒否されるため、正しい対処は thinking パラメータを丸ごと省くことです。
この順序で対処する
最初に切り分けを 1 つ。最小リクエストでも失敗するなら、リクエスト本文のデバッグはやめて組織設定を確認してください。
- 1
3. 組織またはワークスペース単位で保持設定を直す
組織にゼロデータ保持の取り決めがある場合でも、Console のワークスペース設定にある Privacy controls から特定のワークスペースだけ 30 日保持を有効にできます。他のワークスペースはゼロ保持のままです。それが難しい場合は Anthropic のアカウントチームに連絡してください。
- 2
4. thinking ブロックを一字一句そのまま返す
ツール利用時は、assistant ターンのすべての thinking および redacted_thinking ブロックを、thinking フィールドが空のものも含めて受け取ったとおりに返してください。再送前にコンテンツブロックを型でフィルタしているなら、両方の型を許可リストに追加します。
- 3
1. 最小リクエストで本文とアカウントを切り分ける
model と max_tokens だけを指定し、1 行の user メッセージを送ります。成功するなら問題はリクエスト本文にあります。同じ 400 で失敗するなら、原因は組織のデータ保持設定であり、本文をどう変えても解決しません。
- 4
2. Fable 5 が拒否するパラメータを削除する
temperature、top_p、top_k はデフォルト値を設定するのではなく、リクエストから削除してください。thinking も別の type を試すのではなくオブジェクトごと削除します。プリフィル用の末尾 assistant メッセージも削除してください。
実は 400 ではない場合
レスポンスが HTTP 200 で content 配列が空なら、無効なリクエストではなく分類器による拒否です。まったく別の対処が必要になります。