Models
List the models your key can use, pick one, and handle model retirement.
List models
/v1/modelsThe response works with both the OpenAI and the Anthropic SDKs (client.models.list()).
curl https://ai.helipod.io/v1/models \
-H "Authorization: Bearer hel_ai_your_key"{
"object": "list",
"data": [
{
"id": "deepseek-v4.1-flash",
"object": "model",
"type": "model",
"display_name": "DeepSeek V4.1 Flash",
"name": "DeepSeek V4.1 Flash",
"owned_by": "helipod",
"created": 1791618589,
"created_at": "2026-10-10T07:49:49.228Z"
},
{
"id": "glm-5.3",
"object": "model",
"type": "model",
"display_name": "GLM-5.3",
"name": "GLM-5.3",
"owned_by": "helipod",
"created": 1791618589,
"created_at": "2026-10-10T07:49:49.228Z"
}
],
"has_more": false,
"first_id": "deepseek-v4.1-flash",
"last_id": "glm-5.3"
}Prop
Type
What the list contains:
- Only available models. Models that are switched off do not appear.
- Only what this key may use. A key with a model allowlist sees only those models. See Key options.
- Retiring models can still be listed. After the retirement time, requests to them answer
410 model_retired, so read the sunset headers described below.
The list does not carry prices or limits. For those, open AI Gateway, then Models & pricing in the dashboard: it shows each model's price per 1M tokens, context window, maximum input and output, capabilities, and whether it has peak pricing or a running promo.
The list changes
Helipod adds models, and retires models when they are no longer offered. Do not hard-code a list of ids in your app:
- read
GET /v1/modelsat runtime (for example at startup, or cached for a few minutes) to fill a model picker; - keep your chosen model id in configuration, so you can change it without a release;
- handle
404 model_not_foundand410 model_retiredby falling back to another model.
Picking a model
Model ids look like deepseek-v4.1-flash, deepseek-v4-pro, glm-5.3, glm-5.3-flash, kimi-k3, minimax-m3 and hy3. When choosing, compare these in Models & pricing:
| What | Why it matters |
|---|---|
| Price | Input, cached input and output price per 1M tokens. Output usually costs several times more than input. Smaller "flash" models are much cheaper for simple tasks. |
| Capabilities | reasoning (thinks before answering), tools (function calling), structured_output (JSON mode), vision (images), caching (cheaper repeated prompts). |
| Context window | The most tokens one request can hold, prompt and answer together. |
| Max output | The most a model writes in one answer. Reasoning counts toward it. |
| Peak pricing | Some models cost more during peak hours. See Pricing and billing. |
A practical approach: start with a fast, cheap model, test your real prompts in the Playground, and move up to a larger model only where the answers need it. Requests with the same model id behave the same in both the OpenAI and the Anthropic format.
Retirement
When a model is going to be retired:
- For the last 30 days, every response for that model carries
x-helipod-model-sunset(the retirement time) and, when there is one,x-helipod-model-replacement(the id to move to). If you used the model recently, you also get a notice in the dashboard. - From the retirement time, requests answer
410with codemodel_retired. The message names the replacement:
{
"error": {
"message": "The model 'glm-5.1' was retired on 2026-10-08. Use 'glm-5.3' instead.",
"type": "not_found_error",
"code": "model_retired"
}
}Watch for the sunset header in your logs, and switch models before the date.
Model names that map to another id
Some model ids have extra names (aliases) that resolve to a catalog model. The x-helipod-model response header always shows the catalog id that served and billed the request, so log that header rather than the name you sent.