> ## Documentation Index
> Fetch the complete documentation index at: https://edenai-docs-refresh-dead-model-ids.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List LLM Models

> Use the /v3/models endpoint to retrieve all LLM models available through Eden AI, along with their capabilities: input modalities, reasoning, web search, and function calling.

export const TechArticleSchema = ({title, description, path, articleSection, about, proficiencyLevel = "Beginner", dependencies, keywords = [], datePublished, dateModified, image, inLanguage = "en"}) => {
  const baseUrl = "https://www.edenai.co/docs";
  const canonicalUrl = `${baseUrl}/${path}`.replace(/\/+$/, "");
  const ogParams = new URLSearchParams({
    division: articleSection || "",
    title: title || "",
    description: description || ""
  });
  const resolvedImage = image || `https://edenai.mintlify.app/_mintlify/api/og?${ogParams.toString()}`;
  const data = {
    "@context": "https://schema.org",
    "@type": "TechArticle",
    "@id": `${canonicalUrl}#techarticle`,
    mainEntityOfPage: {
      "@type": "WebPage",
      "@id": canonicalUrl
    },
    headline: title,
    name: title,
    description: description,
    url: canonicalUrl,
    inLanguage: inLanguage,
    isPartOf: {
      "@type": "WebSite",
      name: "Eden AI Documentation",
      url: baseUrl
    },
    author: [{
      "@type": "Organization",
      name: "Eden AI",
      url: "https://www.edenai.co/"
    }],
    publisher: {
      "@type": "Organization",
      name: "Eden AI",
      url: "https://www.edenai.co/",
      logo: {
        "@type": "ImageObject",
        url: "https://www.edenai.co/assets/logo.png"
      }
    }
  };
  if (articleSection) data.articleSection = articleSection;
  if (about) data.about = {
    "@type": "Thing",
    name: about
  };
  if (proficiencyLevel) data.proficiencyLevel = proficiencyLevel;
  if (dependencies) data.dependencies = dependencies;
  if (keywords && keywords.length) data.keywords = keywords;
  if (datePublished) data.datePublished = datePublished;
  if (dateModified) data.dateModified = dateModified;
  data.image = Array.isArray(resolvedImage) ? resolvedImage : [resolvedImage];
  const json = JSON.stringify(data);
  const schemaId = `techarticle-${canonicalUrl}`;
  React.useEffect(() => {
    if (typeof document === "undefined") return;
    document.querySelectorAll(`script[data-schema-id="${schemaId}"]`).forEach(n => n.remove());
    const script = document.createElement("script");
    script.type = "application/ld+json";
    script.dataset.schemaId = schemaId;
    script.textContent = json;
    document.head.appendChild(script);
    return () => script.remove();
  }, [json, schemaId]);
  return null;
};

<TechArticleSchema title={"List LLM Models"} description={"Use the /v3/models endpoint to retrieve all LLM models available through Eden AI, along with their capabilities: input modalities, reasoning, web search, and function calling."} path="v3/llms/listing-models" articleSection="LLMs" about={"LLM API"} proficiencyLevel="Intermediate" keywords={["Eden AI", "AI API", "LLM API", "chat completion", "OpenAI compatible"]} datePublished="2026-05-06T00:00:00Z" dateModified="2026-08-24T00:00:00Z" />

Use the `/v3/models` endpoint to retrieve all LLM models available through Eden AI, along with their capabilities: input modalities, reasoning, web search, and function calling.

## Endpoint

```
GET /v3/models
```

