---
title: "GET /ai/models — Текущие цены моделей AI"
url: https://lumean.app/developers/docs/api/get-ai-models
locale: ru
description: "Текущие цены моделей AI"
generated: 2026-11-08
operationId: aiModel.index
method: GET
path: /ai/models
scopes: []
spec_version: 1.0.0
---

# GET /ai/models

**Текущие цены моделей AI**

Модели 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`).

**Требуемое право ключа:** нет — подходит любой действующий ключ.

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

## Запрос

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

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `X-Locale` | header | `string` | — | Язык локализованных текстов ответа (`message`, подписи, причины ошибок), код ISO-639-1. Необязателен; без него — язык аккаунта владельца ключа, затем `Accept-Language`, затем язык по умолчанию. Неизвестный или неподдерживаемый код пропускается так же, как отсутствующий. |
| `X-Timezone` | header | `string` | — | IANA-зона (`Europe/Moscow`), в которой ответ показывает моменты времени — ISO-8601 со смещением. Необязателен; без него даты приходят в UTC. Невалидная зона игнорируется. Применённую зону сервер возвращает в одноимённом заголовке ответа. |

## Тело запроса

Тела нет.

## Ответы

### 200 — Модели с текущими ценами

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь `true`, а ошибка приходит телом другой формы, где этого поля может не быть вовсе. |
| `message` | `string` | обяз. | Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются. |
| `data` | `object` | обяз. | Полезная нагрузка ответа. |
| `data.version` | `string` | обяз. | Версия прайса. Меняется при любом изменении цен — вместе с заголовком `ETag`. |
| `data.models` | `array<AiGatewayCatalogModel>` | обяз. | Модели AI API с текущими ценами. |
| `data.models[].key` | `string` | обяз. | Имя модели для поля `model` запроса к AI API — ровно в этом написании: гейтвей ищет модель точным совпадением. |
| `data.models[].name` | `string` | обяз. | Название модели для показа человеку. |
| `data.models[].family` | `string` | обяз. | Семейство модели (например, `claude`, `gpt`) — для группировки в списке. |
| `data.models[].kind` | `string` | обяз. | `chat` или `image`. Модель `image` вызывают через `/v1/images` (или чатом — ответ придёт markdown-картинкой), её цена — `price.request`. |
| `data.models[].description` | `string` — nullable | обяз. | Короткое описание модели; `null`, если его нет. |
| `data.models[].context_window` | `string` | обяз. | Окно контекста модели в токенах. |
| `data.models[].max_output_tokens` | `string` | обяз. | Сколько токенов модель может выдать в одном ответе. |
| `data.models[].capabilities` | `string` | обяз. | Возможности модели (картинки на входе, инструменты, рассуждение и т.п.). У моделей картинок `image_options` — допустимые значения полей `size` / `aspect_ratio` запроса `/v1/images/*`, первый — по умолчанию; нет ключа — выбора нет. |
| `data.models[].pricing_mode` | `string` | обяз. | Как складывается ставка: `markup` — следует за ценой поставщика и может меняться, `fixed` — задана Lumean и от поставщика не зависит. |
| `data.models[].price` | `object` — nullable | обяз. | Текущие ставки по классам токенов. `null` — платно модель сейчас не продаётся. Ноль у отдельного класса — этот класс не тарифицируется (например, `request` у chat-моделей). |
| `data.models[].price.*` | `object` — произвольные ключи | — |  |
| `data.models[].billing_available` | `boolean` | обяз. | Можно ли вызвать модель платным ключом. `false` у живой модели — она видна ради вызова со своим ключом поставщика (BYOK), а платный вызов получит отказ. |
| `data.models[].byok` | `string` | обяз. | Можно ли вызвать модель со своим ключом поставщика (BYOK): `available` и причина отказа `reason` — `not_entitled` (тариф не даёт BYOK), `no_credential` (нет вашего ключа подходящего поставщика) или `null`. |
| `data.asset` | `Asset` | обяз. | Актив, в котором заданы ставки (LUMC), с `precision`: реальная ставка — `minor / 10^precision`. |
| `data.asset.id` | `integer` | обяз. | Внутренний идентификатор актива. |
| `data.asset.code` | `string` | обяз. | Код актива: `LUMC` — внутренняя валюта, `TOKEN` — токены генерации. |
| `data.asset.kind` | `AssetKind` — `money` · `unit` | обяз. | Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты. |
| `data.asset.precision` | `integer` | обяз. | Число десятичных знаков. **Ключевое поле:** любая целая сумма этого актива делится на `10^precision`, чтобы получить реальное значение. Не считайте, что делитель равен 100. |
| `data.asset.name` | `string` | обяз. | Название актива для показа, на языке аккаунта. |
| `data.asset.deleted_at` | `string` — date-time — nullable | обяз. | Когда актив выведен из обращения, ISO 8601. `null` у действующего. |
| `data.asset.created_at` | `string` — date-time — nullable | обяз. | Когда актив заведён, ISO 8601. |
| `data.asset.updated_at` | `string` — date-time — nullable | обяз. | Когда актив последний раз менялся, ISO 8601. |
| `data.display_currency` | `object` | обяз. | Валюта, в которой посчитаны `*_display`: из заголовка `X-Display-Currency`, иначе валюта аккаунта. Справочно — списание всегда в LUMC. |
| `data.display_currency.code` | `string` | обяз. | Код валюты отображения (например, `RUB`, `USD`). |
| `data.display_currency.symbol` | `string` — nullable | обяз. | Символ валюты для показа; `null`, если его нет. |
| `data.display_currency.precision` | `integer` | обяз. | Сколько знаков после запятой показывать у `*_display`. |
| `data.display_currency.available` | `boolean` | обяз. | `false` — курса до этой валюты сейчас нет, и все `*_display` равны `null`. |

**Пример**

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

**Пример**

```json
"string"
```

### 401 — API-ключ отсутствует, неизвестен, неактивен или истёк

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `data` | `null` — nullable | обяз. | Всегда `null`, когда запрос отклонён до обработки. |

**Пример**

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

---

- Эта же страница в браузере: https://lumean.app/developers/docs/api/get-ai-models
- Машинный справочник целиком: https://api.lumean.app/docs/llm.md
