---
title: "Дубляж готового заказа"
url: https://lumean.app/developers/docs/guide/dubbing
locale: ru
description: "Как перевести готовую озвучку Cartesia или ElevenLabs на другой язык. Справочник, цена до заказа, создание дубля и частые отказы."
updated: 2026-11-06
sources: [get-orders-dubbing-options, get-orders-order-dub-quote, post-orders-order-dub, get-orders-order, post-storage-url]
errors: ["402", "404", "409", "422", "429", service-not-found, token-quota-exceeded]
spec_version: 1.0.0
---

# Дубляж готового заказа

Дубляж переводит готовую озвучку на другой язык и озвучивает перевод. Каждая фраза дубля
начинается там же, где фраза исходника, а длина дорожки совпадает. Текст передавать не нужно:
перевод делает сервис. Результат — новый заказ, исходный заказ не меняется.

| Исходник (`service_key` заказа) | `task_type` дубля | Цена за символ исходника |
| --- | --- | --- |
| `cartesia` | `cartesia_dub` | 1,35 символа Cartesia, перевод включён |
| `elevenlabs` | `elevenlabs_dub` | 1,5 символа ElevenLabs, перевод включён |

Языки, модели, потолок длины, множитель цены и техрежим берите только из
`GET /orders/dubbing/options`. Таблица выше — ориентир, не зашивайте её в код.

## Справочник: доступен ли дубляж

`GET /orders/dubbing/options` отвечает, какие виды дубляжа открыты владельцу ключа. Вид
выбирается по `service_key` исходного заказа: `data.kinds[order.service_key]`.

| Поле вида | Значение |
| --- | --- |
| `available` | открыт ли вид этому аккаунту |
| `dub_service` | `task_type` будущего заказа: `cartesia_dub` или `elevenlabs_dub` |
| `languages`, `models`, `default_model` | допустимые языки дубля и модели |
| `max_source_chars` | потолок длины исходника в символах |
| `price_factor` | множитель цены к символам исходника |
| `maintenance` | `true` — приём временно приостановлен, создание ответит `503` |

Закрытый вид приходит с `available: false`, `dub_service: null`, пустыми списками и нулями. Это
ответ «функции нет», а не ошибка. Поля верхнего уровня `data` (кроме `kinds`) повторяют вид
`cartesia` для старых клиентов.

### GET /orders/dubbing/options

Справочник дубляжа

Справочник: https://lumean.app/developers/docs/api/get-orders-dubbing-options

## Какой заказ можно дублировать

- свой заказ озвучки `cartesia` или `elevenlabs` в статусе `completed` или `result_delivered`;
- файлы заказа ещё хранятся (см. [Файлы и хранение](/developers/docs/guide/files));
- заказ не в абзацном режиме (`generation_mode: "paragraph"`): нужна одна дорожка;
- над заказом не идёт перегенерация или склейка;
- исходник не длиннее `max_source_chars`.

Иначе создание и котировка отвечают `422` с `reason` из таблицы отказов ниже.

Язык дубля должен отличаться от языка исходника. У Cartesia язык исходника известен из шаблона,
и совпадение сразу отбивается `422` `dub_same_language`. У ElevenLabs язык исходника неизвестен
(`source_language: "auto"`): такой дубль создастся, упадёт у исполнителя и вернёт деньги целиком.
Следите за языком сами.

## Цена до заказа

`GET /orders/{order}/dub/quote` считает цену дубля и ничего не списывает, токен-квоту ключа тоже
не тратит. Лимит — 60 запросов в минуту на ключ. Query — те же поля, что у тела создания, и все
необязательны: цена зависит только от символов исходника.

| Поле `data` | Значение |
| --- | --- |
| `source_chars` | символы исходника: оплаченная длина последних версий его фрагментов |
| `tokens` | `tokens_from_quota` + `tokens_from_payg` |
| `lmc_cost_minor` | добор PAYG с баланса, minor LMC |
| `price_lumc_minor` | полная цена, даже если всё оплатит квота |
| `allowed`, `reason` | пройдёт ли создание сейчас; `reason` — тот же код, что вернуло бы создание |
| `defaults` | `voice_id` и `model_id`, с которыми пойдёт дубль |
| `templates` | ваши шаблоны того же сервиса, до 100: кандидаты для `template_id` |

Суммы — в minor units: `real = value / 10^currency_asset.precision`. `defaults.voice_id: null`
значит, что голос по умолчанию больше недоступен (снят из каталога, клон удалён): передайте
`voice_id` при создании.

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

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

