AI

Claude Sonnet 5.5 migration: which changes return a 400

By · Tue Sep 29 2026 · 6 min read · 0 views

View as a Web Story

AI#migration#anthropic api#claude sonnet 5.5#extended thinking#tool use

Claude Sonnet 5 to Sonnet 5.5 migration showing which API changes return errors

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:

  1. Change the model ID to claude-sonnet-5-5 in a staging environment.
  2. Replace thinking.type.disabled with between_tools at high effort or below.
  3. Replace forced tool_choice with auto and strict: true tools, and say in the prompt when to call the tool.
  4. Read content blocks by type and pass thinking blocks back unchanged.
  5. Move computer use to computer_toolset_20260801 on the Claude API and Google Cloud.
  6. 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 API models being retired on October 23 with their gpt-5.6 replacements

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

Code editor showing an AI SDK 7 result object with usage tokens aggregated across multiple agent steps

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

AI