Claude Haiku 5.5 移行でHTTP 400になる6つの原因と単価が5倍になる条件
2026年10月12日時点の情報です。Claude Haiku 5.5(claude-haiku-5-5)に model の値だけを書き換えると、budget_tokens や temperature を渡している箇所でHTTP 400が返ります。Haiku 4.5は旧世代のAPIをフルに使えた最後のモデルなので、Opus 5.5 / Sonnet 5.5への移行より壊れる箇所が多くなります。
400になる6か所
| # | 該当する実装 | 直し方 |
|---|---|---|
| 1 | budget_tokens を渡している | adaptive + effort |
| 2 | temperature / top_p / top_k を渡している | 削除してプロンプトで誘導 |
| 3 | 末尾がアシスタントターン(プリフィル) | 構造化出力(Bedrockは自前検証) |
| 4 | computer_20250124 を使っている | computer_toolset_20260801 等に変更 |
| 5 | 会話履歴の先頭・途中を書き換えている | 履歴は追記のみにする |
| 6 | 思考ブロックを別組織から送っている | 作った組織で再生する |
1と2、disabled effortの境界は実APIで確認済みです。3〜6は公式の移行ガイドの記載です。
budget_tokensとtemperatureが400になる理由
Haiku 5.5では思考量を budget_tokens では決められません。effort(low〜max、既定は medium)に置き換えます。
# Haiku 4.5
thinking={"type": "enabled", "budget_tokens": 8000}
# Haiku 5.5
thinking={"type": "adaptive"}, output_config={"effort": "medium"}
思考を切る thinking: {"type": "disabled"} は effort が high 以下のときだけ通ります。xhigh / max と組むと400で、disabled のときはメッセージ単位のeffort変更も400です。実APIでは次の4パターンを確認しました。
thinking disabled + effort xhigh → 400
thinking disabled + effort low → 200(thinking_tokens は 0 で返る)
temperature は非既定の値を渡すだけで400になります。削除してプロンプトで出力の傾向を誘導してください。手元のコードでこの2つを渡していない箇所は、model の文字列を変えるだけで動きました。
単価が5倍になる条件
| プロンプト長 | 入力 | 出力 | キャッシュ読み | Batch |
|---|---|---|---|---|
| 10万トークン以下 | $0.10 | $0.50 | $0.01 | $0.05 / $0.25 |
| 10万トークン超 | $0.50 | $2.50 | $0.05 | $0.25 / $1.25 |
「プロンプト長」は1リクエストの入力トークン合計で、キャッシュの読み書きを含みます。キャッシュが効いていても合計が閾値を超えればそのリクエストは高いほうの単価になり、判定はリクエストごとで前のリクエストの請求は変わりません。長い会話をHaiku 5.5で続けるエージェントは、入力が10万トークンに近づいた時点でcompactionで縮めるか、長さで単価が変わらないSonnet 5.5($2 / $10)と比較する必要があります。
エラーにならないが変わるもの
400にはなりませんが、見落とすと挙動が変わる点が3つあります。思考が既定でオンになるため、thinking を書かなかったコードもHaiku 5.5では思考を始めます。max_tokens は思考と本文の合計上限なので、小さい値のままだと本文が空になることがあり、content[0].text を無条件に読む実装は type で判定する書き方に直す必要があります。
トークナイザも新しくなり、同じ入力でも約30%増え、画像は高解像度ティアで最大2.5倍になります。さらにHaiku 4.5では直前のターン分だけだった思考ブロックが、Haiku 5.5では全ターン分入力に残るため、マルチターンの会話は30%増以上に膨らみます。
このほか、キャッシュの最小単位が512トークンに下がった(4.5は4,096)、cyber / frontier_llm / bio / general_harms の拒否カテゴリが増えた(HTTP 200で stop_reason: "refusal"、サーバー側fallbackはなし)、Priority Tierに非対応、強制 tool_choice は使える(Opus 5.5 / Sonnet 5.5と違い400にならない)といった変更もあります。
まとめ
model の文字列だけを変える移行は、budget_tokens・temperature・プリフィル・computerツール・履歴の書き換え・思考ブロックの組織境界のどれにも該当しなければそのまま動きます。該当するかどうかを手元のコードで1つずつ確認するより、自動で洗い出すほうが早いです。
git clone https://github.com/volvox-ltd/claude5-migration-kit
python claude5-migration-kit/scan.py path/to/your/app --target haiku-5-5
effortの起点、会話履歴の編集方法、価格表の全項目を含めた全手順は元記事にあります。
https://zenn.dev/persimmoq/articles/claude-haiku-5-5-migration-from-4-5
動くコードと一緒に、体系的に学びたい方へ
よくある質問
- Q"thinking.type.enabled" is not supported for this model というエラーが出ます
- Claude Haiku 5.5では budget_tokens を渡す thinking: {type: "enabled"} が使えません。thinking: {type: "adaptive"} にして、思考量は output_config.effort(low〜max、既定は medium)で調整します。
- Qtemperature を渡すと何が起きますか
- Haiku 5.5では temperature・top_p・top_k の非既定値がすべて400エラーになります。削除してプロンプト側で出力の傾向を誘導してください。
- QClaude Haiku 5.5の料金はいつ5倍になりますか
- 1リクエストの入力トークン合計(キャッシュの読み書きを含む)が10万トークンを超えた瞬間、そのリクエストだけ入力$0.10→$0.50、出力$0.50→$2.50に切り替わります。判定はリクエスト単位で、前のリクエストの請求には影響しません。
- QHaiku 4.5からmodelだけ書き換えれば移行できますか
- thinkingとtemperatureを渡していなければそのまま動くこともありますが、budget_tokens・プリフィル・computerツールのバージョン・会話履歴の編集方法の4か所は該当すると400になります。既存コードを静的に走査するツールも公開されています。
Claude API・AI エージェント開発の実践書
『Claude 5 世代 移行ガイド』『Claude Managed Agents 実践ガイド』を Zenn で販売中。全サンプルコードを GitHub で公開、冒頭の章は無料で読めます。
書籍を見る→関連記事
Claude「Invalid signature in thinking block」の直し方
Claude API がマルチターンの途中で『Invalid signature in thinking block』400を返すときの原因と対処をまとめます。履歴の先頭を削ると起きる仕様で、追記のみに直せば防げます。
Claude Haiku 5.5 移行でHTTP 400になる6つの原因と単価が5倍になる条件
Claude Haiku 5.5へmodelだけ書き換えるとbudget_tokensやtemperatureを渡している箇所でHTTP 400になります。実APIで確認した3つのエラーと、入力が10万トークンを超えると単価が5倍になる仕様を、直し方つきでまとめます(2026年10月12日時点)。
Claude Opus 5.5 の Fast mode を実測|速度2.26倍の料金と効く場面
Claude Opus 5.5のFast modeをstandardと交互に5回測りました。平均75.7 tok/sが171.0 tok/sになり2.26倍、料金は2倍です。効く場面・効かない場面と、切り替え時のキャッシュミスやレート制限の注意点をまとめます。
Claude Opus 5.5 / Sonnet 5.5 で 400 になる原因 5 つ
model だけを Opus 5.5 / Sonnet 5.5 に差し替えると HTTP 400 になる 5 つのケースを、thinking.type.disabled や tool_choice の実際のエラー文と直し方で解説します(2026年10月12日時点)。
