# Get Auto model analytics for a period

For a period (default: this month so far), report what Auto spent, how much that saved against the same replies priced on the baseline model (FTG 4), the average time to the first word and how often people asked for a smarter answer — for the whole organisation and per rule, with the models Auto picked as shares. See [Auto Model](/docs/documentation/core-concepts/auto-model#analytics).

Money is a CHF string with two decimals; percentages and seconds are numbers with one decimal. There is no reply count and no cost per reply. A value that cannot be stated is `null`, never `0`.

## Authentication

Requires authentication (Bearer token or `x-api-key`) and the `view_billing` capability in the organisation. Requires the Auto model to be switched on for the organisation: while it is off the answer is `404 AUTO_MODEL_NOT_ENABLED` — hide the section.

#### Path Parameters

**`org_id`** string required

The organisation (`org_` prefix). An organisation that does not exist is `404 ORG_NOT_FOUND`.

#### Query Parameters

**`start_date`** string optional

First day, inclusive (`YYYY-MM-DD`). Default: the first day of this month.

**`end_date`** string optional

Last day, inclusive (`YYYY-MM-DD`). Default: today. An end before the start is `422 INVALID_DATE_RANGE`; more than 366 days is `422 DATE_RANGE_TOO_LARGE`.

## Returns

Returns `200 OK` with:

**`organization_id`** string, **`start_date`** string, **`end_date`** string — The period.

**`data_from`** string — The first day the figures can cover. Auto keeps 90 days of detail, so for an older period this is later than `start_date`.

**`baseline_model`** object — The model the saving is measured against: `key` and `title` (FTG 4).

**`baseline_basis`** string — `same_tokens`: the same replies' tokens priced on the baseline model. The baseline model might have written a longer or shorter answer.

**`totals`** object — The organisation's money figures:

- **`spend_chf`** — CHF spent on Auto replies, including `routing_spend_chf`.
- **`routing_spend_chf`** — CHF spent choosing models.
- **`baseline_spend_chf`** — What the same replies would have cost on the baseline model.
- **`saving_chf`** — `baseline_spend_chf` minus `spend_chf`; negative when Auto cost more.
- **`saving_pct`** — `saving_chf` as a percentage of `baseline_spend_chf`; can be negative.
- **`cost_vs_baseline_pct`** — `spend_chf` as a percentage of `baseline_spend_chf`.
- **`enough_data`** — `false` when fewer than 20 replies of the period could be measured; every value above is then `null`.


**`speed`** object — `avg_first_word_s` (average seconds to the first word, streamed replies only), `escalation_rate_pct` (the share of replies, retries themselves excluded, after which the person asked for a smarter answer) and `enough_data` (`false` when fewer than 20 replies have a measured first word; both values are then `null`).

**`rules`** array — One row per rule that decided Auto's priority for some replies: the organisation, departments by name, assistants by name, then people's own choice, chat choice and the platform default. A rule without replies is left out. Each row:

- **`rule`** — `layer` (`organization`, `department`, `assistant`, `people_choice`, `chat_choice` or `platform_default`), `scope_id` (`null` for the last three) and `name` (in the reader's language for the last three).
- **`money`** — `spend_chf`, `baseline_spend_chf`, `saving_chf`, `saving_pct`, `cost_vs_baseline_pct` and `enough_data` (fewer than 20 measured replies of this rule: all `null`). The cost of choosing models is not attributed to a rule.
- **`speed`** — `avg_first_word_s`, `escalation_rate_pct`, `enough_data`, as above for this rule.
- **`picks`** — The models Auto picked for this rule, by share, descending: `model` (`key`, `title`; `title` is `null` for a model that left the catalogue) and `share_pct`. Shown even below 20 measured replies.


Request

```bash cURL
curl "https://api.aitronos.com/v1/analytics/auto-model/org_7d2c9e41a5b84f0e?start_date=2026-10-01&end_date=2026-10-27" \
  -H "X-API-Key: $FREDDY_API_KEY"
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")

report = client.analytics_auto_model.get_auto_model_analytics(
    org_id="org_7d2c9e41a5b84f0e",
    start_date="2026-10-01",
    end_date="2026-10-27",
)
print(report["totals"])
```


```python Python
import os
import requests

response = requests.get(
    "https://api.aitronos.com/v1/analytics/auto-model/org_7d2c9e41a5b84f0e",
    headers={"X-API-Key": os.environ["FREDDY_API_KEY"]},
    params={"start_date": "2026-10-01", "end_date": "2026-10-27"},
)
print(response.json()["totals"])
```


```javascript JavaScript
const url = new URL('https://api.aitronos.com/v1/analytics/auto-model/org_7d2c9e41a5b84f0e');
url.searchParams.set('start_date', '2026-10-01');
url.searchParams.set('end_date', '2026-10-27');
const response = await fetch(url, { headers: { 'X-API-Key': process.env.FREDDY_API_KEY } });
const report = await response.json();
console.log(report.totals, report.rules);
```

200 OK

```json
{
  "organization_id": "org_7d2c9e41a5b84f0e",
  "start_date": "2026-10-01",
  "end_date": "2026-10-27",
  "data_from": "2026-10-01",
  "baseline_model": {"key": "ftg-4", "title": "FTG 4"},
  "baseline_basis": "same_tokens",
  "totals": {
    "spend_chf": "0.76",
    "routing_spend_chf": "0.02",
    "baseline_spend_chf": "0.78",
    "saving_chf": "0.02",
    "saving_pct": 2.6,
    "cost_vs_baseline_pct": 97.4,
    "enough_data": true
  },
  "speed": {"avg_first_word_s": 2.8, "escalation_rate_pct": 4.1, "enough_data": true},
  "rules": [
    {
      "rule": {"layer": "department", "scope_id": "dept_5a1c7e2b9d4f4a8e", "name": "Support"},
      "money": {"spend_chf": "0.23", "baseline_spend_chf": "0.38", "saving_chf": "0.15", "saving_pct": 40.0, "cost_vs_baseline_pct": 60.0, "enough_data": true},
      "speed": {"avg_first_word_s": 2.7, "escalation_rate_pct": 8.3, "enough_data": true},
      "picks": [
        {"model": {"key": "ftg-4-light", "title": "FTG 4 Light"}, "share_pct": 72.0},
        {"model": {"key": "ftg-4", "title": "FTG 4"}, "share_pct": 28.0}
      ]
    },
    {
      "rule": {"layer": "people_choice", "scope_id": null, "name": "People's own choice"},
      "money": {"spend_chf": null, "baseline_spend_chf": null, "saving_chf": null, "saving_pct": null, "cost_vs_baseline_pct": null, "enough_data": false},
      "speed": {"avg_first_word_s": null, "escalation_rate_pct": null, "enough_data": false},
      "picks": [
        {"model": {"key": "ftg-4-pro", "title": "FTG 4 Pro"}, "share_pct": 100.0}
      ]
    }
  ]
}
```

Errors

```json 403 Forbidden
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "You don't have permission to perform this action.",
    "type": "authorization_error",
    "status": 403,
    "details": {"required_capability": "view_billing"},
    "trace_id": "486070b2-e72c-422d-ab55-4d8f60cae6ab",
    "timestamp": "2026-10-27T04:52:06Z"
  }
}
```


```json 404 Not Found
{
  "success": false,
  "error": {
    "code": "AUTO_MODEL_NOT_ENABLED",
    "message": "Auto isn't available for this organisation.",
    "type": "client_error",
    "status": 404,
    "details": {"feature": "auto_model"},
    "trace_id": "5c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
    "timestamp": "2026-10-27T04:51:33Z"
  }
}
```


```json 422 Unprocessable Entity
{
  "success": false,
  "error": {
    "code": "INVALID_DATE_RANGE",
    "message": "The end date is before the start date.",
    "type": "validation_error",
    "status": 422,
    "details": {"start_date": "2026-10-20", "end_date": "2026-10-01"},
    "trace_id": "74eef989-9927-4514-9b38-dde90bf1c122",
    "timestamp": "2026-10-27T04:52:06Z"
  }
}
```

## Related Resources

- [Auto Model concept](/docs/documentation/core-concepts/auto-model)
- [Auto model API introduction](/docs/api-reference/auto-model/introduction)
- [List Auto model rules](/docs/api-reference/auto-model/list-rules)
- [Get why Auto picked a reply's model](/docs/api-reference/threads/get-message-route)