Error message
When this error occurs
The run asked for thinking and sent atool_choice that compels a tool call — {"kind":"any"} as
much as {"kind":"specific_tool"}. Those cannot be honoured together: with a call forced, the model
either rejects the request or silently stops reasoning and answers in a fraction of the tokens —
measurably worse answers, with nothing in the response to say thinking didn’t happen.
Rather than return 200 for a request only half of which was honoured, the API refuses it.
The thinking setting counts whether it came from this run’s config_override or the conversation’s
defaults; what matters is that something you sent asked for it. {"kind":"auto"} never conflicts.
How to fix
Pick one:- Keep the forced call — send
thinking: "disabled"for this run. Per-runconfig_override.thinkingis the easiest place to do that when the conversation default asks for thinking. - Keep thinking — use
tool_choice: {"kind":"auto"}. The model still sees every tool you declared and can call them; it just isn’t compelled to. If you need a particular tool called, name it in the message — a reasoning model that has been told what to call generally calls it.
If you never sent thinking
There is nothing to fix: forcing a call without mentioning thinking is accepted, and the run does not
reason. Thinking by default is the platform’s choice and your tool_choice is yours, so the default gives
way rather than failing the run. Existing code that pins a tool keeps working unchanged.
Not affected
Structured output (output_format_schema) does not conflict with thinking, even though it is
implemented with a tool internally — that tool is not a choice of yours, and the platform handles the
interaction for you.
