Claude Sonnet 5.5 migration: which changes return a 400
By Nihar Ranjan Das · Tue Sep 29 2026 · 6 min read · 0 views
View as a Web StoryAI#migration#anthropic api#claude sonnet 5.5#extended thinking#tool use

Claude Sonnet 5.5 launched on September 28, 2026 at the same price as Claude Sonnet 5, $2 per million input tokens and $10 per million output tokens. Moving to it is not a model-ID swap. Several settings that Sonnet 5 accepts now return a 400 error, and other behaviours change without any error at all.
This post separates the two groups. It uses Anthropic's Sonnet 5.5 migration guide as its source, and it covers only the Sonnet 5 to 5.5 step.
What is Claude Sonnet 5.5, and what does it cost?
Claude Sonnet 5.5 is the current Sonnet model from Anthropic, released on September 28, 2026 under the model ID claude-sonnet-5-5. It has a 1M-token context window and 128K maximum output, and it lists at $2 input and $10 output per million tokens.
The Sonnet 5 overview page compares it with the rest of the lineup.
| Model | Price per million tokens (input / output) | Thinking |
|---|---|---|
| Claude Fable 5.1 | $10 / $50 | Adaptive, always on |
| Claude Opus 5.5 | $4 / $20 | Adaptive, always on |
| Claude Sonnet 5.5 | $2 / $10 | Adaptive |
| Claude Sonnet 5 | $2 / $10 | Adaptive |
| Claude Haiku 4.5 | $1 / $5 | Extended |
Sonnet 5 is now marked legacy. Anthropic lists its retirement as not sooner than June 30, 2027, so nothing forces a move this quarter.
Which Sonnet 5 requests return a 400 on Sonnet 5.5?
Several request shapes that work on Sonnet 5 fail on Sonnet 5.5. The migration guide names each one, including the forced tool use section and the computer use toolset section. The table gives the error and the fix.
| Request on Sonnet 5 | Result on Sonnet 5.5 | Fix |
|---|---|---|
thinking: {"type": "disabled"} |
400 invalid_request_error |
Send between_tools or adaptive |
tool_choice type any or tool |
400 | Send auto and mark the tool strict: true |
between_tools with xhigh or max effort |
400 | Use adaptive thinking |
between_tools with display, budget_tokens or block_binding |
400 | Remove those fields |
Per-message output_config.effort that differs, under between_tools |
400 | Use adaptive thinking |
computer_20251124 on the Claude API or Google Cloud |
400 | Send computer_toolset_20260801 |
fine-grained-tool-streaming-2025-05-14 header with the toolset |
400 | Set eager_input_streaming: true per tool |
| Advisor tool with an older advisor model | 400 | Use Opus 5, Opus 5.5, Sonnet 5.5, Fable or Mythos |
| Replaying a thinking block after editing earlier history | 400 | Keep conversations append-only |
The exact error text for the two most common ones:
"thinking.type.disabled" is not supported for this model. Use "thinking.type.between_tools" for the lowest thinking setting, or "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
tool_choice: type "tool" and "any" are not supported for this model.
The last row applies to accounts created on or after August 31, 2026 at 00:00 UTC, where the API enforces the signature check by default. The post Claude Opus 5.5 returns 400 errors. Here is how to fix it covers the same thinking and tool_choice errors for Opus, so this post focuses on what is specific to Sonnet.
How do I turn thinking off on Sonnet 5.5?
between_tools is the lowest thinking setting on Sonnet 5.5. It turns off up-front thinking while the model still writes short progress updates between tool calls, according to the migration guide's thinking section.
Send it like this:
Advertisement
client.messages.create(
model="claude-sonnet-5-5",
max_tokens=16000,
thinking={"type": "between_tools"},
output_config={"effort": "high"},
messages=[{"role": "user", "content": "..."}],
)
Three limits come with it. It works at low, medium and high effort, and returns a 400 at xhigh or max. It takes no other field. And effort cannot change mid-conversation under between_tools.
Adaptive thinking is a mode where the model decides how much to think, steered by the effort setting, as the Sonnet 5 overview describes it. If you need xhigh, max or per-turn effort, use adaptive thinking instead. For example, a research agent that varies effort per turn cannot use between_tools. Omit the thinking field, or send thinking: {"type": "adaptive"}.
With server-side fallback, a between_tools request that falls back to Sonnet 5 runs there with thinking disabled.
What changes on Sonnet 5.5 without returning an error?
Six changes raise no error and can still break a product, and the guide's text between tool calls section shows how quietly one of them arrives. These are the ones to test.
| Silent change | Symptom you would see | What to do |
|---|---|---|
Thinking runs by default when the thinking field is missing |
Longer responses that begin with thinking blocks |
Read content blocks by type, not content[0].text |
Text between tool calls moves into thinking blocks |
A progress feed that goes quiet | Render each non-empty thinking block before its tool_use |
| Blocks from Opus 5, Opus 5.5, Fable or Mythos are dropped | A 200 response with missing reasoning context | Avoid switching models mid-conversation |
| More refusal categories | stop_reason: "refusal" with a category |
Handle cyber, bio, frontier_llm, reasoning_extraction and general_harms |
| Minimum cacheable prompt falls to 512 tokens | Shorter prompts now cache | Re-baseline cache hit rates and cost |
| Effort levels recalibrated | Different amounts of thinking per level | Re-run your effort sweep |
Methodology: we analyzed every section of the Sonnet 5 to Sonnet 5.5 migration guide and sorted each change by whether the API rejects it. Fact-check: each row above appears in the guide, and none is inferred.
Two rows deserve more detail. Blocks from Opus 5, Opus 5.5, Fable and Mythos are dropped when you switch to Sonnet 5.5 mid-conversation, per the guide's thinking blocks section, and the request still returns 200 with dropped blocks unbilled. Text between tool calls now returns as thinking blocks when notes run longer than a sentence or two, per the guide, so an interface that shows those notes goes quiet.
Do I have to migrate from Sonnet 5 now?
No. Migrate when the new model earns it, not before a deadline that does not exist. Anthropic keeps Sonnet 5 available with retirement not sooner than June 30, 2027, and the price is identical.
The cost of moving is test time. Price does not change, but thinking tokens bill as output tokens, so re-baseline cost after switching. The guide also recommends re-running your effort sweep, in its recommended changes section, starting at high for most work and at medium for well-specified agentic coding tasks.
A safe order:
- Change the model ID to
claude-sonnet-5-5in a staging environment. - Replace
thinking.type.disabledwithbetween_toolsathigheffort or below. - Replace forced
tool_choicewithautoandstrict: truetools, and say in the prompt when to call the tool. - Read content blocks by
typeand passthinkingblocks back unchanged. - Move computer use to
computer_toolset_20260801on the Claude API and Google Cloud. - Run your effort sweep and compare cost per successful task.
On Amazon Bedrock, structured outputs and strict tool use are not available for Sonnet 5.5. Send auto without strict, say in the prompt when to call the tool, and validate the tool input in your own code.
Advertisement
FAQ
Why does Claude Sonnet 5.5 return a 400 for thinking disabled?
Sonnet 5.5 no longer accepts `thinking: {"type": "disabled"}`. Anthropic replaced it with `between_tools`, the lowest thinking setting, which turns off up-front thinking. Send `between_tools` at `high` effort or below, or use adaptive thinking.
How do I fix "tool_choice: type tool and any are not supported for this model"?
Send `tool_choice: {"type": "auto"}` and mark the tool `strict: true` so its input matches the schema. The model can then answer without calling the tool, so say in the prompt when it should. On Amazon Bedrock, send `auto` without `strict`.
Does Claude Sonnet 5.5 cost more than Sonnet 5?
No. Both list at $2 per million input tokens and $10 per million output tokens. Thinking tokens bill as output tokens, so total spend can still change with effort level, and you should re-baseline cost after moving.
Is Claude Sonnet 5 being retired?
Not yet. Anthropic marks Sonnet 5 as legacy and lists its retirement as not sooner than June 30, 2027. You can keep running it while you test Sonnet 5.5.
Comments
Loading…
Sign in to join the conversation.
Related posts

OpenAI shuts off GPT-4, o1 and o4-mini on October 23
OpenAI shuts off GPT-4, GPT-3.5 Turbo, GPT-4 Turbo, o1, o1-pro, o3-mini, o4-mini and several other models on its API on October 23, 2026. That is 24 days away. Any call that names one of those models
Tue Sep 29 2026 · 6 min read · 0 views

AI SDK 7 Changed usage. Your Token Counts Are Now Wrong
If a project upgraded to AI SDK 7 and its per-request token costs suddenly look higher than before, nothing is actually costing more. result.usage used to report only the final step's tokens. In AI
Tue Sep 29 2026 · 6 min read · 0 views

Anthropic's Akamai Deal: What It Buys Claude Users
Anthropic signed an $11.6 billion cloud deal with Akamai. Here's what it actually buys — more future capacity, not necessarily fewer outages.
Sun Sep 27 2026 · 4 min read · 2 views