Complete Model List
GET https://api.aimlapi.com/v1/models
GET https://api.aimlapi.com/model/{id}
GET /v1/models returns the live model catalogue — the machine-readable source for which models exist, what they are called, what they can do, and what they cost. Use it instead of scraping the model pages.
No API key is required for this request. You can also simply open this list in any web browser.
As of early 2026 the catalogue holds more than 400 models. By default each entry carries only its identity — pricing, modalities and capabilities are opt-in, so the default response stays small.
Get the model catalogue
Returns the models matching the given filters, with the requested optional sections attached.
Attach optional sections to each model: pricing, modalities, capabilities, or all for every section. Comma-separated and repeated values are both accepted. Unknown values are ignored rather than rejected.
pricing,capabilitiesShorthand for include=all.
truePossible values: Keep models matching this id, or carrying it as an alias. Comma-separated or repeated values are combined with OR.
gpt-4oKeep models served through this endpoint type, for example openai/chat-completions.
openai/chat-completionsKeep models carrying this tag, for example playground:video. Comma-separated or repeated values are combined with OR.
playground:chatKeep models with this modality among either their input or output modalities.
imageKeep models accepting this input modality.
textKeep models producing this output modality.
videoKeep models declaring this capability, for example image_to_video. Comma-separated or repeated values are combined with OR; combining with other filter parameters is AND.
streamingThe live model catalogue, filtered and expanded as requested. Responses carry an ETag.
Always "list".
listcurl -L \
--url 'https://api.aimlapi.com/v1/models'The live model catalogue, filtered and expanded as requested. Responses carry an ETag.
{
"object": "list",
"data": [
{
"id": "openai/gpt-4o",
"aliases": [
"gpt-4o"
],
"type": "openai/chat-completions",
"info": {
"name": "GPT-4o",
"developer": "Open AI",
"description": "Multimodal AI model by OpenAI enhancing human-computer interaction.",
"releasedAt": "2025-08-07",
"contextLength": 128000,
"outputMax": 16384,
"cutoffAt": "2023-10-01",
"url": "https://aimlapi.com/models/gpt-4o-2024-08-06-api",
"docsUrl": "https://docs.aimlapi.com/api-references/text-models-llm/openai/gpt-4o",
"docsJson": "https://api.aimlapi.com/docs-json?model=openai%2Fgpt-4o&endpoint=openai%2Fchat-completions"
},
"tags": [
"playground:chat",
"tier:tier_2"
],
"modalities": {
"input": [
"image",
"text"
],
"output": [
"text"
]
},
"capabilities": [
"streaming",
"structured_output",
"tools",
"vision"
],
"pricing": {
"kind": "fixed",
"currency": "USD",
"units": [
{}
],
"dimensions": [
"text"
],
"variants": [
{}
]
}
}
]
}Asking for more per model
include attaches optional sections to each model — pricing, modalities, capabilities, or all (?details=true is a synonym for every section). Combine them freely, comma-separated. Unknown values are ignored rather than rejected, so a typo returns a valid response with that section missing.
Filtering
Filters narrow which models come back, and are independent of include — you can filter on capabilities without asking for the capabilities section.
Several values, one parameter — OR.
?capabilities=text_to_video,image_to_videoreturns models that do either.Several parameters — AND.
?output_modalities=video&capabilities=audio_generationreturns models that do both.Values are case-insensitive, and may be given comma-separated (
?tags=a,b) or repeated (?tags=a&tags=b). Both forms merge.idmatches an id or an alias. An omitted parameter filters nothing.
Looking up one model
GET /model/{id} returns a single model in the same projection, wrapped as {"object": "model", "data": {…}} instead of a list. It takes the same include and details parameters.
Model ids containing slashes go into the path as they are — no escaping. The lookup matches aliases as well as ids, is case-insensitive, and returns 404 for a name that matches neither.
Output examples by model type
Each item represents a single model. The info block is the part that varies by category — context and output limits are meaningful for a text model and absent from an image or video one — while id, aliases, type and tags are always present.
Example output item for a chat model
Example output item for an image model
Example output item for a video model
What include adds
Asking for the optional sections attaches them to the same item:
Checking whether a model is still available
Match against id and aliases together, not id alone. A model may be published under a canonical id while the name you integrated against lives on as an alias — the alias keeps working, but it is not the id any more, so an id-only comparison reports a live model as gone.
The same map de-duplicates your list: two names resolving to one canonical id are one model, not two.
Reading prices
With ?include=pricing, each model carries a pricing block. Read kind first — it decides how the rest is shaped.
Always read per together with price. price is the charge for per units, and per is not the same across models — 1000000 for most token rates, 1000 for some, 1 for per-second and per-megapixel rates. Comparing bare price values across models compares different bases and will be wrong by orders of magnitude.
Here a 5-second 1080p generation costs 0.65 × 5 = $3.25. Prices are in USD and are what you are charged.
Caching
Responses carry an ETag. Send it back as If-None-Match and you get 304 Not Modified with an empty body when nothing changed:
Last updated
Was this helpful?