> For the complete documentation index, see [llms.txt](https://docs.aimlapi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aimlapi.com/api-references/service-endpoints/complete-model-list.md).

# Complete Model List

<table data-header-hidden data-full-width="true"><thead><tr><th width="220" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><a href="#get-the-model-catalogue">Get the model catalogue</a></td><td valign="top"><mark style="color:$success;"><strong><code>GET</code></strong></mark> <code>https://api.aimlapi.com/v1/models</code></td></tr><tr><td valign="top"><a href="#looking-up-one-model">Look up one model</a></td><td valign="top"><mark style="color:$success;"><strong><code>GET</code></strong></mark> <code>https://api.aimlapi.com/model/{id}</code></td></tr></tbody></table>

`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](https://api.aimlapi.com/v1/models) 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.

{% hint style="info" %}
`https://api.aimlapi.com/models` and `https://api.aimlapi.com/api/v1/models` serve exactly the same data. `/v1/models` is the canonical path and the one to use in new integrations — an OpenAI-compatible client configured with a base URL of `https://api.aimlapi.com/v1` reaches it by appending `/models`.
{% endhint %}

## Get the model catalogue

Returns the models matching the given filters, with the requested optional sections attached.

## GET /v1/models

>

```json
{"openapi":"3.0.0","info":{"title":"AIML API","version":"1.0.0"},"servers":[{"url":"https://api.aimlapi.com"}],"paths":{"/v1/models":{"get":{"operationId":"ModelsController_getModels_v1","parameters":[{"name":"include","in":"query","required":false,"description":"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.","schema":{"type":"string"}},{"name":"details","in":"query","required":false,"description":"Shorthand for `include=all`.","schema":{"type":"string","enum":["true","1"]}},{"name":"id","in":"query","required":false,"description":"Keep models matching this id, or carrying it as an alias. Comma-separated or repeated values are combined with OR.","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Keep models served through this endpoint type, for example `openai/chat-completions`.","schema":{"type":"string"}},{"name":"tags","in":"query","required":false,"description":"Keep models carrying this tag, for example `playground:video`. Comma-separated or repeated values are combined with OR.","schema":{"type":"string"}},{"name":"modalities","in":"query","required":false,"description":"Keep models with this modality among either their input or output modalities.","schema":{"type":"string"}},{"name":"input_modalities","in":"query","required":false,"description":"Keep models accepting this input modality.","schema":{"type":"string"}},{"name":"output_modalities","in":"query","required":false,"description":"Keep models producing this output modality.","schema":{"type":"string"}},{"name":"capabilities","in":"query","required":false,"description":"Keep 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.","schema":{"type":"string"}}],"responses":{"200":{"description":"The live model catalogue, filtered and expanded as requested. Responses carry an ETag.","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","description":"Always \"list\"."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Canonical unique identifier of the model."},"aliases":{"type":"array","description":"Other names this model can still be requested under.","items":{"type":"string"}},"type":{"type":"string","description":"Endpoint type this model is served through."},"info":{"type":"object","description":"Model identity. Which keys are present varies by model type: context and output limits appear on text models, not on image or video ones.","properties":{"name":{"type":"string","description":"Human-readable model name."},"developer":{"type":"string","description":"Organization or company that developed the model."},"description":{"type":"string","description":"Short description of the model and its primary capabilities."},"releasedAt":{"type":"string","description":"Release date of the model."},"contextLength":{"type":"integer","description":"Maximum supported context window size in tokens. Text models only."},"outputMax":{"type":"integer","description":"Maximum number of tokens that can be generated in a single response. Text models only."},"cutoffAt":{"type":"string","description":"Training data cutoff date, where the developer publishes one."},"url":{"type":"string","description":"Public model landing page on the AIML API website. May be an empty string."},"docsUrl":{"type":"string","description":"Link to this model's page in the documentation portal."},"docsJson":{"type":"string","description":"Machine-readable OpenAPI description of this model's endpoint."}},"required":["name","developer"]},"tags":{"type":"array","description":"Free-form tags, for example `playground:chat` or `tier:tier_2`.","items":{"type":"string"}},"modalities":{"type":"object","description":"Present only with `?include=modalities` or `all`. Input and output modalities the model handles.","properties":{"input":{"type":"array","items":{"type":"string"}},"output":{"type":"array","items":{"type":"string"}}}},"capabilities":{"type":"array","description":"Present only with `?include=capabilities` or `all`. Declared capabilities.","items":{"type":"string"}},"pricing":{"type":"object","description":"Present only with `?include=pricing` or `all`. Read `kind` first: `fixed` quotes one rate per unit, `variants` quotes a rate per parameter combination, `variable` cannot be quoted ahead of the request.","properties":{"kind":{"type":"string","enum":["fixed","variants","variable"]},"currency":{"type":"string"},"units":{"type":"array","description":"Rates for a `fixed` price. Always read `price` together with `per`.","items":{"type":"object"}},"dimensions":{"type":"array","description":"Request parameters the rate depends on, for a `variants` price.","items":{"type":"string"}},"variants":{"type":"array","description":"One quoted rate per parameter combination, for a `variants` price.","items":{"type":"object"}}}}},"required":["id","aliases","type","info","tags"]}}},"required":["object","data"]}}}}}}}}}
```

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

```bash
curl 'https://api.aimlapi.com/v1/models?include=pricing,capabilities'

# what one specific model costs — a few kilobytes instead of the whole catalogue
curl 'https://api.aimlapi.com/v1/models?id=deepgram/aura-2&include=pricing'
```

## 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_video` returns models that do either.
* **Several parameters — AND.** `?output_modalities=video&capabilities=audio_generation` returns 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.
* `id` matches **an id or an alias**. An omitted parameter filters nothing.

```bash
# every model that turns an image into video
curl 'https://api.aimlapi.com/v1/models?capabilities=image_to_video'
```

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

```bash
curl 'https://api.aimlapi.com/model/openai/gpt-4o?include=pricing'
```

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.

{% hint style="info" %}
Note the two differences from the catalogue route. The path is singular — `/model/`, not `/models/` — and it is **not** registered under `/v1`.

`GET /v1/models?id=openai/gpt-4o` answers the same question and stays on the catalogue route. Use whichever fits: the filter returns a list, possibly empty; the lookup returns one model or a `404`.
{% endhint %}

## 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

{% code overflow="wrap" %}

```json
{
  "id": "openai/gpt-4o",
  "info": {
    "releasedAt": "2025-08-07",
    "name": "GPT-4o",
    "developer": "Open AI",
    "description": "Multimodal AI model by OpenAI enhancing human-computer interaction.",
    "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"
  },
  "type": "openai/chat-completions",
  "aliases": ["gpt-4o"],
  "tags": ["playground:chat", "tier:tier_2"]
}
```

{% endcode %}

#### Example output item for an image model

{% code overflow="wrap" %}

```json
{
  "id": "openai/gpt-image-1",
  "info": {
    "releasedAt": "2025-10-13",
    "name": "GPT Image 1",
    "developer": "Open AI",
    "description": "GPT Image 1 is OpenAI's first-generation image generation model combining language understanding with visual synthesis.",
    "url": "",
    "docsUrl": "https://docs.aimlapi.com/api-references/image-models/openai/gpt-image-1",
    "docsJson": "https://api.aimlapi.com/docs-json?model=openai%2Fgpt-image-1&endpoint=openai%2Fimage-generations"
  },
  "type": "openai/image-generations",
  "aliases": ["gpt-image-1"],
  "tags": ["playground:image", "tier:tier_2"]
}
```

{% endcode %}

#### Example output item for a video model

{% code overflow="wrap" %}

```json
{
  "id": "google/veo-2.0-generate-001",
  "info": {
    "releasedAt": "2025-11-25",
    "name": "Veo 2 Text-to-Video",
    "developer": "Google",
    "description": "Veo2: Google's advanced text-to-video model",
    "url": "https://aimlapi.com/models/veo-2-text-to-video-api",
    "docsUrl": "https://docs.aimlapi.com/api-references/video-models/google/veo2-text-to-video",
    "docsJson": "https://api.aimlapi.com/docs-json?model=google%2Fveo-2.0-generate-001&endpoint=internal%2Fvideo-generations%2Fsubmit"
  },
  "type": "internal/video-generations/submit",
  "aliases": ["veo-2.0-generate-001"],
  "tags": ["playground:video", "tier:tier_2"]
}
```

{% endcode %}

#### What `include` adds

Asking for the optional sections attaches them to the same item:

{% code overflow="wrap" %}

```json
{
  "id": "openai/gpt-4o",
  "modalities": { "input": ["image", "text"], "output": ["text"] },
  "capabilities": [
    "file_input",
    "parallel_tool_calls",
    "streaming",
    "structured_output",
    "tools",
    "vision"
  ],
  "pricing": {
    "kind": "fixed",
    "currency": "USD",
    "units": [
      { "name": "token", "measure": "output", "price": 3.25, "per": 1000000 }
    ]
  }
}
```

{% endcode %}

## Checking whether a model is still available

{% hint style="warning" %}
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.
{% endhint %}

{% code overflow="wrap" %}

```js
const res = await fetch('https://api.aimlapi.com/v1/models');
const { data } = await res.json();

const byName = new Map();
for (const model of data) {
  byName.set(model.id, model.id);
  for (const alias of model.aliases ?? []) byName.set(alias, model.id);
}

const canonical = byName.get(myModelId); // undefined ⇒ not in the catalogue
```

{% endcode %}

The same map de-duplicates your list: two names resolving to one canonical id are one model, not two.

{% hint style="info" %}
A name missing from this map is not necessarily a model that went away — it may also be one that never existed here. [`GET /v1/models/deprecations`](/api-references/service-endpoints/model-deprecations.md) tells the two apart, and names the id to migrate to where there is one.
{% endhint %}

## Reading prices

With `?include=pricing`, each model carries a `pricing` block. Read `kind` first — it decides how the rest is shaped.

{% hint style="warning" %}
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.
{% endhint %}

```json
{
  "kind": "variants",
  "dimensions": ["resolution"],
  "variants": [
    { "when": { "resolution": "720p" },  "price": 0.39, "unit": "second", "per": 1 },
    { "when": { "resolution": "1080p" }, "price": 0.65, "unit": "second", "per": 1 }
  ]
}
```

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:

```bash
curl -I 'https://api.aimlapi.com/v1/models?include=pricing'
# etag: W/"1440a0-uH6NONsG/9An5njw3kqMcYY5k8w"

curl -H 'If-None-Match: W/"1440a0-uH6NONsG/9An5njw3kqMcYY5k8w"' \
     'https://api.aimlapi.com/v1/models?include=pricing'
# 304
```

{% hint style="info" %}
The ETag covers the whole response, so it changes on any catalogue edit — a new model or a reworded description, not only a price change. Treat it as "something moved, re-read and diff", not as a price-change feed.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.aimlapi.com/api-references/service-endpoints/complete-model-list.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