The endpoint is public: no API key is required.

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.edenai.run/v3/models
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.edenai.run/v3/models")

  for model in response.json()["data"]:
      print(model["id"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.edenai.run/v3/models");

  const { data } = await response.json();
  data.forEach(model => console.log(model.id));
  ```
</CodeGroup>

## Response

Each entry includes the model's identity, context window, capabilities, pricing, and available regions (list truncated for readability):

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "google/gemini-flash-latest",
      "object": "model",
      "created": 1784646733,
      "owned_by": "google",
      "model_name": "gemini-3.6-flash",
      "context_length": 1048576,
      "description": "Gemini 3.6 Flash is a high-efficiency model from Google...",
      "capabilities": {
        "input_modalities": ["text", "image", "video", "file", "audio"],
        "output_modalities": ["text"],
        "supports_reasoning": true,
        "supports_web_search": true,
        "supports_tool_choice": true,
        "supports_computer_use": false,
        "supports_prompt_caching": true,
        "supports_response_schema": true,
        "supports_system_messages": true,
        "supports_function_calling": true,
        "supports_native_streaming": true,
        "supports_assistant_prefill": false,
        "supports_embedding_image_input": false,
        "supports_parallel_function_calling": true
      },
      "pricing": {
        "input_cost_per_token": 1.5e-06,
        "output_cost_per_token": 7.5e-06,
        "cache_read_input_token_cost": 1.5e-07,
        "cache_creation_input_token_cost": 8.33e-08
      },
      "regions": [
        { "code": "eu", "name": "Europe" }
      ],
      "alias_of": "google/gemini-3.6-flash"
    }
  ]
}
```

Each model `id` is used directly as the `model` parameter in your requests.

## Grouped view: one entry per routable name

Many models are sold by more than one provider. Pass `view=models` to get one entry per **routable model name**, with the provider endpoints nested underneath. This is how you discover the names that [Provider Routing](/v3/llms/provider-routing) accepts.

```bash cURL theme={null}
curl "https://api.edenai.run/v3/models?view=models"
```

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "gpt-5.6-sol",
      "object": "model",
      "created": 1785352476,
      "owned_by": "openai",
      "mode": "chat",
      "endpoint_count": 2,
      "endpoints": [
        { "id": "openai/gpt-5.6-sol", "owned_by": "openai", "...": "a full model entry, as above" },
        { "id": "azure/gpt-5.6-sol",  "owned_by": "azure",  "...": "a full model entry, as above" }
      ]
    }
  ]
}
```

What to expect from the shape:

* **`id` is the routable name.** Send it as `model` and Eden AI picks which provider serves it.
* **Each entry in `endpoints` is the same object the default view returns**, with its own pricing, capabilities, context length and regions. Nothing is summarised at the name level, because providers of one model genuinely differ on all of it. To compare providers, read `endpoints`.
* **`owned_by` changes meaning between the views.** On a grouped entry it is who authored the model (`openai`); on an endpoint entry it is the provider selling it (`azure`).
* **`created` is the newest endpoint's timestamp**, and `endpoint_count` equals `endpoints.length`.
* The default (`view=endpoints`, or no parameter) is unchanged, and both entry shapes stay compatible with the OpenAI SDK's `client.models.list()`.

Every model listing takes the same parameter: `/v3/models`, `/v3/embeddings/models`, `/v3/moderations/models`, `/v3/audio/transcriptions/models`, `/v3/audio/speech/models` and `/v3/images/models`.

## Model aliases

Some models are available under a **stable alias**, a version-agnostic name that always points to the current release, alongside versioned or dated snapshot IDs:

* **Stable alias:** `google/gemini-flash-latest`, `anthropic/claude-sonnet-latest`, `deepseek/deepseek-chat`
* **Versioned snapshot:** `anthropic/claude-opus-4-5-20251101`

Use the **stable alias** when you want your integration to keep working as providers ship new versions. **Pin a versioned snapshot** when you need a fixed, reproducible model. Either form works as the `model` parameter. Alias entries report the concrete model they currently resolve to in the `alias_of` field, as in the response example above.

The catalog lists both forms when a provider exposes them, so you may see a stable alias (e.g. `anthropic/claude-opus-4-5`) and one or more dated snapshots (e.g. `anthropic/claude-opus-4-5-20251101`) side by side. Use the stable alias to always get the latest version, or a dated snapshot to pin to a specific release.

## Capabilities

The `capabilities` object describes what each model supports:

| Field                                | Description                                                                         |
| ------------------------------------ | ----------------------------------------------------------------------------------- |
| `input_modalities`                   | Input types the model accepts: `text`, `image`, `audio`, `video`, `file`            |
| `output_modalities`                  | Output types the model produces                                                     |
| `supports_reasoning`                 | Model supports extended thinking / reasoning mode                                   |
| `supports_web_search`                | Model can perform live web searches via [`web_search_options`](/v3/llms/web-search) |
| `supports_function_calling`          | Model supports function/tool calling                                                |
| `supports_tool_choice`               | Model supports the `tool_choice` parameter                                          |
| `supports_prompt_caching`            | Model supports [prompt caching](/v3/llms/prompt-caching)                            |
| `supports_response_schema`           | Model supports structured output with a response schema                             |
| `supports_system_messages`           | Model accepts system messages                                                       |
| `supports_computer_use`              | Model supports computer-use tooling                                                 |
| `supports_parallel_function_calling` | Model can call multiple tools in one turn                                           |
| `supports_assistant_prefill`         | Model accepts a pre-filled assistant message                                        |
| `supports_native_streaming`          | Model supports native streaming responses                                           |
| `supports_embedding_image_input`     | Model accepts image input for embeddings                                            |

Some models expose extra provider-specific keys (e.g. `supports_pdf_input`, `supports_audio_input`), and a few return `"capabilities": null`. Treat a missing key or a `null` object as "not supported".

<Tip>
  You can also browse all features and providers visually in the [Eden AI model catalog](https://app.edenai.run/models).
</Tip>

<Tip icon="earth-europe">
  Need EU data residency? Hit `https://api.eu.edenai.run/v3/models` instead and the list is automatically filtered to EU-eligible models. See [EU Endpoint](/v3/data-governance/eu-endpoint).
</Tip>

<Note>
  Looking for OCR, image, or audio models? See [List Expert Models](/v3/expert-models/listing-models) for the full catalog of expert model features.
</Note>
