Skip to main content
Some hosted models support extended thinking. The model generates reasoning tokens before its final answer and returns them in 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 passing chat_template_args. For Nemotron 3.5 Super VL, set reasoning_effort to high.
Pass chat_template_args through extra_body since it extends the standard OpenAI API:
enable_thinking.py

Control reasoning depth

Set the top-level reasoning_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.
Pass reasoning_effort through extra_body since it extends the standard OpenAI API:
reasoning_effort.py
Use reasoning for mathematical calculations, multi-step logic, code generation with complex requirements, and analysis that requires several intermediate steps. For simple questions or text generation, reasoning adds latency and output tokens. Use a model without reasoning support or set reasoning_effort to low.

Parse the response

The message object returns reasoning in reasoning_content and the final answer in content.
Read reasoning_content and content directly off the message object:
parse_reasoning.py
The response body contains both fields on the assistant message:
Response
Baseten includes reasoning tokens in 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:
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.