---
title: "GET /ai/models/{key} — Current price of one AI model"
url: https://lumean.app/en/developers/docs/api/get-ai-models-key
locale: en
description: "Current price of one AI model"
generated: 2026-10-17
operationId: aiModel.show
method: GET
path: "/ai/models/{key}"
scopes: []
spec_version: 0.0.1
---

# GET /ai/models/{key}

**Current price of one AI model**

Текущая цена одной модели по её `key` (то же имя, что в поле `model` запроса).
Форма ответа та же, что у списка, — в `models` одна запись. `ETag` и
`If-None-Match` работают так же. Модели нет или её сейчас нельзя вызвать —
**404**: не отправляйте генерацию, пока она не вернётся.

**Права ключа не нужны.**

- Required scope: none — any active key works

## Request

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

## Parameters

| Field | In | Type | Req. | Description |
| --- | --- | --- | --- | --- |
| `key` | path | `string` | required |  |

## Request body

No body.

## Responses

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

**Response fields**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `success` | `boolean` | required | 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` | required | 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` | required | The response payload. |
| `data.version` | `string` | required |  |
| `data.models` | `array<AiGatewayCatalogModel>` | required |  |
| `data.models[].key` | `string` | required | То самое имя, которое надо ставить в поле `model` запроса. Оно же единственное принимаемое: гейтвей резолвит его точным совпадением и уже сам подставляет имя модели на стороне поставщика. |
| `data.models[].name` | `string` | required |  |
| `data.models[].family` | `string` | required |  |
| `data.models[].kind` | `string` | required | `chat` \| `image`. Модель `image` зовут через `/v1/images` (или чатом — ответ придёт markdown-картинкой), цена — `price.request`. |
| `data.models[].description` | `string` — nullable | required |  |
| `data.models[].context_window` | `string` | required |  |
| `data.models[].max_output_tokens` | `string` | required |  |
| `data.models[].capabilities` | `string` | required |  |
| `data.models[].pricing_mode` | `string` | required |  |
| `data.models[].price` | `object` — nullable | required | `null` — отпускной нет: ни одна пара не продаёт модель не в минус. Нули здесь обещали бы бесплатную модель. |
| `data.models[].price.*` | `object` — arbitrary keys | — |  |
| `data.models[].billing_available` | `boolean` | required | Вызываема ли модель платным ключом. `false` при живой модели — она видна ради своего ключа (BYOK), а платный вызов откажет. |
| `data.models[].byok` | `string` | required |  |
| `data.asset` | `Asset` | required |  |
| `data.asset.id` | `integer` | required | Internal identifier of the asset. |
| `data.asset.code` | `string` | required | Asset code: `LUMC` is the internal currency, `TOKEN` the generation tokens. |
| `data.asset.kind` | `AssetKind` — `money` · `unit` | required | Kind of asset: money or consumable units. It decides whether an amount counts as a payment or as quota consumption. |
| `data.asset.precision` | `integer` | required | 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` | required | Display name of the asset, in the account language. |
| `data.asset.deleted_at` | `string` — date-time — nullable | required | When the asset was retired, ISO 8601. `null` while it is in use. |
| `data.asset.created_at` | `string` — date-time — nullable | required | When the asset was created, ISO 8601. |
| `data.asset.updated_at` | `string` — date-time — nullable | required | When the asset last changed, ISO 8601. |

**Example**

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

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

**Example**

```json
"string"
```

### 404 — Not found, or not reachable with this key.

**Response fields**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `success` | `boolean` | required | Always `false` in error responses. |
| `message` | `string` | required | Error text in the key's language (set through the `X-Locale` header). |
| `reason` | `string` | — | Machine-readable reason — present on business refusals (for example, `invalid_order_status`); other errors omit it. Branch on it, not on the message text. |
| `error_code` | `string` | — | The same machine-readable code as in `reason` — a second name for the field. Arrives together with `reason`; the values always match. |

**Example**

```json
{
  "success": false,
  "message": "Resource not found."
}
```

---

- This page in the browser: https://lumean.app/en/developers/docs/api/get-ai-models-key
- Full machine-readable reference: https://api.lumean.app/docs/llm.md
