Skip to main content

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"
}
]
}
FieldMeaning
idThe alias. This is what you put in the model field of a request.
labelHuman-readable display name.
enabledWhether your organization can call this model right now. false usually means it needs wallet credit. Disabled models still appear in the listing.
reasoning_effortsEffort 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_effortThe effort used when you don't specify one.
embeddingtrue for embedding models (use them with /v1/embeddings, not chat).
providerThe 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.
familyThe 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_paramsGeneration 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.
createdAlways 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.

AliasLabelNotes
mindshub_airMindsHub AirCovered by your monthly included tokens.
sonnetClaude Sonnet 5
opusClaude Opus 5
fableClaude Fable 5
haikuClaude Haiku 4.5
gptGPT 5.6 Sol
gpt-terraGPT 5.6 Terra
gpt-lunaGPT 5.6 Luna
gpt-codexGPT 5.3 Codex
gpt-miniGPT 5.4 Mini
gpt-nanoGPT 5.4 Nano
geminiGemini 3.1 Pro Preview
gemini-flashGemini 3.6 Flash
kimiKimi K3
deepseekDeepSeek V4 Pro
qwenQwen3.7 Plus
glmGLM 5.2
muse-sparkMuse Spark 1.1
grokGrok 4.5
embed-smallText 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" returns 404 model_not_found on the OpenAI-compatible endpoints. The one exception: the Anthropic-compatible /v1/messages endpoint maps real Claude model names onto aliases so Claude Code works unmodified; see Anthropic compatibility.
  • latest:<alias> is deprecated but still accepted; latest:sonnet is exactly sonnet. New code should not use it.
  • Unknown names return 404 with error code model_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.