> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomask.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Reasoning

> Control thinking depth and read the model’s reasoning tokens.

> [!NOTE]
>
> Use a current public model ID from [Models](https://nomask.ai/models) or `GET /models`. Example IDs and options must match the selected model's advertised capabilities and limits.

Reasoning-capable models think before they answer and expose that thinking to you. You control how hard they think, or turn it off entirely for fast, direct answers.

## Reading reasoning output

Thinking arrives as `reasoning_content`, separate from the answer: on the message object in normal responses, and as `delta.reasoning_content` chunks on streams (they come before the answer tokens).

```json theme={"system"}
{
  "choices": [{
    "message": {
      "content": "Yes: assume sqrt(2) = a/b in lowest terms, then ...",
      "reasoning_content": "The user wants a proof by contradiction. Start from ..."
    }
  }]
}
```

## Controlling effort

Use the `reasoning` object, or the `reasoning_effort` shorthand. Higher effort can allow deeper thinking on hard problems, with more tokens and latency. Results depend on the model.

```json theme={"system"}
{
  "model": "nomask-1.2",
  "messages": [{"role": "user", "content": "Prove that sqrt(2) is irrational."}],
  "reasoning": {"enabled": true, "effort": "high"}
}
```

Valid efforts are `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`, in that order. Check `capabilities.reasoning` and `capabilities.supported_reasoning_efforts` via `GET /models`. Models without reasoning ignore reasoning controls. An empty or missing supported-efforts array means the model chooses the depth; NoMask sends no effort override and does not assume any level is supported.

A supported requested level is used exactly. Otherwise NoMask uses the highest supported level at or below your request, or the lowest supported level if all supported levels are higher. For example,`max` uses `high` when that is the model’s strongest supported level; it does not create an unsupported Max mode. Omitting reasoning settings keeps the model’s defaults.

## Disabling reasoning

Set `"reasoning": {"enabled": false}`, or `"reasoning_effort": "none"`, for direct answers with no thinking pass. Some models are flagged `reasoning_always_on`: they cannot stop thinking, so they ignore the disable request and tell you so in a `nomask.warnings` entry on the response rather than failing. An always-on model uses its lowest configured supported effort for a disable request, or its own default depth when no supported levels are configured. In chat, Off is saved on your device even when the currently selected model cannot honor it.

## Reasoning and billing

Reasoning tokens are output tokens: they count inside `completion_tokens` and are billed at the model's output rate. They also count against `max_tokens`, so give reasoning-heavy requests generous ceilings.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.