client.models.list() against an OpenAI-compatible base_url hit
this route. Auth and the consumer slug are the same as
chat.
X-AG-Gateway-Slug as in the chat snippets.
GET /v1/models returns { "object": "list", "data": [{ "id", "object": "model", "owned_by" }] }.
GET /v1/models/{id} is 200 when that id is in the list, otherwise 404.
Non-GET methods are 400. Extra path tails (/models/{id}/extra) are 404.
This is not a forward of the provider’s /v1/models and not the admin models
catalog. The list is the union of native slugs the consumer can actually call.
What is listed
For each bound registry (plus fallbacks, role policies, and load-balancing member models):- If the consumer (or role) has an allow-list, those ids are candidates.
- If the policy is open, TrustGate expands from the provider catalog.
- Only native slugs are kept — no
auto, no@provider/…, nopool:…. - A slug is kept only when the registry’s provider supports that modality (chat always;
embeddings / rerank only
when the provider advertises them). Catalog flags win; otherwise the slug is inferred
(
embed→ embeddings,rerank→ rerank, else chat).
owned_by is the registry provider (for example openai or anthropic).
Files have no model ids and are not listed.
Images ids appear only when the catalog (or allow-list) includes
them and the consumer has an images-capable registry.
Related
- Model resolution
- Consumers — Connect tab
- Registries
- Quickstart