anonrouterdocs

Reasoning controls

Set reasoning effort per request, bound to the ticket and validated against each model.

Some models can spend extra effort reasoning before they answer. AnonRouter exposes a single, provider-neutral way to control that effort, and it validates your choice against what the target model actually attests.

Setting effort

Send one of two request fields on both the ticket and the completion:

  • reasoning_effort: a string, one of minimal, low, medium, high, xhigh, max, or none to turn reasoning off.
  • reasoning: an object { "enabled": boolean, "effort": "..." } for the same control in structured form.
{
  "model": "deepseek/deepseek-v3.2",
  "max_completion_tokens": 512,
  "reasoning_effort": "high"
}

Omitting both fields uses the model's own default. Setting reasoning_effort to none (or reasoning.enabled: false) disables reasoning where the model allows it.

Check the model first

Reasoning fields only apply to models that attest reasoning support. Read capabilities.reasoning from GET /v1/models to confirm supported, effort_configurable, and the supported_efforts list before sending an effort.

Reasoning is bound to the ticket

The reasoning selection is part of what a ticket authorizes. Set the same reasoning fields when you issue the ticket and when you send the completion. If they differ, the request is rejected with ticket_reasoning_mismatch so a redemption cannot quietly change the reasoning behavior you paid for.

# Issue a ticket that authorizes high-effort reasoning.
curl "$ANONROUTER_BASE_URL/inference/tickets" \
  -H "Authorization: Bearer $ANONROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek/deepseek-v3.2",
    "max_completion_tokens": 512,
    "reasoning_effort": "high"
  }'

Validation

AnonRouter validates the selection against the model's attested capabilities and returns a 400 when it does not fit:

CodeMeaning
reasoning_conflictThe flat and structured fields disagree, or an effort was combined with a disable signal.
reasoning_not_supportedAn effort was requested on a model that does not reason.
reasoning_effort_not_configurableThe model reasons but does not expose a configurable effort.
reasoning_effort_unsupportedThe requested level is not in the model's supported efforts.
reasoning_not_disableableReasoning was disabled on a model that always reasons.

The effort is passed to the model as a normalized field. AnonRouter does not add any provider-specific reasoning knobs beyond the controls above.

On this page