Skip to content
Good MorningDocs
Dashboard

Choose a model

Use the public models endpoint instead of relying on a copied list:

Terminal window
curl -fsSL https://api.saygm.com/v1/models

The response keeps the standard OpenAI model-list shape and adds GM metadata. The endpoint needs no API key.

  1. Data sensitivity picks the tier. confidential keeps inference inside a TEE. frontier and open both send the request to an upstream provider that processes it under its own terms. Read Privacy model before deciding.
  2. Your tool or SDK picks the api_shapes entry. An OpenAI client needs chat.completions or responses, an Anthropic client needs messages, and a Gemini client needs generateContent or streamGenerateContent.
  3. Your budget picks between the survivors. Compare pricing.dimensions, and check long_context_threshold_tokens if your prompts are large.
{
"object": "list",
"data": [
{
"id": "gpt-5.5",
"object": "model",
"created": 1704067200,
"owned_by": "openai",
"tier": "frontier",
"gateway_provider": "openai",
"api_shapes": ["chat.completions", "responses"],
"pricing": {
"unit": "ndollars_per_mtok",
"currency": "USD",
"dimensions": {
"input_per_mtok_ndollars": 5000000000,
"output_per_mtok_ndollars": 30000000000,
"cache_read_per_mtok_ndollars": 500000000,
"long_context_threshold_tokens": 272000,
"long_context_input_per_mtok_ndollars": 10000000000,
"long_context_output_per_mtok_ndollars": 45000000000
// Dimensions that do not apply to a model are present and null.
},
"surcharges": {}
},
"available": true
}
// Remaining models omitted.
]
}

Fetch a single entry by appending its ID to the path:

Terminal window
curl -fsSL https://api.saygm.com/v1/models/gpt-5.5
Field Meaning
id Exact value to send in the request’s model field.
object Always model on an entry; the envelope is list.
created Unix timestamp carried for OpenAI shape compatibility. Every entry reports the same constant, so do not read it as a release date.
owned_by Organization credited with the model.
tier frontier, confidential, or open. See below.
gateway_provider Upstream service that actually receives the request.
api_shapes Interfaces the model accepts.
pricing Rates in nano-dollars per million tokens.
available Advisory routing availability when the catalog was generated.

gateway_provider is the field to read when you need to know which upstream service receives a request. It is not always the organization in owned_by: confidential models are served through a single confidential-compute provider while owned_by still credits the original model author. Treat it as an input to your privacy assessment.

Copy id out of the catalog verbatim. A slash inside a confidential model ID — Qwen/Qwen3-32B-TEE, moonshotai/Kimi-K2.5-TEE, zai-org/GLM-5-TEE — is part of the ID, not a provider prefix to strip. The path form works too:

Terminal window
curl -fsSL https://api.saygm.com/v1/models/Qwen/Qwen3-32B-TEE

Do not add a prefix of your own. Some third-party tools prepend a provider segment as part of their configuration syntax and strip it before the request reaches GM; Aider’s openai/ is one such case, documented under coding agents. That prefix belongs to the tool, and it goes in front of the whole ID, slashes included.

For an OpenAI Chat Completions client:

Terminal window
curl -fsSL \
"https://api.saygm.com/v1/models?api_shape=chat.completions"

The query parameter is singular (api_shape) even though the response field is plural (api_shapes). An unrecognized value is not an error: the endpoint returns HTTP 200 with an empty data list. See errors and retries.

Frontier models are closed models routed to an upstream provider. The GM gateway is sealed inside a TEE, but the provider named in gateway_provider receives the request under its own API terms.

Confidential models run open-weight inference inside a TEE. Their IDs end in -TEE, and the prompt remains inside the confidential serving environment for inference.

Open models are open-weight models routed to an upstream provider rather than served in a TEE. Their IDs carry no -TEE suffix, and gateway_provider names the upstream — zai for glm-5.2, moonshot for kimi-k3.

See Privacy model before making data-handling claims to your own users.

pricing.unit is ndollars_per_mtok: nano-dollars per million tokens. The API uses integers so a rate never depends on decimal rounding. Divide by 1,000,000,000 to read a rate in dollars per million tokens.

5000000000 nano-dollars is $5.00 per million input tokens.

Every model exposes the same dimension keys, with null where the dimension does not apply.

Dimension Meaning
input_per_mtok_ndollars Standard input rate.
output_per_mtok_ndollars Standard output rate.
cache_read_per_mtok_ndollars Rate for a prompt-cache hit.
cache_write_5m_per_mtok_ndollars Rate to write a 5-minute cache entry.
cache_write_1h_per_mtok_ndollars Rate to write a 1-hour cache entry.
cache_storage_per_mtok_hour_ndollars Rate to hold a cache entry per hour.
audio_input_per_mtok_ndollars Rate for audio input tokens.
audio_output_per_mtok_ndollars Rate for audio output tokens.
long_context_threshold_tokens Token count above which the long-context rates apply instead of the standard ones.
long_context_input_per_mtok_ndollars Input rate past the threshold.
long_context_output_per_mtok_ndollars Output rate past the threshold.

pricing.surcharges holds charges that are not per-token. Each entry declares a kind — for example per_event for a provider-side web search, or per_hour for a code-execution sandbox.

See Billing and pricing for settlement behavior.