List models
const url = 'https://api.saygm.com/v1/models?api_shape=messages';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.saygm.com/v1/models?api_shape=messages'Returns the live model catalog: every model id the gateway will resolve, together with its confidentiality tier, upstream gateway provider, supported API shapes, and per-token pricing. This is the authoritative source for model ids and prices — the documentation deliberately does not copy them into prose. Authentication is optional: the endpoint answers unauthenticated requests, but a request that carries an invalid Authorization header is rejected with 401 rather than being treated as anonymous.
Authorizations
Section titled “Authorizations”- None
- bearerAuth
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”A request format the gateway can accept for a model. chat.completions and responses are the OpenAI shapes, messages is the Anthropic Messages shape, and generateContent / streamGenerateContent are the Gemini shapes.
Return only models that support this API shape. An unrecognised value is not a client error: the gateway answers 200 with an empty data array, which is indistinguishable from an outage unless you check the spelling. The same is true of an empty value (?api_shape=). Omit the parameter to list every model.
Examples
Models reachable through the Anthropic Messages API
messagesModels reachable through OpenAI Chat Completions
chat.completionsResponses
Section titled “Responses”The model catalog. An unrecognised api_shape also returns 200, with data empty.
A page of the model catalog. The catalog is returned in full; there is no pagination.
object
Every catalog entry matching the request. Empty when api_shape did not match a known shape.
One entry in the gateway model catalog.
object
The value to send as the model field of a request. May contain a slash, for example Qwen/Qwen3-32B-TEE.
Unix timestamp in seconds, present for OpenAI client compatibility. The gateway reports a fixed value rather than a per-model creation date; do not use it to order or age models.
The organisation that trained or publishes the model.
The confidentiality guarantee the gateway can make for the model. confidential models run inside an Intel TDX TEE that gm attests. frontier and open models are served by an upstream provider under that provider’s own terms.
The upstream the gateway routes this model to. Distinct from owned_by: an open-weight model is often served by a different operator than the one that published it.
Every request format this model accepts. A model is only reachable on the endpoints matching one of these shapes.
Per-token prices for the model.
object
The unit every dimensions rate is expressed in: integer nanodollars (1e-9 of currency) per million tokens. A rate of 150000000 is therefore $0.15 per million tokens.
ISO 4217 currency code for the rates.
Rates in the unit named by pricing.unit. A field is null when the model does not bill that dimension — treat null as “not offered”, not as “free”.
object
Uncached input tokens.
Generated output tokens, including reasoning tokens where the model emits them.
Input tokens served from a prompt cache.
Input tokens written to a prompt cache with a five-minute lifetime.
Input tokens written to a prompt cache with a one-hour lifetime.
Standing charge for holding cached tokens, per million tokens per hour.
Audio input tokens.
Audio output tokens.
Prompt size, in tokens, above which the long-context rates replace the standard input and output rates. null means the model has no long-context tier and the paired long-context rates are null too.
Input rate applied once the prompt exceeds long_context_threshold_tokens.
Output rate applied once the prompt exceeds long_context_threshold_tokens.
Charges that are not per-token, keyed by an opaque surcharge name. Empty for most models.
object
A charge billed per event or per unit of wall-clock time rather than per token. Which rate field is present depends on kind.
object
How the surcharge is metered.
Nanodollars charged per event. Present when kind is per_event.
Nanodollars charged per hour. Present when kind is per_hour.
Whether the gateway is currently accepting inference requests for this model. Listed-but-unavailable models stay in the catalog so that their ids and prices remain resolvable.
Example
{ "object": "list", "data": [ { "id": "claude-fable-5", "object": "model", "owned_by": "anthropic", "tier": "frontier", "gateway_provider": "anthropic", "api_shapes": [ "chat.completions" ], "pricing": { "unit": "ndollars_per_mtok", "currency": "USD", "surcharges": { "additionalProperty": { "kind": "per_event" } } } } ]}An Authorization header was supplied but the gm API key is invalid. Omit the header entirely to read the catalog anonymously.
object
object
Examplegenerated
{ "error": { "message": "example", "type": "example", "code": "example" }}