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 |
GET /v1/models.The same data is available live, with no API key:
curl https://api.ambient.xyz/v1/modelsEach 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
429with 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.2orambient/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.
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).