---
title: "GET /ai/models — Current AI model prices"
url: https://lumean.app/es/developers/docs/api/get-ai-models
locale: es
description: "Current AI model prices"
generated: 2026-10-17
operationId: aiModel.index
method: GET
path: /ai/models
scopes: []
spec_version: 0.0.1
---

# GET /ai/models

**Current AI model prices**

Модели AI API (`https://api.lumean.app/v1`) и их **текущие** цены в LUMC.

**Цены меняются** — поставщики дорожают и дешевеют, модель может временно
пропасть. Проверяйте цену перед дорогой генерацией и сравнивайте со своим
порогом; заранее зафиксировать её нельзя.

- `price.<класс>.per_mtok_minor` — за 1M токенов (`input`, `cached_input`,
  `output`, `reasoning`, `cache_write`); `price.request.per_call_minor` — за вызов
  (картинки). Реальное значение — `minor / 10^asset.precision`, готовое — `*_formatted`.
- `*_display` — та же ставка в валюте `display_currency` (заголовок `X-Display-Currency`,
  иначе валюта аккаунта), справочно; `null` — курса нет. Списание — в LUMC.
- `price: null` или `billing_available: false` — модель сейчас платно не вызвать.
- `version` и заголовок `ETag` меняются при любом изменении цен. Повторный
  запрос с `If-None-Match: <ETag>` отвечает **304** без тела, пока цены прежние.

Списание идёт по цене на момент запроса; от неожиданного роста трат защищает
месячный лимит ключа (`ai_monthly_limit_minor`).

**Права ключа не нужны** — подходит любой активный ключ.

- Permiso requerido: ninguno: sirve cualquier clave activa

## Petición

```bash
curl -X GET 'https://api.lumean.app/api/public/ai/models' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Parámetros

Sin parámetros.

## Cuerpo de la petición

Sin cuerpo.

## Respuestas

### 200 — Success. The payload is in `data`.

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `success` | `boolean` | obligatorio | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | obligatorio | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `object` | obligatorio | The response payload. |
| `data.version` | `string` | obligatorio |  |
| `data.models` | `array<AiGatewayCatalogModel>` | obligatorio |  |
| `data.models[].key` | `string` | obligatorio | То самое имя, которое надо ставить в поле `model` запроса. Оно же единственное принимаемое: гейтвей резолвит его точным совпадением и уже сам подставляет имя модели на стороне поставщика. |
| `data.models[].name` | `string` | obligatorio |  |
| `data.models[].family` | `string` | obligatorio |  |
| `data.models[].kind` | `string` | obligatorio | `chat` \| `image`. Модель `image` зовут через `/v1/images` (или чатом — ответ придёт markdown-картинкой), цена — `price.request`. |
| `data.models[].description` | `string` — nullable | obligatorio |  |
| `data.models[].context_window` | `string` | obligatorio |  |
| `data.models[].max_output_tokens` | `string` | obligatorio |  |
| `data.models[].capabilities` | `string` | obligatorio |  |
| `data.models[].pricing_mode` | `string` | obligatorio |  |
| `data.models[].price` | `object` — nullable | obligatorio | `null` — отпускной нет: ни одна пара не продаёт модель не в минус. Нули здесь обещали бы бесплатную модель. |
| `data.models[].price.*` | `object` — claves arbitrarias | — |  |
| `data.models[].billing_available` | `boolean` | obligatorio | Вызываема ли модель платным ключом. `false` при живой модели — она видна ради своего ключа (BYOK), а платный вызов откажет. |
| `data.models[].byok` | `string` | obligatorio |  |
| `data.asset` | `Asset` | obligatorio |  |
| `data.asset.id` | `integer` | obligatorio | Internal identifier of the asset. |
| `data.asset.code` | `string` | obligatorio | Asset code: `LUMC` is the internal currency, `TOKEN` the generation tokens. |
| `data.asset.kind` | `AssetKind` — `money` · `unit` | obligatorio | Kind of asset: money or consumable units. It decides whether an amount counts as a payment or as quota consumption. |
| `data.asset.precision` | `integer` | obligatorio | Number of decimal places. **The load-bearing field:** every integer amount in this asset is divided by `10^precision` to obtain the real value. Do not assume the divisor is 100. |
| `data.asset.name` | `string` | obligatorio | Display name of the asset, in the account language. |
| `data.asset.deleted_at` | `string` — date-time — nullable | obligatorio | When the asset was retired, ISO 8601. `null` while it is in use. |
| `data.asset.created_at` | `string` — date-time — nullable | obligatorio | When the asset was created, ISO 8601. |
| `data.asset.updated_at` | `string` — date-time — nullable | obligatorio | When the asset last changed, ISO 8601. |
| `data.display_currency` | `object` | obligatorio |  |
| `data.display_currency.code` | `string` | obligatorio |  |
| `data.display_currency.symbol` | `string` — nullable | obligatorio |  |
| `data.display_currency.precision` | `integer` | obligatorio |  |
| `data.display_currency.available` | `boolean` | obligatorio |  |

**Ejemplo**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "version": "string",
    "models": [
      {
        "key": "string",
        "name": "string",
        "family": "string",
        "kind": "string",
        "description": "string",
        "context_window": "string",
        "max_output_tokens": "string",
        "capabilities": "string",
        "pricing_mode": "string",
        "price": {
          "key": {
            "per_mtok_minor": 1,
            "per_mtok_formatted": 1
          }
        },
        "billing_available": true,
        "byok": "string"
      }
    ],
    "asset": {
      "id": 1,
      "code": "string",
      "kind": "money",
      "precision": 1,
      "name": null,
      "is_active": true,
      "is_default": true,
      "default_balance": 1,
      "deleted_at": "2026-07-17T12:34:56+00:00",
      "created_at": "2026-07-17T12:34:56+00:00",
      "updated_at": "2026-07-17T12:34:56+00:00"
    },
    "display_currency": {
      "code": "string",
      "symbol": "string",
      "precision": 1,
      "available": true
    }
  }
}
```

### 304 — Цены не изменились с переданного ETag

**Ejemplo**

```json
"string"
```

### 401 — The key is missing, unknown, disabled or expired.

**Campos de la respuesta**

| Campo | Tipo | Oblig. | Descripción |
| --- | --- | --- | --- |
| `success` | `boolean` | obligatorio | Always `false` in error responses. |
| `message` | `string` | obligatorio | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | obligatorio | Always `null` when the request is rejected before processing. |

**Ejemplo**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

---

- Esta página en el navegador: https://lumean.app/es/developers/docs/api/get-ai-models
- Referencia completa legible por máquina: https://api.lumean.app/docs/llm.md
