"thinking.type.between_tools" is not supported for this model
The error
A request carrying thinking: {"type": "between_tools"} returns a 400 on any model other than
Sonnet 5.5:
"thinking.type.between_tools" is not supported for this model.
Almost nobody sends that setting to the wrong model on purpose. The usual cause is code that re-sends a Sonnet 5.5 request body to a different model unchanged — a router, a client-side retry after a refusal, an evaluation harness cycling through models, or fallback middleware.
Why the same body can't travel
between_tools is Sonnet 5.5's lowest thinking setting and its replacement for disabled, which it
rejects. Every other model has a different vocabulary: Sonnet 5 and Opus 5 accept disabled, Opus 5.5
and the Fable models accept nothing but adaptive, and the older Opus and Sonnet models think only when
asked. A thinking configuration is therefore per-model data, not a request constant.
Anthropic's server-side fallback handles this for you: when a between_tools request on Sonnet 5.5 is
retried on Sonnet 5, it runs there with thinking disabled. That server-side fallback runs on the
Claude API only, though. The SDK's refusal-fallback middleware, and any retry you write yourself, get
no such translation, so they have to rebuild the field for the target model.
The fix
Build the thinking field for the target model at the moment you send, rather than copying it from the
original request. A small mapping is enough. Sending to Sonnet 5.5 and want thinking minimal: use
between_tools at effort high or below. Sending the same intent to Sonnet 5 or Opus 5: use disabled, remembering that Opus 5 accepts it only up to effort high. To Opus 5.5 or a Fable model: omit the field and use low effort, since thinking
can't be turned off. To Opus 4.8 or older: omit the field, which already means no thinking.
Check the effort level travels safely too — per-message effort changes are a 400 with between_tools,
and effort above high is a 400 with it as well.
Related
See disabled thinking rejected on Sonnet 5.5 and adaptive vs always-on thinking.
Verified 2026-09-30 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.