Models
You address models by alias: a short, stable name like sonnet or gpt. The alias resolves server-side to a concrete model on one of the upstream providers. When the underlying model is upgraded, the alias stays the same, so you don't have to chase version strings.
Listing models
curl https://api.mindshub.ai/v1/models \
-H "Authorization: Bearer $MINDSHUB_API_KEY"
{
"object": "list",
"data": [
{
"id": "sonnet",
"label": "Claude Sonnet 5",
"object": "model",
"created": 0,
"enabled": true,
"reasoning_efforts": ["low", "medium", "high", "max"],
"default_reasoning_effort": "high",
"embedding": false,
"provider": "anthropic",
"family": "sonnet",
"default_for": []
}
]
}
| Field | Meaning |
|---|---|
id | The alias. This is what you put in the model field of a request. |
label | Human-readable display name. |
enabled | Whether your organization can call this model right now. false usually means it needs wallet credit. Disabled models still appear in the listing. |
reasoning_efforts | Effort levels the model accepts in the reasoning_effort request field, or null if the level isn't adjustable. Note null does not mean the model doesn't reason; see Reasoning effort. |
default_reasoning_effort | The effort used when you don't specify one. |
embedding | true for embedding models (use them with /v1/embeddings, not chat). |
provider | The provider serving the model (anthropic, openai, gemini, fireworks, moonshot, meta, xai). This is who serves the model, not necessarily who trained it: one host can serve several makers' models, so grouping a picker by this field groups by provider rather than by maker. |
family | The moving alias this fixed-version or compatibility pin belongs to. family == id means this alias tracks the newest version; any other value names the pin's moving head. Pins are ordinary aliases with their own id, never the deprecated latest: prefix. |
supported_params | Reserved, not published yet (see the note below the table). Generation parameters the model honors, in the platform's parameter names (temperature, top_p, top_k, stop_sequences, max_tokens, reasoning_effort, thinking, tool_choice; stop_sequences is the request's stop). A generation parameter you send that isn't listed is dropped and reported in X-MindsHub-Dropped-Params. tool_choice is the exception: it is never dropped, and a forced choice a model can't accept is rewritten instead. See Chat completions → Request parameters and Tool calling. |
default_for | The agent roles this alias is the default for, for a client that lets a user pick a model per role: any of planning, coding, router. Empty on every alias that is nobody's default, which is most of them. Read it only where your user has chosen nothing. It says where to start, and it grants nothing, so enabled still decides whether you may call the model. |
created | Always 0. Not a real timestamp. |
provider, family, and default_for are omitted from a row rather than sent as null when the service hasn't classified it, so read them with a default: a row without provider belongs in an ungrouped list.
supported_params is not published yet. It is documented here so you can code against it, but no row carries it today, so treat its absence as "unknown" rather than "drops everything". To learn what a model actually dropped from a request, read the X-MindsHub-Dropped-Params response header, which ships now.
default_for is the one where absent and empty differ. [] is an answer, meaning this alias is nobody's default. A missing key is not: it means this service predates the field and can tell you nothing either way, so keep whatever defaults you already ship rather than reading it as "the catalog declares none".
There is no owned_by field. The OpenAI SDK's client.models.list() works, but code that reads owned_by won't find it.
The catalog
Current as of August 2026; GET /v1/models is authoritative and changes without notice. Prices are in Billing.
| Alias | Label | Notes |
|---|---|---|
mindshub_air | MindsHub Air | Covered by your monthly included tokens. |
sonnet | Claude Sonnet 5 | |
opus | Claude Opus 5 | |
fable | Claude Fable 5 | |
haiku | Claude Haiku 4.5 | |
gpt | GPT 5.6 Sol | |
gpt-terra | GPT 5.6 Terra | |
gpt-luna | GPT 5.6 Luna | |
gpt-codex | GPT 5.3 Codex | |
gpt-mini | GPT 5.4 Mini | |
gpt-nano | GPT 5.4 Nano | |
gemini | Gemini 3.1 Pro Preview | |
gemini-flash | Gemini 3.7 Flash | |
gemini-flash-3-6 | Gemini 3.6 Flash | Frozen version of gemini-flash, which tracks the newest. |
kimi | Kimi K3 | |
deepseek | DeepSeek V4-Pro-0813 | |
deepseek-v4-pro | DeepSeek V4 Pro | Compatibility pin; its unavailable provider ID redirects to DeepSeek V4-Pro-0813. |
qwen | Qwen3.8-2.4T-A95B | |
qwen-3-7-plus | Qwen3.7 Plus | Frozen version of qwen, which tracks the newest. |
glm | GLM 5.2 | |
muse-spark | Muse Spark 1.2 | |
muse-spark-1-1 | Muse Spark 1.1 | Frozen version of muse-spark, which tracks the newest. |
grok | Grok 4.6 | |
grok-4-5 | Grok 4.5 | Frozen version of grok, which tracks the newest. |
embed-small | Text Embedding 3 (small) | Embeddings only. |
Alias rules
- Send the bare alias.
"model": "sonnet". - Raw provider model IDs don't work.
"model": "claude-sonnet-5"or"gpt-5.4-mini"returns404 model_not_foundon the OpenAI-compatible endpoints. The one exception: the Anthropic-compatible/v1/messagesendpoint maps real Claude model names onto aliases so Claude Code works unmodified; see Anthropic compatibility. latest:<alias>is deprecated but still accepted;latest:sonnetis exactlysonnet. New code should not use it.- Unknown names return
404with error codemodel_not_found, whether the name is a typo, a raw provider ID, or a model that exists but isn't in the catalog.
What the response's model field contains
On /v1/chat/completions and /v1/embeddings, the response's model field is the resolved provider model ID: claude-haiku-4-5-20251001 when you asked for haiku, and a full provider path like accounts/fireworks/models/deepseek-v4-pro-0813 for the Fireworks-hosted aliases (deepseek, qwen, glm). /v1/messages and /v1/responses echo exactly the string you sent. Either way: if you log or aggregate per model on your side, key on the alias you requested.
The resolved ID also tells you which provider actually served the request, which matters if your organization has data-handling requirements about where prompts go. mindshub_air, for example, currently resolves to gpt-5.6-luna on OpenAI. The listing's provider field says the same thing without making a call.
Reasoning effort
Models with a non-null reasoning_efforts list accept the reasoning_effort parameter on chat completions; the levels vary by model. A level a model can't take never fails the request: a recognized level is snapped onto the model's ladder, so below the ladder (including none when there is no off switch) you get its cheapest rung, above it you get its top rung, and between two rungs you get the lower one. Only an unrecognized value such as a typo is dropped, which lets the provider's own default run. Laddered models report the change in the X-MindsHub-*-Params response headers; models with reasoning_efforts: null currently drop it with no header. Full rules in Chat completions → Reasoning effort.
reasoning_efforts: null doesn't mean the model won't reason. Some models without adjustable levels (mindshub_air and kimi among them) still reason internally on every request, and the level isn't tunable. You'll see it as completion_tokens exceeding the visible answer (a one-sentence reply can meter 80 or more output tokens, drawn from included tokens like any output), and a tight max_tokens can be used up before the visible answer. Give those models max_tokens headroom of a few hundred tokens.
Parameter semantics, defaults, and examples are in Chat completions → Reasoning effort.
Model behavior differences
Wire behavior varies by provider: streaming chunk details, tool_choice handling, and finish_reason mapping all differ. The differences are flagged inline in Chat completions; re-test those paths when you switch model families.