---
title: "GET /orders/{order}/dub/quote — Котировка дубля"
url: https://lumean.app/developers/docs/api/get-orders-order-dub-quote
locale: ru
description: "Котировка дубля"
generated: 2026-11-08
operationId: dubbing.quote
method: GET
path: "/orders/{order}/dub/quote"
scopes: [orders.read]
spec_version: 1.0.0
---

# GET /orders/{order}/dub/quote

**Котировка дубля**

Цена дубля готового заказа ДО создания — ничего не списывает и не тратит пул токенов
ключа. Параметры те же, что у `POST /orders/{order}/dub`, и все необязательны: цена
зависит только от символов исходника.

- `source_chars` — символы исходника (оплаченная длина его последних версий чанков);
- `tokens` — токены к списанию, из них `tokens_from_quota` — из квоты подписки,
  `tokens_from_payg` — сверх неё (PAYG), `lmc_cost_minor` — сумма добора PAYG
  в minor LMC (единица — `currency_asset`);
- `price_lumc_minor` — полная цена дубля в minor LMC, даже если платит квота;
- `allowed` / `reason` — пройдёт ли заказ прямо сейчас (`reason` — тот же код, что
  вернуло бы создание: `insufficient_balance`, `token_quota_exceeded` — не хватает
  токен-квоты ключа, и т.п.);
- `defaults` — голос и модель, которыми пойдёт дубль без явного `voice_id`/`model_id`
  (снимок шаблона исходного заказа или выбранный `template_id`; `voice_id: null` —
  голос по умолчанию больше недоступен, передайте свой);
- `source_template` — шаблон исходного заказа, `templates` — ваши шаблоны того же
  сервиса, из которых можно взять голос (`template_id`).

Цифры совпадают с фактическим списанием, если между котировкой и заказом не изменились
квота и баланс. Лимит — 60 котировок в минуту на ключ.

**Требуемое право ключа:** `orders.read`.

- Право ключа: `orders.read`

## Запрос

