Text
List models
The catalog, straight from the gateway. Public, so a client can browse before anyone signs up.
/v1/modelsChat models by default
With no query string this endpoint returns only the chat modality. That is deliberate: an SDK that populates a model picker from here should not offer a text-to-speech model for a chat request.
Image and speech models are still listed — ask for them explicitly with ?modality=image, ?modality=tts, or ?modality=all for everything in one call. Every entry carries a modality field. They are also named on Generate images and Text to speech.
| Field | Type | Description |
|---|---|---|
modality | string | One of chat (default), image, tts, stt, embedding, ocr, moderation, video, music, or all. An unrecognised value returns 400 rather than silently falling back to chat. |
curl https://api.xkiro.com/v1/models
# image and speech models
curl "https://api.xkiro.com/v1/models?modality=image"
curl "https://api.xkiro.com/v1/models?modality=all"{
"object": "list",
"data": [
{
"id": "z-ai/glm-5.3",
"object": "model",
"display_name": "GLM 5.3",
"owned_by": "z-ai",
"access_tier": "paid",
"context_length": 200000,
"max_output_tokens": 65536,
"pricing": {
"currency": "USD",
"unit": "per_1m_tokens",
"input": 0.44,
"output": 1.86
},
"capabilities": { "vision": false, "tools": true, "reasoning": true },
"reasoning_efforts": { "levels": ["low", "high", "max"], "default": "high" }
}
]
}Response fields#
| Field | Type | Description |
|---|---|---|
id | string | Full model ID. Pass this as model in a request. |
object | string | Always “model”. |
access_tier | string | free, paid or premium. Premium models require an account with a real deposit — see Access tiers. Use this to filter the catalog in code instead of discovering a 403 at request time. |
pricing | object | What you are charged, in USD per 1M tokens: input, output, and — where the model prices cache separately — cache_read / cache_write. Already includes any running discount, and matches the price list in the console. |
context_length | integer | Total context window in tokens. Omitted when the catalog has not verified a number — absent means unknown, not unlimited. |
max_output_tokens | integer | Largest output the model can produce in one turn. Omitted when unverified. |
capabilities | object | vision, tools, reasoning — booleans. See Capabilities. |
reasoning_efforts | object | The reasoning_effort levels this model actually accepts, plus its default. Present only on models with a selectable control — see Reasoning. |
owned_by | string | Vendor of record for the model. |
The metadata fields are additive
Every official SDK ignores fields it does not know, so client.models.list() keeps working unchanged — the metadata is there when you want it. The same fields appear in both the OpenAI and the Anthropic response shapes.
Anthropic shape#
Send an anthropic-version or x-api-keyheader and the same URL responds in Anthropic's catalog format instead. The Anthropic SDKs do this automatically, so client.models.list() works with no configuration.
curl https://api.xkiro.com/v1/models \
-H "anthropic-version: 2023-06-01"Treat this endpoint as the source of truth
It reflects the live catalog — any list published in documentation, including ours, is a snapshot. It is not filtered by account: the endpoint is public and returns the same models for everyone. Presence alone does not mean your account can call the model — read access_tier to know which models need a paid or deposited account before you send a request. See Models for how to choose between them.
Caching#
The catalog changes rarely. Cache it for a few minutes in your own client rather than calling it before every request — it is public and unmetered, but the round trip is latency you do not need to pay.
