GET /v1/models at startup — or per request in dynamic environments — and select the model that matches the capabilities you need. Never hardcode a model ID: what works today may be gone tomorrow, and a fresher or cheaper model may be the right choice tomorrow.
GET /v1/models
Returns the full model catalog as an OpenAI-compatible list object. Each entry includes capability flags, modality declarations, context window sizes, and the exact endpoint paths the model supports. Authentication:Authorization: Bearer sk-<your-key>
Response shape
Response fields
string
Always
"list". Matches the OpenAI list object envelope.array
Array of model objects. Each object contains the fields described below.
string
required
The model identifier. Pass this value as the
model parameter in any inference
request. See Model ID normalization for accepted
formats.string
Human-readable display name for the model, suitable for UI presentation.
string
Always
"model".string
The upstream provider that owns the model weights — for example
anthropic,
openai. Use this to filter by provider.string
Same value as
owned_by. Present for compatibility with OpenRouter-style
tooling that expects a provider field.string
Model type.
"chat" for all current conversational models.string
The subscription tier required to access this model. One of
"free",
"pro", or "premium". Check your plan against this field before
selecting a model.string[]
The API endpoint paths this model supports — for example
["/v1/chat/completions", "/v1/responses"]. Check this array before
routing a request to a specific endpoint.string[]
High-level capability tags — for example
["text", "vision", "tool_use"].
Use these for broad filtering; prefer the boolean flags below for
programmatic checks.string[]
The input types this model accepts — for example
["text", "image"]. Only
send image content to models that declare "image" here.string[]
The output types this model produces — for example
["text"].integer
Maximum number of input tokens the model accepts in a single request. Use
this to validate your prompt length before sending.
integer
Alias of
context_length. Present for compatibility with tooling that
expects a context_window field. Both values are identical.integer
Maximum tokens the model can generate in a single response. Cap your
max_tokens parameter at or below this value.integer
Alias of
max_output_tokens. Present for compatibility with tooling that
uses the newer OpenAI max_completion_tokens field name. Both values are
identical.boolean
true if the model supports OpenAI-style function/tool calling. Always
check this before including a tools array in your request — sending tools
to an unsupported model returns an error.boolean
true if the model accepts image inputs via the image_url content type.
This means the model can read images sent in a chat or responses request —
not generate them.boolean
true if the model supports chain-of-thought / extended reasoning modes.string
Human-readable description of the model’s strengths and intended use cases.
string
"list" means the model appears in the public catalog. Models with other
values are accessible by ID but do not surface in the listing.Filter for tool-capable models
Use the response to build a filtered list at startup, then pick a model that matches your needs:GET /v1/models/{model_id}
Retrieve metadata for a single model by its ID. Useful for validating a model ID at startup or refreshing a cached entry. Authentication:Authorization: Bearer sk-<your-key>
Model ID normalization
The API accepts model IDs in several equivalent formats — useful when working with IDs copied from different sources. All of the following resolve to the same model:GET /v1/tiers
Returns a tier and model availability overview, showing which models are accessible on each subscription tier. Authentication:Authorization: Bearer sk-<your-key>
Use this endpoint to check which models your current plan unlocks — or to build a tier selection UI that shows users what they gain by upgrading.
