Skip to main content
HTTP status: 400

Error message

When this error occurs

defaults.thinking (or a per-run config_override.thinking) asked a model that is not offered thinking to reason. That covers two cases, and the API does not distinguish them:
  • the model rejects the provider’s thinking parameters outright, or
  • nobody has measured whether it accepts them, so it isn’t offered.
"disabled" is the exception: it is accepted on every model, because it asks for what a model without thinking already does. Only a setting that asks for reasoning — an effort level or a token budget — can hit this error. Support is declared per model and per platform: a model can accept thinking on one provider and not on another. Every Claude model is offered the same thinking on Bedrock and on Snowflake Cortex; the OpenAI models are offered none on either.

When you’ll see it

Because support is per platform, this arrives at one of two moments:
  • At conversation or run creation (400) when no platform offers the model thinking at all.
  • On the run itself (a failed run, not a 400) when another platform offers it but the one this run landed on does not — its data plane decides which cell executes, and creation does not resolve that.

How to fix

Drop the thinking field, send "disabled", or move the conversation to a model that supports it. GET /model-inference/models lists what is available. If you want the model’s own behaviour rather than a specific setting, omit the field entirely — a model that thinks by default is already sent the right switch without you asking.