is not supported when thinking is disabled
xhigh / max plus thinking off is 400; 2.1.251 sends high instead
Claude Code 2.1.251 (2026-08-28) fixed Opus 5 requests that failed when effort was xhigh/max and thinking was off. The literal is effort … is not supported when thinking is disabled. In that combo the client now sends effort high. API docs still say: Opus 5 may disable thinking at high and below; xhigh or max plus thinking off returns 400.
Four facts you can quote
The substring people search
Full sentence often: output_config.effort 'xhigh' is not supported when thinking is disabled on this model. That half-sentence matches the changelog and issues.
The levels that cannot stack with thinking disabled
Thinking docs on platform.claude.com: Opus 5 allows thinking: {type: "disabled"} at effort high and below. xhigh or max plus thinking off is 400.
Claude Code fix train
Changelog 2026-08-28: Fixed Opus 5 requests failing with that literal when effort was xhigh/max and thinking was turned off; effort is now sent as high in that case.
Not a quota 429
The parameter combo is rejected. Not weekly limit, not Credit balance is too low. Retrying the same body stays 400.
Effort and thinking are two knobs
Anthropic’s help center: effort is how thorough each reply is; thinking is whether reasoning appears in an expandable block first. Combinations exist, not every combination. Opus 5 thinks by default; the API allows thinking off at high and below; above that the interface rejects. Fable 5 / Mythos-class models reject thinking disabled entirely.
Why the client emitted an illegal combo
GitHub issues since Opus 4.8: alwaysThinkingEnabled: true and effortLevel: xhigh, yet some requests omit thinking while still sending xhigh, hence 400. 2.1.251’s fix is client-side: send high in that case — not a lesson in swapping HTTP headers to beat validation. Validation stays on the API.
Timeline
anthropics/claude-code#76689 and siblings record the 400 literal output_config.effort 'xhigh' is not supported when thinking is disabled on this model.
Thinking docs: Opus 5 may disable thinking at high and below; xhigh/max plus off is 400. Fable 5 / Mythos 5 reject thinking disabled.
Claude Code changelog calls the failure a bug and fixes it by sending effort high. Same release adds PreModelSwitch. Upgrading the client does not make the API accept xhigh+disabled.
Confirmed vs mix-up
Confirmed
Substring, 400, xhigh/max mutually exclusive with thinking disabled, 2.1.251 client sends high, Opus 5 may disable thinking at high and below — changelog and platform docs, rechecked 2026-08-30.
Common mix-ups
“This is quota empty” — status 400, copy talks effort/thinking. “2.1.251 lets you keep max with thinking off” — the fix downshifts to high, it does not lift the mutex. “Change headers and it passes” — this page states official combos only; it does not describe beating parameter checks.
Thinking off vs keeping effort
Must disable thinking: drop effort to high or below
Documented combo: thinking disabled + high/medium/low. Claude Code 2.1.251 sends high if you picked xhigh/max and turned thinking off. Raw API callers change output_config.effort themselves.
Must keep xhigh / max: enable thinking
xhigh/max needs thinking on (Opus 5 and later models with this cap). Fable 5 cannot turn thinking off, so this 400 should not appear there per the docs.
What to do (official combo; no platform switch required)
Check the literal contains is not supported when thinking is disabled. Then check whether effort is xhigh/max and thinking is disabled. Pick one: lower effort, or turn thinking on. Upgrade Claude Code to 2.1.251+ so the client stops sending the illegal combo. This page does not describe forging thinking fields or bypassing capability checks.
This 400 is not a QCode balance error
is not supported when thinking is disabled is upstream rejecting a parameter combo. QCode forwards sold models at official price × service fee; it does not turn an illegal effort/thinking pair legal. Opus 5 has real calls in the usage table. Fix the body; do not hunt a hidden switch that skips the check.
FAQ
What does the full error look like?
Often: API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking. Match on is not supported when thinking is disabled.
Still upgrade after 2.1.251?
Yes. Older clients can still emit xhigh + thinking off. After upgrade the client sends high; raw API callers must still avoid the mutex.
Does Sonnet 5 do this too?
Docs list per model whether thinking can be off. Opus 5 explicitly allows off at high and below and 400 above. Copy that sentence onto other ids only if their row says so.
Why does alwaysThinkingEnabled: true still fail?
Issues describe the client omitting the thinking block while still sending xhigh. That is a client-bug trail; 2.1.251 downshifts. Do not assume the setting equals thinking on every request.
Related to monthly cap / credits?
No. Those are 429 without retry-after or prepaid credits at zero. This is a 400 parameter rejection.
Will QCode rewrite xhigh to high?
This page does not claim the gateway rewrites your effort. Legal combos follow Anthropic docs. 2.1.251’s rewrite is in the official client, not a reseller promise.
Sources
Claude Code changelog 2.1.251 (2026-08-28) fix line and literal. Thinking docs https://docs.claude.com/en/docs/build-with-claude/thinking.md and platform.claude.com effort/thinking notes (rechecked 2026-08-30). Literal sample: anthropics/claude-code#76689. Help center: Change the model, effort, and thinking settings.
Fix the parameter combo before you rotate keys
The 400 is xhigh/max + thinking disabled. Upgrade to Claude Code 2.1.251, or drop effort / enable thinking per the docs. Sold models still bill at official price × service fee.
Related
Claude Opus 5 guide
The model this 400 hits most often; start from whether it allows thinking off.
529 vs 429 vs weekly
Another family of status codes people call “quota” — not this 400.
enforced_spend_limit_reached
Monthly cap 429; do not mix it into an effort/thinking search.
Reading of the Claude Code changelog and Anthropic public docs, not a promise about a given client build. Trust the 400 body you received and current docs. QCode does not bypass model parameter checks.