Loading
Skip to content
RedRouterRedRouter
Dashboard ↗

Reasoning controls

Handle reasoning output separately from the final answer, and budget for the whole generation. Some models may emit visible reasoning, but RedRouter currently provides no configurable reasoning-effort or thinking-token budget.

Controls do not set a reasoning budget

InterfaceAccepted controlsCurrent behavior
Chat Completionsreasoning_effort, reasoning, enable_thinking, thinking, thinking_budget, chat_template_kwargs, output_configAccepted and ignored.
Responsesreasoning.effort, reasoning.summaryValidated compatibility values, then ignored.
Messagesthinking, output_config.effortValidated compatibility shapes, then ignored.

These fields do not change the selected model, activate a hidden budget, or guarantee visible reasoning. Omit them when writing a new integration. Messages output_config.format is separate: it controls structured output.

Responses accepts effort values none, minimal, low, medium, high, xhigh, and max; summary values are auto, concise, and detailed. Messages thinking types are adaptive, enabled, and disabled; effort values are low, medium, high, xhigh, and max. Unsupported values or extra nested fields return 400 even though valid controls are ignored.

Read available reasoning

InterfaceReasoning output
Chat Completionsmessage.reasoning_content when nonempty; streaming uses delta.reasoning_content.
ResponsesReasoning items with reasoning_text content; streaming uses response.reasoning_text.delta and done events.
MessagesReasoning deltas are omitted; output contains visible answer text and tool calls.

Do not assume a model always emits reasoning or that reasoning text is a stable schema. For an application that needs an explanation, explicitly ask for a short rationale in the final answer or in your output schema. Treat any model-generated explanation as generated content requiring the same review as the answer.

Replay history deliberately

Chat Completions preserves assistant reasoning replay. It uses reasoning_content if present, otherwise a string reasoning, otherwise text/summary entries in reasoning_details. Only one representation is used. Encrypted details are dropped, and reasoning fields on non-assistant messages are omitted. Replayed visible reasoning becomes input and counts toward the next request's input budget.

Responses accepts reasoning input items but omits both plaintext and encrypted reasoning from model-visible history. Keep the actual message and tool-call/result items needed for the task. Messages omits assistant thinking and redacted-thinking blocks, including signatures. Compaction summary text is preserved.

A reasoning history from another service cannot restore its private state through RedRouter. See Compatibility and Migration.

Budget for complete output

Use the endpoint's ordinary output limit. Current models are capped at 8,192 output tokens, including reported reasoning where the model counts it as output. An answer can truncate before a useful final response or before tool arguments finish. Inspect finish_reason, status, or stop_reason and reject incomplete structured results.

Reported reasoning-token details are part of output usage, not extra tokens to add to it. Chat uses completion_tokens_details.reasoning_tokens; Responses uses output_tokens_details.reasoning_tokens. Missing details do not establish zero reasoning use. See Streaming, Token counting, and Billing.

↑ ↓ to select · Enter to open · Esc to close