Skip to content
SayGMDocs
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 SayGM 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. Image generation models list images.generations.
  3. Your budget picks between the survivors. Compare pricing.dimensions, and check long_context_threshold_tokens if your prompts are large.

Once you have a model, the routing headers choose between its upstream routes for each request.

{
"object": "list",
"data": [
{
"id": "gpt-5.5",
"object": "model",
"created": 1704067200,
"owned_by": "openai",
"tier": "frontier",
"model_class": "frontier",
"confidential": false,
"display_name": "GPT-5.5",
"gateway_provider": "openai",
"api_shapes": ["chat.completions", "responses"],
"pricing": {
"unit": "ndollars_per_mtok",
"currency": "USD",
"basis": "cheapest_eligible_offer",
"dimensions": {
"input_per_mtok_ndollars": 3975000000,
"output_per_mtok_ndollars": 23850000000,
"cache_read_per_mtok_ndollars": 397500000,
"long_context_threshold_tokens": 272000,
"long_context_input_per_mtok_ndollars": 7950000000,
"long_context_output_per_mtok_ndollars": 35775000000,
"long_context_cache_read_per_mtok_ndollars": 795000000
},
"surcharges": {}
},
"price_range": {
"unit": "ndollars_per_mtok",
"currency": "USD",
"floor": { "basis": "cheapest_eligible_offer", "dimensions": { /* same as pricing */ } },
"route_ceiling": { "basis": "highest_eligible_offer", "dimensions": { /* … */ } },
"ceiling": { "basis": "published_retail", "dimensions": { "input_per_mtok_ndollars": 5000000000, "output_per_mtok_ndollars": 30000000000 /* … */ } }
},
"available": true,
"coming_soon": false,
"capabilities": { "vision": true, "tools": true, "image_input": false, "image_output": false, "image_generation": false }
}
// 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.
model_class open or frontier. Omitted until SayGM has reviewed the model.
confidential true when inference runs in a TEE. Omitted until SayGM has reviewed the model.
display_name Human-readable name. Omitted when SayGM has no curated name.
gateway_provider SayGM’s provider namespace for the model, usually its maker.
api_shapes Interfaces the model accepts.
pricing Rates in nano-dollars per million tokens. Omitted for fusion products, which are billed per leg.
price_range Direct-product price bounds: floor (cheapest routable offer), route_ceiling (most expensive routable offer), and ceiling (published retail). floor and route_ceiling are omitted when no offer is routable.
billing Present on fusion products as { "mode": "metered_per_leg" }; omitted otherwise.
fusion Fusion members, adjudicator, strategy, and availability; present only on fusion products.
available Advisory routing availability when the catalog was generated.
coming_soon true for an announced model that cannot be called yet. It has no pricing or price_range.
capabilities Hard vision and tools flags. Image models add image-generation limits.

Many models are available from several providers. For privacy, read tier and confidential; to choose which providers may receive your requests, use X-GM-Providers.

Copy id out of the catalog verbatim. Current buyer IDs use canonical model-maker names, for example qwen3-32b-tee, kimi-k2.6-tee, and glm-5.2-tee:

Terminal window
curl -fsSL https://api.saygm.com/v1/models/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 SayGM; 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 SayGM gateway is sealed inside a TEE, but the upstream provider receives the request under its own API terms.

Confidential models run open-weight inference inside a TEE and report confidential: true. Their IDs end in -tee by convention, but the confidential field is the authoritative signal. 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. A single open model can be served by several upstream providers.

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

pricing.unit is ndollars_per_mtok: nano-dollars per million tokens. Direct and cascade products expose a single rate card; fusion products omit pricing and price_range because they are billed per member and adjudicator leg. 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.

pricing is the cheapest routable offer when one exists (basis: "cheapest_eligible_offer"), otherwise published retail (basis: "published_retail"). To have each request sent to the lowest-priced provider, add X-GM-Routing: cheapest. Read price_range.ceiling when you need retail.

Image models are priced per image with output_per_image_ndollars and omit token dimensions they do not bill.

Required input/output dimensions are always integers. Optional dimensions that do not apply are omitted entirely, never serialized as null; omission means the dimension is not offered, not that it is free.

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.
long_context_cache_read_per_mtok_ndollars Cache-read rate past the threshold.
output_per_image_ndollars Rate per generated image (image models only).

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.