PRODUCTION SCENARIO
A summarization service runs on Claude Sonnet 4.6 with thinking set to enabled, budget_tokens 8,000 and max_tokens 16,000, and the team uses the budget as its lever on how deeply the model reasons. They pin the service to Claude Opus 5 and every request comes back 400, with a message beginning 'thinking.type.enabled' is not supported. They still want a lever on reasoning depth.
Which change to the request restores that control?
Answering here is anonymous. Nothing is saved unless you sign in.
Show answer and explanation
Answer: Drop budget_tokens, set thinking type to adaptive, and set output_config.effort
Claude 4.7 and later reject thinking.type enabled and its budget, so the migration is to remove budget_tokens, switch to adaptive thinking, and use effort as the depth control with max_tokens as the hard ceiling. Keeping the budget under max_tokens is the rule for models where manual thinking still runs, and it was already satisfied here. The interleaved-thinking header is how you get reasoning between tool calls on Opus 4.5 and Sonnet 4.5; the API accepts it on any model and ignores it where unsupported, so the rejected parameter is untouched. Pairing effort with a budget is documented for Claude Opus 4.5, the one extended-thinking-only model that reads effort, and on this model the budget itself is what fails.