# AI Models

An **AI Model** is an LLM (or transcription model) that Frontline exposes to agents and workflows. Models are managed by Frontline — you cannot create or modify them via the Public API. You only **discover** them and reference them by `id` from elsewhere.

## Identity

| Field | Type | Notes |
|  --- | --- | --- |
| `id` | number | Use as `aiModelId` when configuring an agent setting. |
| `name` | string | Display name (e.g. `GPT-4o`, `Claude 3.5 Sonnet`). |
| `description` | string? | Marketing-style summary. |
| `type` | enum | `TEXT` · `TRANSCRIPTION`. |
| `aiVendor` | string? | E.g. `openai`, `anthropic`, `google`. |
| `reasoningModel` | boolean? | `true` for thinking-tier models. |
| `creditsPerMessage` | number? | Cost in Frontline credits per message generated. |
| `isDefault` | boolean? | Whether this is the default model for its `type`. |
| `order` | number? | Display order in the UI. |
| `analyticsColor` | string? | Hex color used in dashboards. |
| `externalId` | string? | Provider-side identifier. |


## Where they are used

- **[Agent](/docs/concepts/agents) settings** — set `aiModelId` in `PUT /agents/{agentId}/agent-setting` to change the model an agent uses for conversation. Frontline validates the ID before saving.
- **Workflow nodes** — AI-flavored nodes (`TOOLS_AI`, `AI_CAPTURE`, `DATA_TRANSFORMER`, …) inherit the agent's model when used inside flows; standalone automation nodes use account defaults.
- **Transcription nodes** — automation `TRANSCRIPTION` nodes pick a model with `type: TRANSCRIPTION`.


## Defaults

Frontline ships defaults per model `type`:


```
GET /public/v1/ai-models/default?type=TEXT
GET /public/v1/ai-models/default?type=TRANSCRIPTION
```

If you don't pin a specific `aiModelId`, Frontline falls back to these.

## Operations

| Verb | Path | Purpose |
|  --- | --- | --- |
| `GET` | `/public/v1/ai-models` | List (optional `type` filter) |
| `GET` | `/public/v1/ai-models/default` | Get default for a `type` |
| `GET` | `/public/v1/ai-models/{aiModelId}` | Detail |


Read-only. Listing accepts `type=TEXT` or `type=TRANSCRIPTION` to filter.

## CLI


```bash
frontline ai-models list --type TEXT --table
frontline ai-models default --type TEXT
frontline ai-models describe 1
```

Use the returned `id` as `aiModelId` in `frontline agents agent-setting update`.