# Auto model route object

Why Auto picked the model of one assistant reply. Returned by [Get why Auto picked a reply's model](/docs/api-reference/threads/get-message-route). The same choice is announced during the turn as the [`response.model_selected`](/docs/api-reference/objects/streaming-event-object) stream event; this object adds the runner-up, what Auto read in the message, the reply's cost and first-word time, and the retry directions still worth offering. See [Auto Model](/docs/documentation/core-concepts/auto-model).

Choices are kept for 90 days.

## Properties

**`message_id`** string — The assistant message (`msg_`).

**`route_id`** string — The routing decision (`ard_`); the same id `response.model_selected` carried.

**`model`** string — The model key Auto picked.

**`model_title`** string or null — Its customer-facing name, for example `FTG 4 Pro`.

**`effort`** string — `off`, `low`, `medium`, `high` or `max`.

**`speed_tier`** string — `standard` or `priority`.

**`basis`** string — How the pick was made: `jev` (Auto read the message in full), `heuristic` (a quick read: a short message, or the full read did not answer in time), `sticky` (the same model as the previous reply of the task) or `retry` (a retry asked for a smarter or faster answer).

**`summary`** string — One line on what Auto read, in the reader's language, for example `Coding, hard, needs careful reasoning`, or `Quick read` for a quick read.

**`signals`** object — What Auto read in the message:

- **`difficulty`** integer — 0 (very easy) to 4 (very hard).
- **`task`** string — `chat`, `writing`, `translation`, `coding`, `analysis`, `research`, `tool_work` or `extraction`.
- **`deep_reasoning`** boolean — Whether the message needs careful reasoning.
- **`stakes`** integer — 0 (low) to 2 (high).
- **`quick_reply`** boolean — Whether a short answer is enough.


**`runner_up`** object or null — The best option of another model: `model`, `model_title`, `effort`, and `same_price_band` (true when its cost is within 25% of the pick's). `null` when there was none.

**`priority`** object — The priority Auto routed with:

- **`preset`** string — `balanced`, `faster`, `lower_cost`, `best_quality` or `custom`.
- **`set_by`** object — The layer that set it: `layer` (`platform`, `organization`, `department`, `assistant`, `person` or `chat`) and `name` (its display name, in the reader's language).


**`this_reply`** object — What this reply cost and how fast it started:

- **`cost_chf`** string — CHF, as a decimal string.
- **`first_word_s`** number or null — Seconds until the first word.
- **`measured`** boolean — `true` only when both figures were measured on this reply. `false` means they are the estimate Auto routed with — show them as approximate ("about"), never as a measured cost.


**`retry`** object — `smarter` and `faster`: whether to offer each retry direction. A direction this reply already exhausted is `false`.

**`retry_exhausted`** boolean — True when this reply was a retry that found nothing stronger or faster allowed, and ran on the same model and effort.

**`feedback`** string or null — What the person did after this reply: `retry_smarter`, `retry_faster`, `regenerated` or `switched`.

**`created_at`** string — When the route was chosen (ISO 8601).

## Example


```json
{
  "message_id": "msg_7f3a9c2e1b4d4e8f9a0b1c2d3e4f5a6b",
  "route_id": "ard_0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e",
  "model": "ftg-4-pro",
  "model_title": "FTG 4 Pro",
  "effort": "high",
  "speed_tier": "standard",
  "basis": "jev",
  "summary": "Coding, hard, needs careful reasoning",
  "signals": {"difficulty": 3, "task": "coding", "deep_reasoning": true, "stakes": 1, "quick_reply": false},
  "runner_up": {"model": "ftg-4", "model_title": "FTG 4", "effort": "max", "same_price_band": true},
  "priority": {"preset": "balanced", "set_by": {"layer": "department", "name": "Support"}},
  "this_reply": {"cost_chf": "0.031", "first_word_s": 6.4, "measured": true},
  "retry": {"smarter": true, "faster": true},
  "retry_exhausted": false,
  "feedback": null,
  "created_at": "2026-10-24T12:00:00Z"
}
```

## Related Resources

- [Auto Model concept](/docs/documentation/core-concepts/auto-model)
- [Get why Auto picked a reply's model](/docs/api-reference/threads/get-message-route)
- [Streaming events](/docs/api-reference/objects/streaming-event-object)
- [Create a response](/docs/api-reference/responses/create)