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. 1

    3. 組織またはワークスペース単位で保持設定を直す

    組織にゼロデータ保持の取り決めがある場合でも、Console のワークスペース設定にある Privacy controls から特定のワークスペースだけ 30 日保持を有効にできます。他のワークスペースはゼロ保持のままです。それが難しい場合は Anthropic のアカウントチームに連絡してください。

  2. 2

    4. thinking ブロックを一字一句そのまま返す

    ツール利用時は、assistant ターンのすべての thinking および redacted_thinking ブロックを、thinking フィールドが空のものも含めて受け取ったとおりに返してください。再送前にコンテンツブロックを型でフィルタしているなら、両方の型を許可リストに追加します。

  3. 3

    1. 最小リクエストで本文とアカウントを切り分ける

    model と max_tokens だけを指定し、1 行の user メッセージを送ります。成功するなら問題はリクエスト本文にあります。同じ 400 で失敗するなら、原因は組織のデータ保持設定であり、本文をどう変えても解決しません。

  4. 4

    2. Fable 5 が拒否するパラメータを削除する

    temperature、top_p、top_k はデフォルト値を設定するのではなく、リクエストから削除してください。thinking も別の type を試すのではなくオブジェクトごと削除します。プリフィル用の末尾 assistant メッセージも削除してください。

実は 400 ではない場合

レスポンスが HTTP 200 で content 配列が空なら、無効なリクエストではなく分類器による拒否です。まったく別の対処が必要になります。

よくある質問