# Models

Use `GET /v1/models` to discover the models enabled for your environment. It requires an active key with `run:write`. Discovery does not generate content or incur scan usage.

```sh
curl https://api.zaun.ai/v1/models \
  -H "Authorization: Bearer $ZAUN_API_KEY"
```

Use the returned `id` in `POST /v1/responses`. Zaun handles model routing internally. Do not send transport names, deployment IDs, or region prefixes.

```json
{
  "id": "claude-sonnet-5",
  "object": "model",
  "created": 0,
  "owned_by": "zaun",
  "zaun": {
    "max_output_tokens": 128000,
    "sampling": "disabled",
    "effort": {"levels": ["low", "medium", "high", "xhigh", "max"], "default": "high"},
    "pricing": {
      "currency": "usd",
      "input_micros_per_million": 2200000,
      "output_micros_per_million": 11100000,
      "cache_read_micros_per_million": 220000,
      "cache_write_5m_micros_per_million": 2750000,
      "cache_write_1h_micros_per_million": 4400000
    }
  }
}
```

`owned_by` identifies the Zaun-managed route. `created: 0` means its creation timestamp is not tracked. Prices are integer USD microdollars per million tokens; 1,000,000 microdollars is $1. Protected-token assessment charges are additional; see [Limits & errors](limits.md).

`effort` lists the `reasoning.effort` levels the model accepts and the level it runs at when a request names none. It is `null` for models that take no effort; sending one to those returns 422. See [Responses](responses.md#supported-features).

## Model IDs

Image parts are accepted only by the Claude routes. Other routes return
`unsupported_content` for a request with images; see [Scan an image](quickstart.md#scan-an-image).

| Model ID                | Configured Zaun output cap |
| ----------------------- | -------------------------: |
| `claude-sonnet-5`       |                     128000 |
| `claude-opus-5-5`       |                     128000 |
| `claude-fable-5-1`      |                     128000 |
| `cerebras-gpt-oss-120b` |                      16384 |
| `gpt-6-astra`            |                     128000 |
| `gpt-6-sol`              |                     128000 |
| `gpt-6-luna`             |                     128000 |

Claude and GPT-6 deployments expose their documented 128K native output budget. Other providers retain their configured model-specific limits. Use `zaun.max_output_tokens` from `GET /v1/models` for the cap enforced by your environment.

Availability depends on your environment. Only IDs returned by discovery are enabled. An empty catalog returns `{"object":"list","data":[]}`. Unconfigured models return 422 before assessment or generation.

## Create a response

```sh
curl https://api.zaun.ai/v1/responses \
  -H "Authorization: Bearer $ZAUN_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"claude-opus-5-5","input":"Explain least privilege in one sentence.","max_output_tokens":128}'
```

Use a new idempotency key when selecting a different model. For limits and unsupported options, see [Responses](responses.md). Review model-specific retention and subprocessor policies before sending content.

## Cerebras GPT-OSS 120B

`cerebras-gpt-oss-120b` selects GPT-OSS 120B served through Cerebras. It supports
`/v1/responses`, including live text streaming after input permission. Generated tool calls remain buffered until assessed.
Zaun currently caps this model at 16,384 output tokens. Input is $0.35 and output is $0.85 per million
tokens. Cache reads are charged at the normal input rate. Discovery lists the
model only when it is enabled for the deployment.

## OpenAI GPT-6

`gpt-6-astra`, `gpt-6-sol`, and `gpt-6-luna` route directly to OpenAI's Responses API using a
Zaun-managed project credential, so function tools and `reasoning.effort` work together. Zaun rates per million tokens are respectively
$10.00 / $50.10, $2.00 / $10.10, and $0.10 / $0.60 for input / output. Cached
input is $1.00, $0.20, and $0.01. Cache writes use the provider's published
1.25x input rate. Zaun rejects requests whose conservative input budget could
enter the provider's higher-priced long-context tier.

Only these three exact OpenAI model IDs are customer routes. Daybreak aliases
and cybersecurity-specific models are not configured, discoverable, or routable.

## Opus 5.5

`claude-opus-5-5` uses Bedrock's US inference profile. Zaun rates per million
tokens are $4.40 input, $22.10 output, $0.22 cache reads, $5.50 five-minute cache
writes, and $8.80 one-hour cache writes. The AWS model agreement offer for
`anthropic.claude-opus-5-5` was verified on September 25, 2026; the matching
immutable price record is pinned in the deployment catalog. Existing scan charges
are additional. The API exposes the model's 128,000-token output budget and provider defaults.

`claude-opus-5-5` supports automatic tool selection (`auto`, the default) and
disabling tools (`none`). Bedrock does not support forced named tools or
`required` for this model. Zaun rejects those choices with HTTP 422 before scan
or provider admission. Fable 5.1 has the same forced-selection restriction.

Nova Lite is not a completion model. It is absent from discovery, rejected by
generation configuration, and absent from the completion price catalog.
Document-extraction model settings are separate.
