> ## Documentation Index
> Fetch the complete documentation index at: https://vetta.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# vetta models

> List the models an agent can be created against.

`vetta models list` is how you learn a legal `--model` for [`vetta agent create`](/docs/cli/agents#create), which requires one.

There is **no fixed list**. The catalogue is read live from the network, so a model published today is runnable today — and hundreds are catalogued, which is why the listing pages and searches.

## Commands

| Command                 | Description                                                          |
| ----------------------- | -------------------------------------------------------------------- |
| `vetta models list`     | List available models, optionally narrowed to one completion window. |
| `vetta models get <id>` | One model by id, for the id you already hold.                        |

## list

```bash theme={"system"}
vetta models list --search glm --limit 2
```

```json theme={"system"}
{
  "data": [
    {
      "object": "model",
      "id": "zai-org/GLM-5.2-FP8",
      "context_window": 1048576,
      "max_output_tokens": 32768,
      "supported_windows": ["immediate", "priority", "loose"],
      "efforts": ["low", "medium", "high"]
    },
    {
      "object": "model",
      "id": "moonshotai/Kimi-K2.6",
      "context_window": 262144,
      "max_output_tokens": 16384,
      "supported_windows": ["immediate", "priority", "loose"],
      "efforts": ["low", "medium", "high"]
    }
  ],
  "has_more": true,
  "next_cursor": "2"
}
```

| Flag       | Description                                                                                                         |
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
| `--window` | Narrow to models servable in one [completion window](/docs/concepts/model-router): `immediate` \| `priority` \| `loose`. |
| `--search` | Matches a model's id and name.                                                                                      |
| `--limit`  | Page size, 1–100. Defaults to 20.                                                                                   |
| `--after`  | The `next_cursor` of the previous page.                                                                             |

`context_window` is in tokens. `max_output_tokens` is the longest reply that model may produce, and what the pre-flight quote is bounded by. `supported_windows` is the authoritative list of windows that model can actually be served in — an `agent create` naming a window outside it is rejected.

No price is on the reply. What an agent spends is bounded by its own budget, and read back with [`vetta agent spend`](/docs/cli/agents#spend).

One id in the listing is not a specific model: `vetta/auto` picks one per request. It serves `immediate` only — see [Vetta Auto](/docs/concepts/model-router#vetta-auto).

## get

```bash theme={"system"}
vetta models get zai-org/GLM-5.2-FP8
```

```json theme={"system"}
{
  "object": "model",
  "id": "zai-org/GLM-5.2-FP8",
  "context_window": 1048576,
  "max_output_tokens": 32768,
  "supported_windows": ["immediate", "priority", "loose"],
  "efforts": ["low", "medium", "high"]
}
```

An id this deploy does not serve is a `not_found` error, so this is also how you check a model id before you run an agent on it.

## Not every model serves every window

`immediate` is served by every catalogued model. `priority` and `loose` are served only by the
models the completion-window pool hosts, and `supported_windows` on each row is the authoritative
answer — it is derived from the rate card the router prices against, so a model listed for a window
can never be refused for it.

```bash theme={"system"}
vetta models list --window loose
```

```json theme={"system"}
{
  "data": [
    {
      "object": "model",
      "id": "google/gemma-4-31B-it",
      "context_window": 131072,
      "max_output_tokens": 16384,
      "supported_windows": ["immediate", "priority", "loose"],
      "efforts": []
    }
  ],
  "has_more": true,
  "next_cursor": "1"
}
```

Naming a window a model does not serve is refused with `window_unavailable` (HTTP 400) before any
inference runs — never silently downgraded to a dearer window. So list first, then create.

## Picking a model in a script

```bash theme={"system"}
vetta models list --window immediate --limit 1 | jq -r '.data[0].id'
```
