К содержанию
Lumean

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

Как перевести готовую озвучку Cartesia или ElevenLabs на другой язык. Справочник, цена до заказа, создание дубля и частые отказы.

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

Исходник (service_key заказа)task_type дубляЦена за символ исходника
cartesiacartesia_dub1,35 символа Cartesia, перевод включён
elevenlabselevenlabs_dub1,5 символа ElevenLabs, перевод включён

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

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

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

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

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

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

  • свой заказ озвучки cartesia или elevenlabs в статусе completed или result_delivered;
  • файлы заказа ещё хранятся (см. Файлы и хранение);
  • заказ не в абзацном режиме (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символы исходника: оплаченная длина последних версий его фрагментов
tokenstokens_from_quota + tokens_from_payg
lmc_cost_minorдобор PAYG с баланса, minor LMC
price_lumc_minorполная цена, даже если всё оплатит квота
allowed, reasonпройдёт ли создание сейчас; reason — тот же код, что вернуло бы создание
defaultsvoice_id и model_id, с которыми пойдёт дубль
templatesваши шаблоны того же сервиса, до 100: кандидаты для template_id

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

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

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 или опросом GET /orders/{order}, дорожка лежит в result.files[], субтитры — в result.service_files[], ссылку выдаёт POST /storage/url.

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. Стоимость учитывается и в токен-квоте ключа: при превышении заказ не создаётся, ответ — 429 token_quota_exceeded. Упавший дубль возвращает деньги целиком.

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

Отказы

reasonHTTPЧто значит
dub_source_unavailable422исходник не дублируется: не готовая озвучка cartesia/elevenlabs, файлы истекли, нет таймингов фраз, абзацный режим, идёт перегенерация или склейка
dub_source_too_long422исходник длиннее потолка; в теле ещё source_chars и max_source_chars
dub_same_language422язык дубля совпал с языком исходника (только у Cartesia)
service_not_found422дубляж этого вида вашему аккаунту недоступен
duplicate_order409тот же запрос (исходник и поля) меньше минуты назад. Нужен второй дубль на тот же язык — измените name

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

422service_not_foundservice_not_found — сервис не найден
Что произошло

Заказ не создан. Ответ: 422 с reason: "service_not_found" и без errors. Запрос прошёл проверку полей, но сервис для него не нашёлся.

Что сделать прямо сейчас

Отправляйте только те типы, которые создаются по ключу.

Открыть страницу кода

Эта страница для ИИ

Открыть .mdllm.md

Обновлено 06.11.2026 · версия API 1.0.0