Skip to content

Models

Get Model Catalog

Return the enabled chat models, in display order.

Replaces the model array that used to be hardcoded in the web app. Only enabled rows are exposed — a model switched off in the admin panel must disappear from every picker, and is rejected server-side regardless. Embedding models share the catalog (same pricing shape, same admin surface) but are never conversational, so they are filtered out here.

org_id is optional and membership-checked: with it the caller gets that org’s merged view, so a model the org offers itself appears in its picker and a model it re-routed shows its own route. Without it, the platform’s — which is what every caller sent before PR 4 and still means the same thing.

Optional rather than required because this endpoint is user-scoped and mounted outside /orgs/{org_id}; making it required would break every existing caller to serve a case only enterprise orgs have. A caller passing an org it does not belong to gets 403 rather than a quietly platform-only answer — a silent downgrade here would show a picker missing the org’s own models with no indication why.

Parameters

NameInTypeRequiredDescription
org_idquerystring (uuid)no

Responses

StatusDescriptionBody
200Successful ResponseCatalogModel[]
422Validation ErrorHTTPValidationError

Get Model Pricing

Return LLM model pricing in per-1-million-token units.

Served from the platform model catalog — the same numbers runs are billed on, so what a picker shows and what a chat costs cannot drift. A model whose catalog row has no input/output price is omitted; admins fill those in (or sync them from the LiteLLM dataset) in the admin panel.

Responses

StatusDescriptionBody
200Successful Responseobject
422Validation ErrorHTTPValidationError