reasoning_content, separate from the final content.
Supported models
Models not listed here don’t support reasoning.
Enable thinking
For GLM 5.2 and Nemotron Ultra, enable thinking by passingchat_template_args. For Nemotron 3.5 Super VL, set reasoning_effort to high.
- Python
- JavaScript
- cURL
Pass
chat_template_args through extra_body since it extends the standard OpenAI API:enable_thinking.py
Control reasoning depth
Set the top-levelreasoning_effort parameter to control how much reasoning a supported model performs. Only the models in this table apply the parameter.
Nemotron 3.5 Super VL defaults to non-thinking responses. Set
reasoning_effort to high to enable reasoning, or none to turn it off. The other accepted values also enable reasoning. Setting only chat_template_args.enable_thinking: true returns HTTP 400; use reasoning_effort instead.
Muse Spark Open always reasons. none and minimal are accepted and run at low, the lightest level. Unknown values return HTTP 400. Use low or medium to reduce reasoning-token usage and latency compared with the xhigh default.
Lower reasoning depths reduce reasoning-token usage and latency. Higher depths use more output tokens for reasoning. Accepted values can map to the same depth. On models that support a non-thinking mode, set reasoning_effort to none to request a direct answer.
OpenAI GPT 120B can still return reasoning_content when you set reasoning_effort to none. On Nemotron Ultra, none disables reasoning and high enables it. DeepSeek V4.1 Flash and DeepSeek V4.1 Flash Fast do not support low; a request with low still reasons at the default depth, so use high, max, or none.
Baseten treats reasoning_effort: "none" as low for GLM 5.3, GLM 5.3 Fast, and GLM 5.3 Flash. Setting none doesn’t disable reasoning. These models also accept chat_template_args.enable_thinking: false. Responses can include reasoning_content with either setting.
- Python
- JavaScript
- cURL
Pass
reasoning_effort through extra_body since it extends the standard OpenAI API:reasoning_effort.py
reasoning_effort to low.
Parse the response
The message object returns reasoning inreasoning_content and the final answer in content.
- Python
- JavaScript
- cURL
Read
reasoning_content and content directly off the message object:parse_reasoning.py
Response
completion_tokens and counts them toward your total usage and billing.
Set a reasoning token budget
max_tokens caps the whole completion, reasoning tokens included. reasoning.max_tokens caps reasoning tokens alone: once the model has generated that many reasoning tokens, it stops thinking and spends the rest of max_tokens on its final answer. Set max_tokens above the reasoning budget so the model has room to answer.
DeepSeek V4 Flash 0731 enforces reasoning.max_tokens; other reasoning models ignore it. On DeepSeek V4 Flash 0731, reasoning stops at 4,096 tokens by default, including at reasoning_effort: max. Raise the budget when a hard problem needs more thinking room:
- Python
- JavaScript
- cURL
Pass
reasoning through extra_body since it extends the standard OpenAI API:reasoning_budget.py
Next steps
Model APIs overview
Review supported models, pricing, and features.
Structured outputs
Constrain reasoning model output to a JSON schema.