Request
Response
OpenAI’s ownlist shape:
id and deduplicated. data is always an array, empty rather than null when the key reaches no models.
What the list holds
Three sources, filtered to what the key can actually call:- Model aliases on the key, under the alias name. An alias whose target the key cannot dispatch to is left out.
- Allowlist entries, when the key sets
models_allowed. An allowlist of literal model ids is authoritative on its own, so no provider catalog is queried. A wildcard entry such asclaude-haiku-*is a pattern rather than a model name, so it is left out of the list, and an allowlist that holds one runs discovery to get the concrete ids behind the pattern. - Discovered models from every credential the key can reach, read from each provider’s own catalog.
Model tiers
When the key runs on a routing policy, the reserved tier namescomplex, reasoning and fast are in the list. A tier is an alias the policy sets, and it falls through to the policy’s default model when the policy names no target for it. A tier with no target and no default model is not listed.
Providers with an instance handle
A model from a provider that has an instance handle is listed under the handle-qualified id, for exampleeurope/gpt-5-mini. That id is the only name that reaches that provider when the key holds two of the same family. owned_by stays the provider family, because that is what a model picker groups by.
Incomplete discovery
A provider the key can dispatch to can contribute no models to the catalog. The response then carriesX-Langwatch-Models-Discovery-Incomplete with one provider:reason token per gap, comma separated:
The header is absent when the list is complete, and when the key sets a literal allowlist, since no catalog is read then.
Errors
The full table is on Errors.
Also check: Model naming, Model aliases, Routing policies.