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

# ModelReasoning

Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models.

## Example Usage

```typescript theme={null}
import { ModelReasoning } from "@openrouter/sdk/models";

let value: ModelReasoning = {
  mandatory: false,
};
```

## Fields

| Field               | Type                                                       | Required             | Description                                                                                                                                                        | Example |
| ------------------- | ---------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
| `defaultEffort`     | [models.DefaultEffort](../models/defaulteffort.mdx)        | :heavy\_minus\_sign: | N/A                                                                                                                                                                | medium  |
| `defaultEnabled`    | *boolean*                                                  | :heavy\_minus\_sign: | Default reasoning enabled state when the client does not set `reasoning.enabled`.                                                                                  |         |
| `mandatory`         | *boolean*                                                  | :heavy\_check\_mark: | When true, reasoning cannot be disabled and effort "none" is rejected.                                                                                             |         |
| `supportedEfforts`  | [models.ReasoningEffort](../models/reasoningeffort.mdx)\[] | :heavy\_minus\_sign: | Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted.      |         |
| `supportsMaxTokens` | *boolean*                                                  | :heavy\_minus\_sign: | Present and `true` when the model accepts `reasoning.max_tokens` in requests (Anthropic-style) instead of or in addition to `reasoning.effort`. Omitted otherwise. |         |
