Migration and errors · checked 2026-10-08

Claude Haiku 5.5 breaking changes: the five 400s when migrating from Haiku 4.5, and the official fixes

As of 2026-10-08, Anthropic's official What's new page marks five changes from Claude Haiku 4.5 to Claude Haiku 5.5 as Breaking, and each of them can make a request return 400: manual budget_tokens, non-default temperature / top_p / top_k, a prefill that ends on an assistant turn, the old computer_20250124 tool, and editing earlier turns when you send thinking blocks back. For each one this page states what changed, the verbatim error string where the official docs give one, and the documented fix; where no error text is published, it only says «returns a 400 error».

Updated 2026-10-08

#Haiku 5.5 migration#breaking changes#temperature error#adaptive thinking

The four of the five you hit first

budget_tokens

Manual thinking budget: 400

Official migration guide: a thinking value of {"type": "enabled", "budget_tokens": N} returns a 400 error. For models that removed extended thinking, the troubleshooting page gives this error text (kept verbatim): "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior. Fix: switch to {"type": "adaptive"} and steer depth with output_config.effort.

temperature

Sampling parameters: defaults only

Official migration guide: if a request includes temperature it must be 1, and if it includes top_p it must be its default of 0.99; any other value returns a 400 error, including a top_p of 1. So does any top_k value, and so does a request that sends temperature and top_p together. No error text is published for this one. Fix: remove all three and guide behaviour through the prompt.

prefill

Ending on an assistant turn: 400

Haiku 4.5 accepts a prefill when thinking is off; Haiku 5.5 rejects it with a 400 error even with thinking turned off. The errors page says Claude 4.6 and later models do not support prefill, with this message: This model does not support assistant message prefill. The conversation must end with a user message. Fix: end messages with a user turn.

computer_20250124

Old computer use tool: 400

On the Claude API and Google Cloud, Haiku 5.5 supports computer use only through the computer_toolset_20260801 toolset, and a request declaring computer_20250124 returns a 400 error. No error text is published for this one. Fix: drop the computer-use-2025-01-24 beta header and replace the tools entry with {"type": "computer_toolset_20260801"}.

What this page answers

As of 2026-10-08, if a 400 appears after swapping claude-haiku-4-5 for claude-haiku-5-5, check the request first against the five breaking changes Anthropic lists. The 2026-10-07 release note says it plainly: «Code written for Claude Haiku 4.5 can break on Claude Haiku 5.5.» Four further changes raise no error but alter the response or the counting: a response can begin with thinking blocks; thinking text is omitted by default; according to Anthropic, the same text counts as roughly 30% more tokens; and thinking blocks work only in the account that produced them or one linked to it. This page covers the request body only, not specifications or prices.

2026-10-07: Claude Haiku 5.5 released

Anthropic's release notes for 2026-10-07: Claude Haiku 5.5 (claude-haiku-5-5) launched with a 1M token context window, 128k max output tokens and adaptive thinking with the effort parameter. The same entry warns that code written for Haiku 4.5 can break: manual extended thinking (budget_tokens) returns a 400 error; adaptive thinking is on by default, so a response can begin with thinking blocks; and the same text counts as more tokens. The migration guide adds that claude-haiku-5-5 is a fixed model ID with no date suffix and no separate alias.

Three dates

2026-08-31

The account cutoff for the earlier-turns check. Per the migration guide, on accounts created before 2026-08-31 00:00 UTC this 400 comes only on requests that set thinking.block_binding.prefix_mismatch_behavior; accounts created later are checked by default. The Preserved thinking guide warns that a clean run on your own older key therefore does not show whether your code is affected.

2026-10-07

Release day. The official overview reads «Released October 7, 2026», anthropic.com published «Introducing Claude Haiku 5.5» the same day, and the release-note entry already warns that Haiku 4.5 code can break.

2026-10-15

In the official deprecations table claude-haiku-4-5-20251001 is still Active, its Deprecated column reads N/A, and its Tentative retirement date column reads Not sooner than October 15, 2026 — a floor, not a switch-off date. The claude-haiku-5-5 row reads Not sooner than October 7, 2027.

Layers: official text / what the docs leave out