Справочник: https://lumean.app/developers/docs/api/get-orders-order-dub-quote

## Создание дубля

`POST /orders/{order}/dub` создаёт заказ дубля. Тело — JSON:

| Поле | Правило | Смысл |
| --- | --- | --- |
| `target_language` | обязательное, из `languages` вида | язык дубля, не равный языку исходника |
| `voice_id` | необязательное, строка ≤ 64 | голос дубля. Cartesia — UUID голоса каталога или `voice_id` своего клона; ElevenLabs — 20-символьный id голоса |
| `model_id` | необязательное, из `models` вида | модель. Без неё — модель шаблона, иначе `default_model` |
| `template_id` | необязательное | ваш шаблон того же сервиса, что исходник: берутся его голос, модель и настройки |
| `name` | необязательное, строка ≤ 120 | название заказа. Без него — «Название исходника → EN» |

Голос и модель по умолчанию берутся из снимка шаблона исходного заказа — того, каким шаблон был
при создании исходника. Явные `voice_id` и `model_id` перекрывают шаблон.

Ответ — `201`, в `data` новый заказ с `task_type` `cartesia_dub` или `elevenlabs_dub` и одним
фрагментом. Дальше это обычный заказ: статус приходит по
[WebSocket](/developers/docs/guide/realtime) или опросом `GET /orders/{order}`, дорожка лежит в
`result.files[]`, субтитры — в `result.service_files[]`, ссылку выдаёт `POST /storage/url`.

### POST /orders/{order}/dub

Дубляж заказа

Справочник: https://lumean.app/developers/docs/api/post-orders-order-dub

```bash
BASE=https://api.lumean.app/api/public
SRC=<ORDER_UUID>   # готовый заказ озвучки

curl -s "$BASE/orders/dubbing/options" -H "X-API-KEY: $KEY"
curl -s "$BASE/orders/$SRC/dub/quote?target_language=en" -H "X-API-KEY: $KEY"
curl -s -X POST "$BASE/orders/$SRC/dub" -H "X-API-KEY: $KEY" -H "Content-Type: application/json" \
  -d '{ "target_language": "en" }'
# → 201, data.id = <DUB_UUID>, data.task_type = "cartesia_dub"
```

Ключу нужны `orders.read` (справочник и котировка), `orders.write` (создание) и
`orders.download` (ссылка на файл).

## Оплата

Оплата — как у обычной озвучки. Сначала тратится квота подписки по праву исходного сервиса:
подписка с Cartesia оплачивает и дубль Cartesia. Остаток списывается с баланса как PAYG.
Стоимость учитывается и в [токен-квоте ключа](/developers/docs/guide/limits): при превышении
заказ не создаётся, ответ — `429` `token_quota_exceeded`. Упавший дубль возвращает деньги
целиком.

Отменить дубль можно до начала работы (`POST /orders/{order}/cancel`). `retry` для него не
нужен: при сбое деньги возвращаются, создайте дубль заново.

## Отказы

| `reason` | HTTP | Что значит |
| --- | --- | --- |
| `dub_source_unavailable` | 422 | исходник не дублируется: не готовая озвучка `cartesia`/`elevenlabs`, файлы истекли, нет таймингов фраз, абзацный режим, идёт перегенерация или склейка |
| `dub_source_too_long` | 422 | исходник длиннее потолка; в теле ещё `source_chars` и `max_source_chars` |
| `dub_same_language` | 422 | язык дубля совпал с языком исходника (только у Cartesia) |
| `service_not_found` | 422 | дубляж этого вида вашему аккаунту недоступен |
| `duplicate_order` | 409 | тот же запрос (исходник и поля) меньше минуты назад. Нужен второй дубль на тот же язык — измените `name` |

Ошибка поля (`target_language` не из списка, чужой или удалённый `template_id`) — `422` с полем в
`errors`, деньги не списываются. Чужой или несуществующий заказ — `404`, нехватка денег на
PAYG-добор — `402`, техрежим вида — `503`.

### 422 · `service_not_found` — service_not_found — сервис не найден

| Что произошло | Что делать |
| --- | --- |
| Заказ не создан. Ответ: 422 с `reason: "service_not_found"` и без `errors`. Запрос прошёл проверку полей, но сервис для него не нашёлся. | Отправляйте только те типы, которые создаются по ключу. |

`Retry-After`: нет. Разбор: https://lumean.app/developers/docs/errors/service-not-found

---

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