Skip to main content

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

for model in client.models.list():
print(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
}
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. Disabled models still appear in the listing; disabled_reason says why.
disabled_reasonWhy 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_effortsEffort 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_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, cerebras, meta, xai, typesafe). This is who serves the model, not necessarily who trained it.
familyThe 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_versionOn 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_paramsReserved, 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_forThe 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.
createdAlways 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 carry display_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 with slug, the client's own base_instructions, visibility overrides for bundled slugs, and a content-derived ETag. 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.