Skip to main content
Every request that names a model, including model: "auto", resolves through your organization’s model registry. This guide covers the two layers behind that lookup and the operations that change them.
  • The catalog is what your organization could activate: its own bring-your-own (BYO) definitions, models it serves on Compute, and the cluster models a cluster admin has granted it access to.
  • The registry is what it has activated. A model name resolves only while the registry holds it.
Access to a cluster model does nothing by itself. Until someone activates the entry, GET /models omits it, a request that names it fails to resolve, and auto cannot land on it either.

Before you start

The console has the same views under Admin → Model Registry, on the Models, Auto models, Add model, and Raw JSON tabs. LLM → Models shows what your requests can use right now.

Step 1 - List the models your requests can use

GET /models returns the active entries of your registry, minus any whose definition sets hidden: true (see Troubleshooting). Each item carries model_type and a capabilities object with supports_temperature and supports_top_p. Both are false for anything that is not an LLM, so read them before sending sampling parameters. The mka1 CLI covers only llm models list and llm models get, so the remaining steps show the SDKs and curl.
A list item looks like this:
GET /models/{model_id} returns 404 for a name that is not in the catalog, for one that is in the catalog but inactive, and for one whose definition is hidden. The gateway does not say which, so a response cannot reveal what other organizations have.

Step 2 - Read the catalog

GET /models/catalog lists every definition your organization could activate, with its source, activation state, provider health, and a price preview. Cluster entries appear only after a cluster admin grants access to them.
Field notes: The same model id can appear more than once, once per source. Only one of them can hold the name at a time.

Step 3 - Activate a catalog entry

Activation claims a model name for one source. Pass the id and the source you are activating from.
The gateway checks two things, in order:
  1. The entry exists for your organization from that source. A cluster id you have no access to, or a BYO id nobody defined, returns 422.
  2. Nobody else holds the name. If the same source already holds it, the call returns the existing activation. If a different source holds it, the call returns 409. Neither case changes anything.
The response carries model_id, source, activated_by, and activated_at. The activation applies to the next request. In the console, the Activate button on Admin → Model Registry → Models makes the same call. The setup wizard’s first step activates every available cluster entry the same way, but only while nothing in the registry is active yet.

Step 4 - Review the registry and deactivate

GET /models/registry is the catalog filtered to active entries, so each row has the same shape as in Step 2. DELETE /models/registry?id=... releases a name.
Deactivation removes the name from the registry and closes any organization price override for it (the org_override rate in Step 6). It does not touch the catalog definition, so you can activate the entry again later, from the same source or a different one. The call is idempotent: deactivated is false when nothing was active. Requests already in flight finish. The next request that names the model fails to resolve, and if an auto-model override pointed at it, auto fails for that endpoint too (see Step 5).

Step 5 - Choose what auto resolves to

The gateway resolves model: "auto" per endpoint. It first checks your organization’s override for that endpoint, then falls back to the operator’s default from the cluster’s model-registry.yaml. Either target still has to be active in your registry. If neither resolves, the request fails with the same not-found error as any unknown model. The endpoint key is the model’s API format:
PUT returns 422 when the target is the literal auto, is not active in your registry, or has a different API format than the endpoint. The gateway stores the canonical id and later looks up that exact name. If you deactivate that model, the override’s resolvable flag turns false and auto fails on that endpoint rather than moving to the operator default on its own. Clear the override or activate the model again. DELETE is idempotent. The PUT body key is modelId, not the model_id the registry call takes. The console shows the same overrides on Admin → Model Registry → Auto models.

Step 6 - Check effective prices

GET /models/pricing/effective returns the rate your organization pays for every model it can call. Any bearer can read it, with no role or scope, because anyone whose requests are billed can see the rate they are billed at. Audit fields such as who set a price stay on the admin pricing routes.
source is org_override when a price override was set for your organization through PUT /models/pricing/org/{orgId}, cluster_default when a cluster entry uses the operator’s rate card, and unpriced (billed as 0) otherwise. An organization admin can set that override for their own organization’s active byo and serving entries with setOrgPrice, read it back with listOrgPrices, and remove it with clearOrgPrice; an override on a cluster entry is cluster-admin only. currency is the cluster-wide ISO 4217 code, or null until the operator sets one.

Bring your own model

An organization admin can define a BYO entry in the catalog and then activate it with source: "byo". Defining does not activate. This is the flow the Deploy a model server guide uses to register a vLLM endpoint. Only curl is shown; the SDKs’ addCatalogEntry takes the same fields.
bash
id is the name your requests send as model; modelId is the name the gateway forwards to the provider at baseUrl. The response is a catalog entry with the auth value redacted and activation_state set to available, or available_name_blocked if another source already holds the name. Activate it as in Step 3 with source: "byo". provider is a free-form label, and entries that share one share a health probe. apiProviderType is the wire protocol the gateway speaks to baseUrl; openai covers any OpenAI-compatible server. All four BYO operations need write:registry, the health check included. Entries the operator manages in model-registry.yaml cannot be changed through the API.

For cluster admins

Everything in this section needs a cluster admin bearer. The four access operations, the two reads included, also need that bearer bound to the cluster organization (org_cluster); cluster prices and the currency need only the cluster-admin flag, from any organization. Organization admins get 403 here.
Cluster admins decide which cluster models each organization may activate. A grant adds an entry to the organization’s catalog as available; it activates nothing. In the console this is Access → Organizations → Cluster, then the organization’s Available models tab, where you stage toggles, and Save sends the whole set through replaceCatalogOrgAccess.
The operations, and what each one touches: The two reads require read:registry and the two mutations write:registry, as at the organization level. Both mutations reject an unknown cluster catalog id with 422 Unknown cluster catalog model id(s): .... The cluster organization activates its own catalog with source: "byo" or "serving"; "cluster" is for tenant organizations only, meaning every organization other than org_cluster.

Activation states

Troubleshooting

API reference

For the full request and response schemas, open the Models group in the API Reference.

See also