skip to content
The catalog

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:

public catalog
curl -s https://api.conifer.build/v1/catalog

Your key’s callable models and declared capabilities:

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

Reading an entry

FieldWhat it tells you
idThe 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.
providerThe lab behind the model, such as anthropic or deepseek.
context_windowThe input budget in tokens. A prompt above it is refused rather than trimmed.
max_output_tokensThe output ceiling, where the model has one. A larger max_tokens is clamped to it.
capsWhat the model declares: tools, vision, reasoning, embeddings. If a string is absent the model does not have that capability.
pricingRates per million tokens for input, output, cache read and cache write. These are the prices you are charged.

Two ids that let Conifer choose

auto and default appear in the list too. They are not models. Send either one and Conifer picks the model for you, 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 how to make it from the CLI or Palm, is on Routing.

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 auto or use a route in the CLI. Reading a model covers how to pick when you are comparing entries.