# Check who gets what under the Auto model rules

Explain which Auto model settings apply to one person, optionally in one assistant: the merged policy, which layer decided each setting, and every layer's value and status from the platform default down to the chat. Without `user_id` it answers for yourself. See [Auto Model](/docs/documentation/core-concepts/auto-model).

## Authentication

Requires authentication (Bearer token or `x-api-key`) and membership of the organisation. Anyone may read their own; reading another member needs the `manage_users` capability. With `assistant_id`, an admin reads any assistant its key reaches, anyone else needs view access to that assistant. Requires the Auto model to be switched on for the organisation.

#### Path Parameters

**`organization_id`** string required

The organisation (`org_` prefix).

#### Query Parameters

**`user_id`** string optional

The person (`usr_`); default yourself. A person who is not a member answers `404 AUTO_MODEL_SCOPE_NOT_FOUND`.

**`assistant_id`** string optional

An assistant of the organisation (`asst_`), to include its rule. One that is not in the organisation answers `404 AUTO_MODEL_SCOPE_NOT_FOUND`.

## Returns

Returns `200 OK` with:

**`person`** object — `id`, `name` and `departments` (the department path the rules come from, top first, down to the primary department).

**`assistant`** object or null — `type`, `id`, `name` of the asked assistant.

**`policy`** object — The merged policy:

- **`enabled`** boolean, **`preset`** string, **`weights`** object (`quality`, `speed`, `cost`), **`pool`** object (`mode`, `models`), **`pool_lists`** array (every pick list that applies; the allowed models are their intersection), **`effort`** object (`min`, `max`), **`max_chf_per_message`** string or null, **`allow_priority_tier`** boolean, **`people_can_choose`** boolean.
- **`locked_by`** object or null — The enforced layer that froze the preset: `layer`, `scope_id`, `name`.
- **`locked_reason`** string or null.
- **`provenance`** object — For each setting, the layer that decided it (`layer`, `scope_id`, `name`).
- **`layers`** array — One row per layer, platform first and chat last: `layer` (`layer`, `scope_id`, `name`) and `cells`, one per setting, each with `value`, `status` (`decides`, `overridden`, `narrows`, `locked`, `not_allowed`, `inherits` or `none`) and `locked_by`.


Display names of the platform, organisation and chat layers are in the reader's language (for example "Platform default", "Organisation", "This chat").

Request

```bash cURL
curl "https://api.aitronos.com/v1/organizations/org_7d2c9e41a5b84f0e/auto-model/effective?user_id=usr_b9a81223cd73433b" \
  -H "X-API-Key: $FREDDY_API_KEY"
```


```python Python SDK
from aitronos import Aitronos

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

effective = client.auto_model.get_auto_model_effective(
    organization_id="org_7d2c9e41a5b84f0e",
    user_id="usr_b9a81223cd73433b",
)
print(effective)
```


```python Python
import os
import requests

response = requests.get(
    "https://api.aitronos.com/v1/organizations/org_7d2c9e41a5b84f0e/auto-model/effective",
    headers={"X-API-Key": os.environ["FREDDY_API_KEY"]},
    params={"user_id": "usr_b9a81223cd73433b"},
)
print(response.json()["policy"]["provenance"])
```


```javascript JavaScript
const url = new URL('https://api.aitronos.com/v1/organizations/org_7d2c9e41a5b84f0e/auto-model/effective');
url.searchParams.set('user_id', 'usr_b9a81223cd73433b');
const response = await fetch(url, { headers: { 'X-API-Key': process.env.FREDDY_API_KEY } });
const data = await response.json();
console.log(data.policy.layers);
```

200 OK

```json
{
  "person": {"id": "usr_b9a81223cd73433b", "name": "Sam Keller", "departments": ["Support"]},
  "assistant": null,
  "policy": {
    "enabled": true,
    "preset": "balanced",
    "weights": {"quality": 0.6, "speed": 0.2, "cost": 0.2},
    "pool": {"mode": "all_allowed", "models": []},
    "pool_lists": [],
    "effort": {"min": "off", "max": "max"},
    "max_chf_per_message": null,
    "allow_priority_tier": false,
    "people_can_choose": true,
    "locked_by": null,
    "locked_reason": null,
    "provenance": {
      "preset": {"layer": "platform", "scope_id": null, "name": "Platform default"},
      "effort": {"layer": "platform", "scope_id": null, "name": "Platform default"}
    },
    "layers": [
      {
        "layer": {"layer": "platform", "scope_id": null, "name": "Platform default"},
        "cells": {"preset": {"value": "balanced", "status": "decides", "locked_by": null}}
      },
      {
        "layer": {"layer": "organization", "scope_id": "org_7d2c9e41a5b84f0e", "name": "Organisation"},
        "cells": {"preset": {"value": null, "status": "inherits", "locked_by": null}}
      },
      {
        "layer": {"layer": "department", "scope_id": "dept_5a1c7e2b9d4f4a8e", "name": "Support"},
        "cells": {"preset": {"value": null, "status": "inherits", "locked_by": null}}
      },
      {
        "layer": {"layer": "person", "scope_id": "usr_b9a81223cd73433b", "name": "Sam Keller"},
        "cells": {"preset": {"value": null, "status": "none", "locked_by": null}}
      },
      {
        "layer": {"layer": "chat", "scope_id": null, "name": "This chat"},
        "cells": {"preset": {"value": null, "status": "none", "locked_by": null}}
      }
    ]
  }
}
```

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": "manage_users"},
    "trace_id": "97406499-dc1f-4982-b273-04989bee6e48",
    "timestamp": "2026-10-27T04:51:33Z"
  }
}
```


```json 404 Not Found
{
  "success": false,
  "error": {
    "code": "AUTO_MODEL_SCOPE_NOT_FOUND",
    "message": "We couldn't find that department or assistant in this organisation.",
    "type": "client_error",
    "status": 404,
    "details": {"field": "user_id"},
    "trace_id": "1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
    "timestamp": "2026-10-27T04:51:33Z"
  }
}
```


```json 404 Not Found (switched off)
{
  "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"
  }
}
```

## 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)
- [Get my Auto priority](/docs/api-reference/auto-model/get-my-choice)
- [Set a member's primary department](/assets/set-primary-department.6fcb4d3279c9dca14f79a0f3a84dda0ad07ff85db955150a3d01388050bbd9d1.31e6e729.md)