# Auto model rule object

One Auto model rule — of the organisation, a department or an assistant — together with what it inherits from the layers above it, what it may set, and how it meets other rules. Returned by [Get an Auto model rule](/docs/api-reference/auto-model/get-rule), [Create or replace an Auto model rule](/docs/api-reference/auto-model/update-rule) and [Delete an Auto model rule](/docs/api-reference/auto-model/reset-rule). See [Auto Model](/docs/documentation/core-concepts/auto-model) for what the layers mean.

## Properties

**`exists`** boolean

`false` when the scope has no stored rule; every other field then describes the scope as if it had an empty rule (it inherits everything).

**`scope`** object

The rule's scope.

- **`type`** string — `organization`, `department` or `assistant`.
- **`id`** string — The organisation, department (`dept_`) or assistant (`asst_`) id.
- **`name`** string — Display name, in the reader's language for the organisation ("Organisation").
- **`people`** integer or null — How many people the rule reaches.
- **`sub_departments`** integer or null — For a department, how many departments sit below it.


**`settings`** object

The stored settings. A field that is absent inherits from the layer above. Every field is optional:

- **`enabled`** boolean — `false` switches Auto off for this scope and everything below it.
- **`preset`** string — `balanced`, `faster`, `lower_cost`, `best_quality` or `custom`.
- **`weights`** object — `quality`, `speed`, `cost` (each at least 0.05, adding up to 1). Present with `preset: "custom"`.
- **`pool`** object — `mode` (`all_allowed` or `pick`) and `models` (model keys, read only with `pick`).
- **`effort`** object — `min` and `max`, each `off`, `low`, `medium`, `high` or `max`.
- **`max_chf_per_message`** string — Cost limit per message in CHF, a decimal string with up to 4 decimals (above 0, at most 100).
- **`allow_priority_tier`** boolean — Whether Auto may use the faster, dearer priority speed tier.


**`enforced`** boolean

When `true`, nothing below this rule can change its preset.

**`people_can_choose`** boolean or null

`false` stops people and chats below this rule from choosing their own preset. `null` means this rule inherits the value above it.

**`locked_reason`** string or null

Shown to people who cannot change the setting because of this rule (up to 280 characters).

**`inherited`** object

What the scope gets from the layers above it, merged. A client shows these as the "Inherit" values.

- **`preset`** string, **`weights`** object, **`effort`** object, **`pool`** object, **`max_chf_per_message`** string or null, **`allow_priority_tier`** boolean, **`people_can_choose`** boolean, **`enabled`** boolean — the merged values.
- **`locked_by`** object or null — The enforced layer that locked the preset above this scope: `layer`, `scope_id`, `name`.
- **`locked_reason`** string or null — That layer's reason.
- **`provenance`** object — For each setting, the layer that decided it: `layer` (`platform`, `organization`, `department`, `assistant`), `scope_id` and `name`.


**`bounds`** object

What this rule may set.

- **`effort`** object — The widest effort range it may use (`min`, `max`).
- **`max_chf_per_message`** string or null — The highest cost limit it may set; `null` when nothing above set one.
- **`models`** array of strings — Model keys it may pick.
- **`excluded`** array — Every other model, once, with the first reason it is out: `key`, `reason` (`organization` — the organisation's model settings; `assistant` — the assistant's own model settings, assistant rules only; `pick_list` — not in the pick list inherited from above) and `source` (the layer, as `layer`, `scope_id`, `name`).


**`clashes`** array

How this rule meets other rules. Each entry:

- **`kind`** string — `shadowed_by` (an enforced rule above decides this setting, so this rule's value has no effect on its people), `shadows` (this enforced rule overrides a setting of a rule below), or `no_effect` (the value cannot apply, for example a limit looser than the one above).
- **`rule`** object — The other rule: `type`, `id`, `name`.
- **`setting`** string — `preset`, `pool`, `effort`, `max_chf_per_message`, `allow_priority_tier`, `enabled` or `people_can_choose`.
- **`value`** string or null — The other rule's preset on `shadowed_by`; otherwise `null`.
- **`people`** integer or null — How many people the clash affects; `null` only on an assistant rule's `no_effect`.


**`updated_at`** string or null

When the rule was last saved (ISO 8601); `null` for a scope that was never saved.

**`updated_by`** object or null

Who saved it: `id` and `name`.

## Example


```json
{
  "exists": true,
  "scope": {"type": "department", "id": "dept_5a1c7e2b9d4f4a8e", "name": "Support", "people": 37, "sub_departments": 0},
  "settings": {"preset": "lower_cost", "max_chf_per_message": "0.10"},
  "enforced": true,
  "people_can_choose": false,
  "locked_reason": "Support runs on a fixed budget",
  "inherited": {
    "preset": "balanced",
    "weights": {"quality": 0.6, "speed": 0.2, "cost": 0.2},
    "effort": {"min": "low", "max": "high"},
    "max_chf_per_message": "0.50",
    "allow_priority_tier": false,
    "people_can_choose": true,
    "enabled": true,
    "pool": {"mode": "all_allowed", "models": []},
    "locked_by": null,
    "locked_reason": null,
    "provenance": {
      "preset": {"layer": "platform", "scope_id": null, "name": "Platform default"},
      "effort": {"layer": "organization", "scope_id": "org_7d2c9e41a5b84f0e", "name": "Organisation"},
      "max_chf_per_message": {"layer": "organization", "scope_id": "org_7d2c9e41a5b84f0e", "name": "Organisation"}
    }
  },
  "bounds": {
    "effort": {"min": "low", "max": "high"},
    "max_chf_per_message": "0.50",
    "models": ["ftg-4", "ftg-4-light"],
    "excluded": [
      {"key": "ftg-4-pro", "reason": "organization", "source": {"layer": "organization", "scope_id": "org_7d2c9e41a5b84f0e", "name": "Organisation"}}
    ]
  },
  "clashes": [],
  "updated_at": "2026-10-24T12:00:00Z",
  "updated_by": {"id": "usr_3e8b1f6c2a7d4c9e", "name": "Alex Meier"}
}
```

## Related Resources

- [Auto Model concept](/docs/documentation/core-concepts/auto-model)
- [List Auto model rules](/docs/api-reference/auto-model/list-rules)
- [Get an Auto model rule](/docs/api-reference/auto-model/get-rule)
- [Create or replace an Auto model rule](/docs/api-reference/auto-model/update-rule)
- [Delete an Auto model rule](/docs/api-reference/auto-model/reset-rule)
- [Preview an Auto model rule](/docs/api-reference/auto-model/simulate)