> ## 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.

# models

> The model catalogue a caller picks from — client.models.

Two methods. The catalogue is read live from the network, so it is cursor-paged like every other listing — and a model published this morning is listed this morning.

## list

```ts theme={"system"}
client.models.list(query?: {
  window?: string;
  search?: string;
  limit?: number;
  after?: string;
}): Promise<Page<Model>>
```

`GET /v1/models`. The `window` filter answers "what could I run in this window?"; `search` matches free text against the id and the name. Hundreds of models are catalogued, so page it — `limit` defaults to 20 and caps at 100.

Each entry:

<ResponseField name="id" type="string">The model id you pass as `model` on [`agents.create`](/docs/sdk/agents#create).</ResponseField>
<ResponseField name="context_window" type="integer">Native context size in tokens.</ResponseField>
<ResponseField name="max_output_tokens" type="integer">The longest reply this model may produce, and what the pre-flight quote is bounded by.</ResponseField>
<ResponseField name="supported_windows" type="Window[]">The window configurations this model can serve.</ResponseField>
<ResponseField name="efforts" type="(&#x22;low&#x22; | &#x22;medium&#x22; | &#x22;high&#x22;)[]">The effort levels this model accepts.</ResponseField>

```ts theme={"system"}
const models = await client.models.list({ search: "glm", limit: 5 });
```

## retrieve

```ts theme={"system"}
client.models.retrieve(id: string): Promise<Model>
```

`GET /v1/models/{id}`. One entry, for the id you already hold — checking what an agent's pinned model can do without paging the catalogue to find it. An id this deploy does not serve is a `not_found` error, so this is also how you validate one before you run it.

```ts theme={"system"}
const model = await client.models.retrieve("zai-org/GLM-5.2-FP8");
```

<Note>
  `vetta/auto` is in the catalogue like any other id, and picks the model per request. It serves the
  `immediate` window only, and is quoted against a price ceiling then billed at the rate of the model
  that answered — see [Vetta Auto](/docs/concepts/model-router#vetta-auto).
</Note>
