Models endpoint
GET /v1/models lists every alias in the catalog with the metadata a client needs to build a model picker: label, whether your organization can call it right now, reasoning-effort levels, provider, and family. It is free to call and never paginated.
Every model includes kind: chat, embedding, or decision. Use it to select the appropriate endpoint and filter chat pickers. Jev decision models use POST /v1/decisions.
Endpoint
GET https://api.mindshub.ai/v1/models
- Python
- TypeScript
for model in client.models.list():
print(model.id)
for await (const model of client.models.list()) {
console.log(model.id);
}
The generated reference page is GET /v1/models. Both the OpenAI and Anthropic SDKs' models.list() parse the response: each row carries type, display_name, and created_at beside the OpenAI-shaped fields, and has_more is always false.
Response
{
"object": "list",
"data": [
{
"id": "sonnet",
"label": "Claude Sonnet",
"object": "model",
"created": 0,
"enabled": true,
"reasoning_efforts": ["low", "medium", "high", "xhigh", "max"],
"default_reasoning_effort": "high",
"embedding": false,
"provider": "anthropic",
"family": "sonnet",
"current_version": "sonnet-5-5",
"default_for": []
}
],
"has_more": false
}
| 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. Disabled models still appear in the listing; disabled_reason says why. |
disabled_reason | Why enabled is false: model_restricted (an administrator in your organization restricted the model, and credit does not help), wallet_empty (the model needs wallet credit), or included_allowance_exhausted (the included allowance is used up or zero, and no wallet capacity is available). The same words a request for that model would be refused with. Omitted on an enabled row. |
reasoning_efforts | Effort levels the model accepts, or null if the level isn't adjustable. null does not mean the model doesn't reason; see Reasoning. |
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, cerebras, meta, xai, typesafe). This is who serves the model, not necessarily who trained it. |
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. |
current_version | On a moving alias, the fixed alias that serves the same model today: pin it to stay on that model when the moving alias is repointed. Omitted on fixed aliases, and on a moving alias with no same-model pin (mindshub_air, mindshub_blaze). |
supported_params | Reserved, not published yet. Generation parameters the model honors, in the platform's parameter names. No row carries it today, so treat its absence as "unknown"; the capability matrix answers the question in the meantime. |
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. It grants nothing; enabled still decides whether you may call the model. |
created | Always 0. Not a real timestamp. |
provider, family, default_for, and disabled_reason are omitted from a row rather than sent as null when the service hasn't classified it, so read them with a default. A disabled row with no disabled_reason means the service cannot say why. default_for is the one where absent and empty differ: [] means this alias is nobody's default; a missing key means the service cannot say.
There is no owned_by field. Code that reads owned_by won't find it.
Client-specific responses
The endpoint answers in three dialects, chosen from the request's headers:
- Default: the shape above.
- Claude Code (detected from its user agent): ids are minted as
anthropic-<alias>, rows carrydisplay_name, and the list is filtered to moving, non-embedding aliases so Claude Code's picker shows one entry per family. See Coding agents. - Codex: a
{"models": [...]}list withslug, the client's ownbase_instructions,visibilityoverrides for bundled slugs, and a content-derivedETag. See Codex.
Errors you can hit
401 invalid_credentials without a valid key. The listing itself never returns a 402 or 429: disabled models are listed with enabled: false instead. See Errors.