GET /v1/models returns the public catalog. GET /api/v1/models returns the same catalog. Both endpoints work without an API key, browser session, or prepaid balance. The default type is chat.
Supplying credentials or an organization header returns the same public list. Inference still requires authentication and account eligibility; a catalog entry does not guarantee your account can call that model. Personalized availability remains in /api/v1/model-groups.
Request
Query Parameters
Response
The Model List reads
supports_reasoning directly from this endpoint. Pricing
fields describe billing rates separately from capability flags. The Model List shows selected API-reported features; “Not reported” means
none of those selected flags are true.
The :confidential and :encrypted model IDs and their privacy_tier values identify available privacy levels. For current attestation evidence and Encrypted key material, call Get attestation. The model list does not include attestation details or a verification result.
Pricing
Use this public endpoint as the source for current API prices. A pricing fetch needs no API key:pricing.currency_code is USD and pricing.unit is nanos. One USD is
1,000,000,000 nanos. Convert each per-token rate to USD per million tokens by
dividing by 1,000, using integer or decimal arithmetic to preserve precision.
Missing pricing or optional fields mean the rate is unavailable from discovery;
never infer a zero price from an omitted field. An explicit zero is a published
zero rate. These are public API prices, separate from subscription allowances.
Web-tool charges are outside this pricing object. A listed rate describes pricing,
while capabilities and account eligibility determine which requests can run.
The Model List publishes these rates through an hourly
refresh. Its snapshot date changes when displayed models or rates change. Fetch
this endpoint for current prices instead of hardcoding the documentation values.
For your own published comparison, a cron job or scheduled build can fetch the
endpoint afresh, validate its response, and regenerate the display. Honor the
response’s
Cache-Control: no-store header and label generated documentation with
its snapshot date. On a failed refresh, keep the last successful publication and
report the failure; never replace unavailable rates with zero.
Freshness and Errors
The server caches catalog responses for up to 24 hours. Catalog, configuration, and pricing updates invalidate the cache. Responses useCache-Control: no-store; clients and intermediaries must honor that header. The catalog describes model capabilities; inference checks provider health when you send a request.
Global and per-IP rate limits apply. On 429, respect Retry-After when present. A temporarily unavailable catalog or response cache returns 503 with error code unavailable; retry with backoff. Invalid filters return 400.