Officially confirmed (verbatim-checkable)

The What's new table marks five changes as Breaking: (1) manual extended thinking returns an error — replace budget_tokens with adaptive thinking; (2) non-default sampling parameters return an error — omit temperature, top_p and top_k; (3) assistant message prefill returns an error — end messages with a user turn; (4) computer use needs the toolset on the Claude API and Google Cloud — replace computer_20250124 with computer_toolset_20260801; (5) changing earlier turns invalidates thinking blocks — keep conversations append-only if you send thinking blocks back. Four more are marked Changed: responses can begin with thinking blocks (select blocks by type); thinking text is omitted by default (set display to summarized for a summary); the same text counts as more tokens (recount, and revisit max_tokens and cost estimates); and replaying thinking blocks across accounts (replay each conversation through the account that produced it).

What the docs do not say

Not published, and not filled in here: the error text for the sampling-parameter and computer_20250124 rejections (the migration guide only says «returns a 400 error»); any exemption window or rollback plan for the five changes; a firm switch-off date for Haiku 4.5 (the deprecations table only gives not sooner than 2026-10-15); and any claim that a given third-party framework has already adapted.

Two comparisons: across generations and within one

Haiku 4.5 vs Haiku 5.5: thinking settings exclude each other

The per-model table on the troubleshooting page: Haiku 4.5 supports extended thinking only, defaults to off and rejects adaptive with a 400 (the error text the page gives for models that support only extended thinking: adaptive thinking is not supported on this model); Haiku 5.5 supports adaptive only, defaults to on and rejects enabled with a 400. If you run both models during a migration, write the thinking field per model — one request body that carries thinking cannot serve both.

Haiku 5.5 vs Sonnet 5.5: switching thinking off and forced tools differ

Haiku 5.5 accepts {"type": "disabled"} at effort high or below and returns a 400 at xhigh or max; Sonnet 5.5 returns a 400 for disabled at every effort level. Haiku 5.5 accepts a forced tool_choice (any or a named tool), but the response starts with the tool call and has no thinking block; Sonnet 5.5 rejects forced tool use on every request with a 400. The two migrations differ at exactly these two points, so a fix written for one model should not be copied onto the other.

Migration steps (following the official checklist)

