Skip to content
LUNAROUTEDocs

Models API

GET /v1/models returns the catalog available to your organization.

Terminal window
curl https://gw.lunaroute.com/v1/models \
-H "LUNAROUTE-API-KEY: $LUNAROUTE_API_KEY"

If the request carries an anthropic-version header, the response uses the Anthropic models shape; otherwise it is OpenAI-shaped.

Each entry carries the model id, context limits, a capabilities map (for example vision, tools, reasoning), and per-client compatibility metadata. The catalog is global today — the same entries for every authenticated caller, not a per-organization entitlement.

Non-chat models are not listed here: an OpenAI-compatible client that auto-selects a model from this response must never pick one it cannot chat with. Find them on their own listings:

Decision models are the exception: they still appear in /v1/models under their systemone capability until they get their own listing (see System One).

A caller that identifies itself with X-LunaRoute-Client: claude-desktop gets an Anthropic-shaped catalog of Claude-compatible aliases instead of the normal entry list:

Terminal window
curl https://gw.lunaroute.com/v1/models \
-H "Authorization: Bearer $LUNAROUTE_API_KEY" \
-H "X-LunaRoute-Client: claude-desktop"

Each entry’s id is a wire alias (claude-opus-lr29) that LunaRoute translates back to the catalog model before routing. display_name is the model’s configured label (falling back to the canonical LunaRoute model id when none is set — note the fallback is not the entry’s id, which here is the alias itself). Claude Desktop’s picker rejects every normal catalog name, which is why this variant exists; see Claude Desktop for the client side.

The header is informational only — it selects which catalog is rendered and never changes authentication, entitlements, billing, or which models you may call. Responses vary on it (Vary: accept-encoding, anthropic-version, X-LunaRoute-Client), so a shared cache keeps the two catalogs apart.

Every model has an alias, but this listing is filtered to models usable on /v1/messages, so a picker entry can always be selected.

See the model catalog for what the entries mean.