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,
"supported_params": ["stop_sequences", "max_tokens", "reasoning_effort", "thinking", "tool_choice"],
"provider": "anthropic",
"family": "sonnet"
}
]
}
| 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 alias whose version moves that this row belongs to. family == id means this alias tracks the newest version; any other value names the moving alias this row is a frozen version of. Frozen versions are ordinary aliases with their own id, never the deprecated latest: prefix. |
supported_params | 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. |
created | Always 0. Not a real timestamp. |
provider, family, and supported_params 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, and one without supported_params tells you nothing about what it drops (it doesn't mean "drops everything").
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 July 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.6 Flash | |
kimi | Kimi K3 | |
deepseek | DeepSeek V4 Pro | |
qwen | Qwen3.7 Plus | |
glm | GLM 5.2 | |
muse-spark | Muse Spark 1.1 | |
grok | Grok 4.5 | |
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, /v1/responses, 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 for the Fireworks-hosted aliases (deepseek, qwen, glm). Only /v1/messages echoes 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: recognized levels above the ladder are clamped down into it, and unplaceable ones are dropped, in which case the model's default applies. Laddered models report the change in the X-MindsHub-*-Params response headers; models with reasoning_efforts: null currently drop it with no header.
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.