How to read the rate sheetLink to this section
Four rules keep prices and limits unambiguous.
- Prices are per million tokens, in US dollars. Input, cached input, and output are separate rates. A dash means the model does not publish that rate.
- The catalog row is the price. What you see for a model id is what a request to that id is metered at — there is no second, hidden rate for the same model.
- Usage comes from Responses. Token counts are returned in
usageon every response, and your organization’s own usage is in the console. The public catalog does not publish per-model traffic. - Limits are published where they exist. Context window and max output are catalog fields. Anything a model does not publish shows as “not published” rather than a guessed number.
Live pricesLink to this section
Read when this page rendered. Prices are USD per million tokens; context and max output are the catalog’s published limits.
Dashes print where a model does not publish a number. Model names link to a full page with that model’s prices, limits, data posture, and a ready-to-copy request.
Listing modelsLink to this section
Two catalog doors: one for your key, one public. Both serve the sell-side catalog — prices and limits, never internal cost.
curl https://api.sylphx.ai/v1/models \
-H "Authorization: Bearer $SYLPHX_API_KEY"
# One model document:
curl https://api.sylphx.ai/v1/models/openai/gpt-5.5 \
-H "Authorization: Bearer $SYLPHX_API_KEY"
curl https://api.sylphx.ai/v1/public/models
# One public model, including its description:
curl https://api.sylphx.ai/v1/public/models/openai/gpt-5.5
| Field | Type | What it does |
|---|---|---|
id | string | The exact string you send as model. Ids are stable product names. |
display_name | string | Human label for pickers and tables. |
pricing | object | input, output, cache_read, currency, and unit (per_million_tokens). |
limits | object | context_window_tokens and max_output_tokens (null when not published). |
data_policy | object | train and zdr booleans describe the default routing posture: requests use Zero Data Retention routes unless the caller sends x-sylphx-zdr: optional, and zdr is false when no ZDR route exists for the model. posture is standard or consent_trained; source is model_declaration or default; default_routing is zdr_required. training_opt_in is true when lower-cost options that may train on data exist for the model — they are reached only when the caller opts in with that header. |
Switching modelsLink to this section
Because model is a field, a switch is a one-line change and a new price. The request and stream shape stay identical.
{
"model": "qwen/qwen3.8-flash",
"input": "Summarise this incident report in three bullets."
}
Read the new model’s row first: context window, max output, and data posture can differ. Conversations that used provider-sealed state should stay on the family that produced it — see switching models safely.
Cost mathLink to this section
Cost is the token counts from usage multiplied by the catalog rates. Cached input is metered at the cached rate when the model reports cached tokens.
cost =
usage.input_tokens / 1_000_000 * price.input
+ usage.cached_tokens / 1_000_000 * price.cache_read # when published
+ usage.output_tokens / 1_000_000 * price.output
Blended averages across models are easy to misread: compare one model at a time, and always state the input/output mix you assumed.
Data postureLink to this section
Each catalog row publishes the default routing posture for that model: whether API data may be used for training, and whether zero data retention applies. By default, requests route to zero-data-retention routes.
- Training on / No training — the declared handling of API requests for this model under default routing.
- Zero retention / No ZDR — whether requests to this model use a zero-data-retention route by default. No ZDR means no such route exists for the model.
- Training-discount options — when
training_opt_inis true, lower-cost options that may train on data exist for the model. They are reached only when you sendx-sylphx-zdr: optional; without that header your requests never use them. - The posture is a property of the model row, not of your key, so switching models can change it. Check the row before you move a sensitive workload.
- Platform retention for stored responses and files is separate and described in the privacy policy.