---
title: "List available LLMs"
method: GET
path: "/api/v1/ai/llms"
tags: ["AI"]
---

# List available LLMs

`GET /api/v1/ai/llms`

## Request

- Base URL: `https://omniapp.co` (the document declares no server; this is the origin it was published from)
- URL: `https://omniapp.co/api/v1/ai/llms`
- Auth: HTTP bearer

List the LLMs the caller may pass as `requestedLlm` on POST /api/v1/ai/jobs and POST /api/v1/ai/generate-query, with each one's label, description, supported thinking levels and whether it is the organization default. Follows the same rules as the chat picker: the organization's approved LLMs from AI Hub → LLM settings, test-only LLMs only for organization admins, only the default for an embedded user, and only the downgrade LLM while the organization is over its AI credit downgrade threshold. Organization keys may pass `userId` to list for that user; the user's own role and AI access decide the answer.

## Query parameters

- `userId` string, uuid: Target user ID (for org-scoped API keys)

## Response `200`

Available LLMs retrieved successfully.

- AiLlmsListResponse
  - `llms` AiPickableLlm[], required: The LLMs the caller may pass as `requestedLlm` on POST /api/v1/ai/jobs and POST /api/v1/ai/generate-query, in the order the chat picker lists them. An organization over its AI credit downgrade threshold lists only its downgrade LLM, which every request runs on: send no `requestedLlm` until it is back under.
    - `description` string, nullable, required: The admin's line about when to use this LLM, else Omni's line for an Omni-hosted LLM. `null` for a bring-your-own-key LLM the admin has not described.
    - `isDefault` boolean, required: Whether this is the LLM a job runs on when it names no `requestedLlm`.
    - `label` string, required: Display name, as the chat picker shows it.
    - `model` string, required: Pass as `requestedLlm.model`.
    - `provider` 'bedrock' | 'anthropic' | 'openai' | 'grok' | 'snowflake_cortex' | 'openai_compatible' | 'fireworks' | 'fireworks_managed' | 'databricks_genie' | 'databricks_managed' | 'baseten_managed' | 'vertex_ai', required: Pass as `requestedLlm.provider`.
    - `thinkingLevels` string[], required: The thinking levels this LLM honors, any of which may be passed as `requestedLlm.thinking`.

## Other responses

- `401`: Missing or invalid API key.
- `403`: AI query generation is not enabled for the organization, the user cannot use AI, or a personal access token passed another user's `userId`.
- `404`: The `userId` does not name a user in this organization.

## Changes

- **2026-10-21** `576d1bf4c442`: 1 warning
  - added the new `baseten_managed` enum value to the `llms/items/provider` response property for the response status `200`
- **2026-10-21** `28267e966a8c`: 1 warning
  - added the new `databricks_managed` enum value to the `llms/items/provider` response property for the response status `200`
- **2026-10-19** `5510833fc6b9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/omniapp/apis/omni-api/changes/api/v1/ai/llms/get.md)

---

[API](https://skmtc.dev/omniapp/apis/omni-api.md) - [All operations](https://skmtc.dev/omniapp/apis/omni-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omniapp/apis/omni-api/revisions/76b40ebc2292?raw)
