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.

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 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": []
}
],
"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. false usually means it needs wallet credit. Disabled models still appear in the listing.
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, moonshot, meta, xai). 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.
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, 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. 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.