```bash
curl -X GET 'https://api.lumean.app/api/public/orders/{order}/dub/quote' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `order` | path | `string` | обяз. | UUID заказа — 36 символов вида `9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c`, не число. Берётся из поля `id`: его возвращает `POST /orders` при создании и `GET /orders` в списке. Чужой заказ по вашему ключу не откроется — придёт `404`. |
| `target_language` | query | `string` — ≤ 16 симв. | — | Язык дубля из `languages` справочника (`GET /orders/dubbing/options`). Необязателен: цена от языка не зависит; передан — котировка заранее проверит, что он допустим и не совпадает с языком исходника. |
| `voice_id` | query | `string` — ≤ 64 симв. | — | Голос дубля. Необязателен: цена от голоса не зависит; без него в `defaults.voice_id` — голос, которым пойдёт дубль. |
| `model_id` | query | `string` — ≤ 64 симв. | — | Модель дубля из `models` справочника. Необязательна. |
| `template_id` | query | `string` — ≤ 64 симв. | — | Ваш шаблон того же сервиса, что исходник: `defaults` покажут его голос и модель. Чужой шаблон или шаблон другого сервиса — `422`. |
| `name` | query | `string` — ≤ 120 симв. | — | Название будущего заказа; на цену не влияет. |
| `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.source_order_id` | `string` | обяз. | Исходный заказ. |
| `data.source_language` | `string` | обяз. | Язык исходника (`auto` — не определён; совпадение с языком дубля тогда ловит исполнитель и возвращает деньги). |
| `data.target_language` | `string` — nullable | обяз. | Язык дубля из запроса или `null`. |
| `data.source_chars` | `integer` | обяз. | Символы исходника — оплаченная длина последних версий его чанков. От них считается цена. |
| `data.tokens` | `integer` | обяз. | Токены к списанию за дубль. |
| `data.tokens_from_quota` | `integer` | обяз. | Сколько токенов спишется из квоты подписки. |
| `data.tokens_from_payg` | `integer` | обяз. | Сколько токенов сверх квоты оплатит баланс (PAYG). |
| `data.lmc_cost_minor` | `integer` | обяз. | Сумма добора PAYG в minor LMC (`real = value / 10^currency_asset.precision`). 0 — всё покрывает квота. |
| `data.lmc_cost_formatted` | `number` | обяз. | `lmc_cost_minor` в целых LMC. |
| `data.price_lumc_minor` | `integer` | обяз. | Полная цена дубля в minor LMC — даже если платит квота. Для показа цены в валюте пользователя. |
| `data.price_lumc_formatted` | `number` | обяз. | `price_lumc_minor` в целых LMC. |
| `data.currency_asset` | `object` | обяз. | Единица сумм `*_minor` — LMC. По `precision` minor переводится в целые LMC. |
| `data.currency_asset.code` | `string` — `LUMC` | обяз. | Код актива сумм. |
| `data.currency_asset.precision` | `integer` | обяз. | Знаков после запятой у LMC: `real = value / 10^precision`. |
| `data.defaults` | `object` | обяз. | Чем пойдёт дубль без явных `voice_id`/`model_id`. |
| `data.defaults.template_id` | `string` | обяз. | Шаблон, чьи настройки взяты (`template_id` запроса); `null` — снимок шаблона исходного заказа. |
| `data.defaults.voice_id` | `null` — nullable | обяз. | Голос дубля по умолчанию. `null` — голос больше недоступен (снят из каталога, клон удалён): передайте `voice_id`. |
| `data.defaults.model_id` | `string` | обяз. | Модель дубля по умолчанию. |
| `data.source_template` | `object` — nullable | обяз. | Шаблон исходного заказа (`null` — заказ без шаблона). |
| `data.source_template.id` | `string` | обяз. | id шаблона. |
| `data.source_template.name` | `string` | обяз. | Название шаблона. |
| `data.templates` | `array<object>` | обяз. | Ваши шаблоны того же сервиса, что исходник, — кандидаты для `template_id`. Свежие первыми, до 100. |
| `data.templates[].id` | `string` | обяз. | id шаблона — значение для `template_id`. |
| `data.templates[].name` | `string` | обяз. | Название шаблона. |
| `data.templates[].voice_id` | `string` — nullable | обяз. | Голос шаблона. |
| `data.templates[].model_id` | `string` — nullable | обяз. | Модель шаблона. |
| `data.allowed` | `boolean` | обяз. | `true` — заказ с такими параметрами пройдёт прямо сейчас (хватит квоты и баланса). |
| `data.reason` | `string` — `token_quota_exceeded` | обяз. | Почему не пройдёт (`allowed: false`): тот же код, что вернуло бы создание, например `insufficient_balance` или `token_quota_exceeded` (не хватает токен-квоты ключа). |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "source_order_id": "string",
    "source_language": "string",
    "target_language": "string",
    "source_chars": 1,
    "tokens": 1,
    "tokens_from_quota": 1,
    "tokens_from_payg": 1,
    "lmc_cost_minor": 1,
    "lmc_cost_formatted": 1,
    "price_lumc_minor": 1,
    "price_lumc_formatted": 1,
    "currency_asset": {
      "code": "string",
      "precision": 1
    },
    "defaults": {
      "template_id": "string",
      "voice_id": null,
      "model_id": "string"
    },
    "source_template": {
      "id": "string",
      "name": "string"
    },
    "templates": [
      {
        "id": "string",
        "name": "string",
        "voice_id": "string",
        "model_id": "string"
      }
    ],
    "allowed": true,
    "reason": "string"
  }
}
```

### 401 — Невалидный или отсутствующий X-API-KEY

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `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
}
```

### 403 — У ключа нет права orders.read

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

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

**Пример**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 404 — Заказ не найден или принадлежит не владельцу ключа

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `message` | `string` | обяз. | Error overview. |

**Пример**

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

### 422 — Те же отказы исходника, что у создания дубля: reason=dub_source_unavailable, dub_source_too_long, dub_same_language, service_not_found; ошибки валидации полей

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `message` | `string` | обяз. | Сводка ошибок валидации словами, на языке ответа (`X-Locale`). |
| `errors` | `object` | обяз. | Разбор по полям: ключ — поле запроса, значение — список претензий к нему. |
| `errors.*` | `array<string>` — произвольные ключи | — |  |

**Пример**

```json
{
  "message": "string",
  "errors": {
    "key": [
      "string"
    ]
  }
}
```

### 429 — Больше 60 котировок в минуту на ключ

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `reason` | `string` | обяз. | Машиночитаемая причина отказа — по ней ветвите обработку, а не по тексту сообщения. |
| `error_code` | `string` | обяз. | Тот же машинный код, что в `reason`, — второе имя поля. Значения всегда совпадают; ветвитесь по любому из них. |
| `retry_after` | `integer` — nullable | — | Через сколько секунд имеет смысл повторить запрос (то же значение — в заголовке `Retry-After`). |

**Пример**

```json
{
  "success": false,
  "message": "Too many attempts. Please wait a moment and try again.",
  "reason": "rate_limit_exceeded",
  "error_code": "rate_limit_exceeded",
  "retry_after": 30
}
```

### 503 — Приём дубляжа этого вида временно приостановлен

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

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

**Пример**

```json
{
  "success": false,
  "message": "Service temporarily unavailable."
}
```

---

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