# Reasoning

IFM models offer multiple reasoning modes. Learn how to set the effort level, interpret the resulting trace, and replay it across turns.

## Reasoning effort

Set the thinking budget with `reasoning_effort` — one of `low`, `medium`, or `high` — passed through `chat_template_kwargs` in the request body.

```
{
  "model": "IFM/K2-Horizon-375B-A23B",
  "messages": [{ "role": "user", "content": "hello" }],
  "chat_template_kwargs": {
    "reasoning_effort": "high"
  }
}
```

Effort support differs by model family: K2 Horizon accepts `low`, `medium`, and `high`; Jais 3 (`IFM/Jais-3-MoVA-36B-A4B`) does not support `medium`.

## Reasoning tokens

The trace comes back in `reasoning_content`, separate from `content` — see [Chat completions API](https://docs.ifm.ai/docs/chat-completions.md) for the full response shape.

Each effort level closes the trace with its own token:

| Effort | Token |
| --- | --- |
| low | `<ifm\|think_faster>` |
| medium | `<ifm\|think_fast>` |
| high (recommended) | `<ifm\|think>` |

Every assistant turn you send back must replay its reasoning trace verbatim — see [Multi-turn conversations](https://docs.ifm.ai/docs/multi-turn.md).

_Last updated: October 14, 2026_
