Reasoning models
Reasoning output, metering, and multi-turn conversations.
Reasoning models on the platform, such as GLM-5.2 and DeepSeek V4, reason before answering. Reasoning and answer text are returned separately. Reasoning tokens are metered separately and billed as output.
How reasoning is returned
OpenAI protocol
Reasoning appears in message.reasoning_content (delta.reasoning_content when streaming), and the answer in content:
{
"message": {
"content": "ok",
"reasoning_content": "The user asked for only ok, so I should…"
},
"usage": {
"completion_tokens": 25,
"completion_tokens_details": {"reasoning_tokens": 22, "text_tokens": 3}
}
}Anthropic protocol
Reasoning appears in thinking blocks (thinking_delta events when streaming), and the answer in text blocks:
{
"content": [
{"type": "thinking", "thinking": "The user asked…", "signature": "..."},
{"type": "text", "text": "ok"}
]
}Multi-turn conversations
- Return historical assistant messages unchanged, including reasoning. If you must trim reasoning, remove whole blocks rather than editing their internal fields.
- The gateway normalizes protocol issues in historical reasoning blocks, such as missing
signatureor emptycontent; the client need not handle them.
Metering and token budgets
- Reasoning tokens count toward
completion_tokens, with a breakdown incompletion_tokens_details.reasoning_tokens, and are billed at the output price. max_tokensincludes reasoning. Use a larger limit for reasoning models so reasoning does not consume the budget and truncate the answer.
Control reasoning
Models differ in their support for reasoning controls, such as enabling reasoning or limiting its length. See the model detail page. Unsupported controls are safely ignored by the gateway without failing the request.