Text

List models

The catalog, straight from the gateway. Public, so a client can browse before anyone signs up.

GET/v1/models

Chat 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.

Query parameters
FieldTypeDescription
modalitystringOne 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"
200 OK
{
  "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#

FieldTypeDescription
idstringFull model ID. Pass this as model in a request.
objectstringAlways “model”.
access_tierstringfree, 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.
pricingobjectWhat 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_lengthintegerTotal context window in tokens. Omitted when the catalog has not verified a number — absent means unknown, not unlimited.
max_output_tokensintegerLargest output the model can produce in one turn. Omitted when unverified.
capabilitiesobjectvision, tools, reasoning — booleans. See Capabilities.
reasoning_effortsobjectThe reasoning_effort levels this model actually accepts, plus its default. Present only on models with a selectable control — see Reasoning.
owned_bystringVendor 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.

Was this page helpful?