(1) Model ID: on the Claude API, change claude-haiku-4-5-20251001 or claude-haiku-4-5 to claude-haiku-5-5. (2) Thinking: change {"type": "enabled", "budget_tokens": N} to {"type": "adaptive"} and set the amount of thinking with output_config.effort (the official example uses medium, which is also Haiku 5.5's default effort); where Haiku 4.5 ran without thinking or with a small budget, choose a lower effort. Select response blocks by their type field; a small max_tokens can stop with stop_reason max_tokens after a thinking block and before any text, so raise it. (3) Remove temperature, top_p and top_k. (4) End messages with a user turn and replace each prefill by purpose: output format — structured outputs, or tools with enum fields for classification; preambles — ask in the system prompt for a direct answer; continuations — move them to the user message; context reminders — put them in the user turn. (5) Computer use: drop the computer-use-2025-01-24 beta header, replace the tools entry with {"type": "computer_toolset_20260801"}, dispatch on each tool_use block's name and toolset_name, and echo toolset_name on results; if your environment does not implement zoom, add "configs": {"zoom": {"enabled": false}}; remove the fine-grained-tool-streaming-2025-05-14 beta header if you send it. (6) When you send thinking blocks back, leave system, tools and earlier messages untouched and only append; add instructions with a mid-conversation system message. (7) Recount tokens with model set to claude-haiku-5-5. In Claude Code, the official /claude-api migrate command applies the ID swap, breaking parameter changes, prefill replacement and effort calibration, then produces a checklist to verify by hand.

The QCode side: Haiku 5.5 listing follows /models

As of 2026-10-08, whether and when claude-haiku-5-5 is listed on QCode is shown on the /models page; this page makes no forecast. The existing claude-haiku-4-5-20251001 remains callable on QCode, so Haiku 4.5 request bodies need no change ahead of the migration. Claude uses the Anthropic Messages protocol: following docs.qcode.cc, Claude Code sets ANTHROPIC_BASE_URL=https://api.qcode.cc/api and the SDK builds /api/v1/messages; one key works across protocols, and the request path decides the protocol. Billing is per token, with each model's price on /models. All five changes on this page sit in the request body and have nothing to do with the base URL.

Frequently asked questions

Haiku 5.5 returns a 400 about temperature — how do I fix it?

Remove temperature, top_p and top_k from the request. The migration guide says: if temperature is present it must be 1, if top_p is present it must be its default of 0.99, and any other value returns a 400 error, including a top_p of 1; any top_k value, and any request that sends both temperature and top_p, also returns 400. The Thinking documentation adds that this applies on every request, whether or not thinking is used. No error text is published for this case, and this page does not invent one.

Does budget_tokens still work? What if I want thinking off entirely?

No. A thinking value of enabled with budget_tokens returns a 400 error; switch to {"type": "adaptive"} and steer depth with output_config.effort. To turn thinking off, Haiku 5.5 accepts {"type": "disabled"} at effort high or below; at xhigh or max that returns a 400 with this text: output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking. Anthropic calls the effort parameter the better way to trade quality against speed and cost than switching thinking off.

The first content block is now a thinking block — is that a bug?

No. Adaptive thinking is on by default on Haiku 5.5, so a response can begin with one or more thinking blocks even when the request does not mention thinking; select blocks by their type field, not by position. By default each thinking block comes back with an empty thinking field and only a signature; to receive a summary, set {"type": "adaptive", "display": "summarized"}. Thinking tokens count toward max_tokens, so a small limit can stop after a thinking block and before any text.

What does «The block is bound to a different conversation» in the error mean?

It means that, before a thinking block you sent back, the system prompt, the tools or earlier messages changed. Haiku 4.5 does not run this check. On accounts created before 2026-08-31 00:00 UTC the error appears only on requests that set thinking.block_binding.prefix_mismatch_behavior; newer accounts get it by default. Resending the same body does not clear it. Fix: keep the conversation append-only and add instructions with a mid-conversation system message instead of editing system or tools; to let the current request through, send the thinking-binding-controls-2026-08-01 beta header with prefix_mismatch_behavior set to drop_block.

Can one code path run Haiku 4.5 and Haiku 5.5 side by side during migration?

Not with a request body that carries thinking. In the official per-model table Haiku 4.5 supports extended thinking only and rejects adaptive, while Haiku 5.5 supports adaptive only and rejects enabled. Their defaults differ too: thinking is off by default on Haiku 4.5 and on by default on Haiku 5.5. Branch the thinking field by model.

When does Haiku 4.5 retire — do I have to migrate now?

No switch-off date is published. As of 2026-10-08 the deprecations table lists claude-haiku-4-5-20251001 as Active, with N/A under Deprecated and Not sooner than October 15, 2026 under Tentative retirement date — a floor, not a shutdown date. The claude-haiku-5-5 row reads Not sooner than October 7, 2027. When to move is a call for tests on your own workload.

Sources

Anthropic's official documentation: the Claude Haiku 5.5 What's new page, migration guide and model overview; the API release notes entry of 2026-10-07; Troubleshooting thinking, Preserved thinking, Thinking and the API errors page; the computer use tool page; the model deprecations table; and the anthropic.com news page. On the QCode side only the docs.qcode.cc page on endpoints and API paths is used. All fetched on 2026-10-08, with error strings kept verbatim.

Fix the request body first, then switch models

One QCode key can call claude-haiku-4-5-20251001, claude-sonnet-5-5 and claude-opus-5-5, billed per token with each model's price on /models; whether Haiku 5.5 is listed is also shown on /models.

Related reading

Checked on 2026-10-08; Anthropic's official pages are authoritative, and upstream changes may happen without notice. Error strings are kept verbatim and untranslated; where the docs publish no error text, this page only says «returns a 400 error». Percentages such as the token increase are Anthropic's own figures. Model availability follows /models. QCode is not affiliated with Anthropic.

Try first, then decide

Not sure which tier? Start with Starter ($8.57/mo) and upgrade when you're happy — the unused value of the old plan goes back to your balance.