Gateway
The catalog
Every model the gateway serves, with its price and its capabilities, behind one endpoint.
See the catalog
Public list prices need no key:
curl -s https://api.conifer.build/v1/catalogYour key’s callable models and declared capabilities:
curl -s https://api.conifer.build/v1/models \
-H "Authorization: Bearer $CONIFER_API_KEY" \
| jq '.data[] | {id, caps, context_window, pricing}'This is the list of models your key can call, with prices and caps, and it is the source of truth. The same list is public without a key at GET /v1/catalog and rendered for reading at /models. Models differ from one another. A missing cap is a missing capability, so check before you send tools or images.
Fig. 01the catalog
Served models by lab, at their price
Each dot is one benchmarked model at the gateway's blended price, three parts input to one part output.
Rows: the 10 labs with the most benchmarked models served, from the same data as /models.
Reading an entry
| Field | What it tells you |
|---|---|
id | The string you put in a request's model field, exactly as listed. A namespaced spelling such as anthropic/claude-opus-5 is accepted and served as the bare id. |
provider | The lab behind the model, such as anthropic, deepseek or typesafe. |
context_window | The input budget in tokens. A prompt above it is refused rather than trimmed. For a decision model (Jev) it is TypeSafe's state-plus-longest-question budget, 32K; the whole request's budget is 64K, and the upstream enforces both, relayed as a 422. |
max_output_tokens | The output ceiling, where the model has one. A larger max_tokens is clamped to it. |
caps | What the model declares: tools, vision, reasoning, embeddings, decisions. If a string is absent the model does not have that capability. embeddings and decisions name a model served on its own route (POST /v1/embeddings, POST /v1/systemone) that the chat routes refuse; GET /v1/models omits them, GET /v1/catalog lists them. |
pricing | Rates per million tokens for input, output, cache read and cache write. These are the prices you are charged. context_tiers lists higher rates some models bill for the whole request once its input (fresh plus cached tokens) is above above_input_tokens, such as OpenAI's long-context price past 272K. It is [] when the model has none. |
The id that lets Conifer choose
beta-auto appears in the list too, with virtual: true. It is not a model. Send it and Conifer picks the model for you from your routing pool, and the receipt says which one answered: x-conifer-requested-model is the id you sent and x-conifer-effective-model is the model that served. How that choice is made and what it costs is on beta-router.
Conifer’s own composed models (conifer-*) are not currently served: they are absent from the catalog, and a request that names one returns a 404.
Which model to use
If you know the model you want, name its id and that is what answers. If you would rather not choose, send beta-auto. Reading a model covers how to pick when you are comparing entries.