Models
GET /v1/models — list and retrieve available models with capabilities
The live catalog of models. Always dynamic — we don't keep a static list in these docs because it drifts the moment we add a model.
Auth: Bearer token or x-api-key. Requires scope inference.models. Responses are cached for 5 minutes — safe to poll.
List models
GET /v1/modelsReturns every model available to your key's plan. Add ?include_meta=true for Melious-specific capability metadata.
curl https://api.melious.ai/v1/models \
-H "Authorization: Bearer sk-mel-<YOUR_API_KEY>"{
"object": "list",
"data": [
{ "id": "<MODEL_ID>", "object": "model", "created": 1699999999, "owned_by": "melious" },
{ "id": "<ANOTHER_MODEL_ID>", "object": "model", "created": 1699999999, "owned_by": "melious" }
]
}curl "https://api.melious.ai/v1/models?include_meta=true" \
-H "Authorization: Bearer sk-mel-<YOUR_API_KEY>"{
"object": "list",
"data": [
{
"id": "<MODEL_ID>",
"object": "model",
"created": 1699999999,
"owned_by": "melious",
"_meta": {
"type": "chat",
"input_modalities": ["text"],
"output_modalities": ["text"],
"capabilities": {
"streaming": true,
"function_calling": true,
"vision": false,
"structured_output": true,
"json_schema": true,
"reasoning": false
},
"context_length": 131072,
"max_output_tokens": 16384,
"reasoning_type": "non_reasoning",
"reasoning_effort": null,
"knowledge_cutoff": "2024-10",
"release_date": "2025-03-01",
"huggingface_url": "https://huggingface.co/Qwen/Qwen3-235B-A22B",
"pricing": {
"input_cost_per_million_eur": 0.50,
"output_cost_per_million_eur": 1.50,
"cache_read_cost_per_million_eur": 0.13,
"currency": "EUR"
}
}
}
]
}_meta.type
One of chat, embeddings, audio, image, reranker, guardrail. Tells you which endpoint to hit.
_meta.capabilities
Boolean flags you can branch on when picking a model programmatically. Common keys: streaming, function_calling, vision, structured_output, json_schema, audio_input, reasoning. Absence of a key means "not applicable" for that model type (e.g. embedding models don't have vision).
_meta.context_length
Max context tokens for chat and embedding models. Absent for image/audio models. Exceeding it returns INFERENCE_3207.
_meta.max_output_tokens
The model's default maximum output tokens, from its parameter configuration. null when the model doesn't specify one.
_meta.reasoning_type
One of reasoning, non_reasoning, hybrid. Hybrid models can toggle reasoning on or off per request using reasoning_effort.
_meta.reasoning_effort
For models that support reasoning effort levels: low, medium, or high. null when the model doesn't support effort control.
_meta.knowledge_cutoff
The model's training data cutoff date (e.g. 2024-10). null when not available.
_meta.release_date
When the model was released (ISO date string, e.g. 2025-03-01). null when not available.
_meta.huggingface_url
Link to the model's HuggingFace page, when the model has one. null for closed or proprietary models.
_meta.pricing
User-facing pricing for the model, computed as the cheapest rate across active providers. Present only when at least one active provider has pricing for the model type. All amounts are in EUR.
The fields vary by model type:
| Model type | Pricing fields |
|---|---|
chat | input_cost_per_million_eur, output_cost_per_million_eur, cache_read_cost_per_million_eur (optional), currency |
embeddings, reranker | input_cost_per_million_eur, currency |
image | image_cost_per_image_eur, currency |
audio | audio_cost_per_minute_eur, currency |
guardrail | input_cost_per_million_eur, output_cost_per_million_eur, currency |
cache_read_cost_per_million_eur is only present when at least one provider supports prompt caching for that model. Token costs are per 1 million tokens. The displayed price is what you actually pay — it matches the billing_cost on inference responses.
Retrieve one model
GET /v1/models/{id}Returns a single model object in the same shape. include_meta=true works here too.
curl "https://api.melious.ai/v1/models/<MODEL_ID>?include_meta=true" \
-H "Authorization: Bearer sk-mel-<YOUR_API_KEY>"Finding models programmatically
A common pattern: filter on capabilities before picking.
from openai import OpenAI
client = OpenAI(api_key="sk-mel-<YOUR_API_KEY>", base_url="https://api.melious.ai/v1")
# OpenAI SDK doesn't expose ?include_meta, so hit the raw endpoint
import httpx
models = httpx.get(
"https://api.melious.ai/v1/models",
params={"include_meta": "true"},
headers={"Authorization": "Bearer sk-mel-<YOUR_API_KEY>"},
).json()
# Pick the largest-context chat model that supports tools
candidates = [
m for m in models["data"]
if m["_meta"]["type"] == "chat"
and m["_meta"]["capabilities"].get("function_calling")
]
best = max(candidates, key=lambda m: m["_meta"]["context_length"])
print(best["id"], best["_meta"]["context_length"])Plan benefits affect what shows up. If your key's plan doesn't include advanced models, they won't appear in the list — no need to filter them out on your side.
What's not here
The model list endpoint doesn't return provider-level details (which providers serve a model, their health status, or raw provider costs). The _meta.pricing block gives you the user-facing price — the cheapest across providers — but not the provider breakdown. For the authoritative per-request cost, check billing_cost on each inference response.
Errors
INFERENCE_3001— unknown model ID on the single-retrieve endpoint.AUTH_1015— missinginference.modelsscope.
Related
Human-readable catalog: melious.ai/hub • Model stance and families: Models concept • Routing by capability: Routing.