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

# Reasoning

> Control how much a model thinks before it answers, and whether the reasoning text is returned.

Reasoning models think before they answer. Ask for more or less of it with the `reasoning` object,
and choose whether the reasoning text comes back. A model supports it when its
`supported_features` in [`GET /v1/models`](/api-reference/models) include `reasoning`; other
models ignore the parameter.

## Set the effort

```json theme={null}
{
  "model": "openai/gpt-5",
  "messages": [{"role": "user", "content": "What is 17 * 23?"}],
  "reasoning": {"effort": "low"}
}
```

`effort` is one of `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, or `max`. The OpenAI-style
`reasoning_effort` field is accepted as an alias; if both are sent they must match.

Instead of an effort, `reasoning.max_tokens` sets a token budget for thinking. The two are
mutually exclusive, and a model that cannot express a budget returns `400`.

## Read or hide the reasoning

Models that return their reasoning put it in `message.reasoning_content`, or
`delta.reasoning_content` while streaming. OpenAI models return no reasoning text. Either way,
`usage.completion_tokens_details.reasoning_tokens` counts the thinking, and it is billed as
completion tokens.

To keep the reasoning out of the response, send `"reasoning": {"exclude": true}` or
`"include_reasoning": false`. The tokens are still generated and billed.

## Related

<CardGroup cols={2}>
  <Card title="Chat completions" icon="code" href="/api-reference/chat-completions" />

  <Card title="Billing" icon="credit-card" href="/get-started/billing" />
</CardGroup>
