Models and readiness

The Ambient model catalog. What the is_ready flag does and doesn't mean, what the ambient/large alias is, and why pricing always comes from the API.

Ambient serves a catalog of open models, published live at GET /v1/models. Anything listed there is served. GLM 5.2 (z-ai/glm-5.2, also reachable as ambient/large) is the supported production model; other listed models may be previews that are served and usable but come with no guarantees.

The catalog#

GLM 5.2alias
ambient/large
198K$0.60 / M$2.00 / M
GLM 5.2
z-ai/glm-5.2
198K$0.60 / M$2.00 / M
Qwen3.6 27B
qwen/qwen3.6-27b
32K$0.32 / M$3.20 / M
Qwen3.8 27B
qwen/qwen3.8-27b
32K$0.32 / M$3.20 / M
Source: GET /v1/models.

The same data is available live, with no API key:

curl https://api.ambient.xyz/v1/models

Each entry carries the model id, context length, max output length, per-million-token pricing (pricing.input / pricing.output), supported_features (such as tools, json_mode, structured_outputs, reasoning, logprobs), quantization, and an is_ready flag (explained below).

What is_ready means#

is_ready is a routing flag consumed by OpenRouter: it toggles whether OpenRouter sends traffic to that model. It is not a served/not-served signal. A model can be listed, served, and answering requests with is_ready: false, so don't gate model selection on it. If a model is in the catalog, you can request it.

  • Capacity is reported per request, not in the catalog. When a model has no capacity at the moment, the request returns 429 with a message like "No workers available" or "Upstream request failed". That is not a rate limit, and authentication is unaffected: retry with short, jittered backoff, or fail over to another listed model. If the same model keeps failing for minutes, treat it as down. See Errors and retries.
  • Pin GLM 5.2 (z-ai/glm-5.2 or ambient/large) for production. Other listed models may be previews: served and usable, but with no guarantees, and they may later be limited to specific partners. Keep a fallback in mind if you build on one.
  • Miners load-balance, so fanning out many parallel requests to one model works.
list-models.tsts
const res = await fetch("https://api.ambient.xyz/v1/models");
const { data } = await res.json();
 
// Everything listed is served. is_ready is an OpenRouter routing flag,
// not an availability signal, so there is nothing to filter on here.
console.log(data.map((m: { id: string }) => m.id));

The ambient/large alias#

ambient/large is an Ambient-managed alias rather than a distinct model: its listed specs and pricing mirror whichever concrete catalog model it currently resolves to, so read them from its own live catalog entry instead of assuming a fixed target. Use it when you want Ambient's default large model without pinning a specific id; pin a concrete id when you need reproducibility.

Pricing comes from the API#

Per-model prices are published in the catalog itself as USD per million tokens (pricing.input and pricing.output), so the table above stays in sync with GET /v1/models.

The API itself does not expose a balance or spend endpoint. Track credits and usage in the Ambient app (Billing and Usage), or meter your own usage locally and price it against the catalog. Token counts are in the usage object of each completion response (for streamed responses, set stream_options: {"include_usage": true} to receive usage in the final chunk).