Объекты API
Схемы, из которых собраны ответы. Полная таблица каждого объекта существует ровно один раз: страницы операций ссылаются сюда, а не разворачивают её у себя заново. У объекта и у каждого его поля свой якорь — на них можно ссылаться в переписке.
AiGatewayCatalogModel
objectТо самое имя, которое надо ставить в поле model запроса. Оно же
единственное принимаемое: гейтвей резолвит его точным совпадением
и уже сам подставляет имя модели на стороне поставщика.
chat | image. Модель image зовут через /v1/images (или
чатом — ответ придёт markdown-картинкой), цена — price.request.
priceобязательноеnull — отпускной нет: ни одна пара не продаёт модель не в
минус. Нули здесь обещали бы бесплатную модель.
может быть nullobject
null — отпускной нет: ни одна пара не продаёт модель не в
минус. Нули здесь обещали бы бесплатную модель.
Вызываема ли модель платным ключом. false при живой модели —
она видна ради своего ключа (BYOK), а платный вызов откажет.
Показать пример
{
"key": "string",
"name": "string",
"family": "string",
"kind": "string",
"description": "string",
"context_window": "string",
"max_output_tokens": "string",
"capabilities": "string",
"pricing_mode": "string",
"price": {},
"billing_available": true,
"byok": "string"
}Используется в операциях: 2
Asset
objectВнутренний идентификатор актива.
Код актива: LUMC — внутренняя валюта, TOKEN — токены генерации.
Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты.
Число десятичных знаков. Ключевое поле: любая целая сумма этого актива делится на 10^precision, чтобы получить реальное значение. Не считайте, что делитель равен 100.
Название актива для показа, на языке аккаунта.
Когда актив выведен из обращения, ISO 8601. null у действующего.
Когда актив заведён, ISO 8601.
Когда актив последний раз менялся, ISO 8601.
Показать пример
{
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
}BrowseTemplates
objectitemsобязательноеСодержимое текущей папки — вперемешку папки и шаблоны, в порядке сортировки. Различать их можно по наличию service_key: он есть только у шаблона.
array<TemplateItem>TemplateItem
Содержимое текущей папки — вперемешку папки и шаблоны, в порядке сортировки. Различать их можно по наличию service_key: он есть только у шаблона.
Номер текущей страницы, с 1.
Номер последней страницы. Равен current_page — значит, дальше ничего нет.
Сколько записей на странице.
Сколько записей в папке всего, по всем страницам.
current_folderобязательноеПапка, содержимое которой показано. null — вы в корне.
может быть nullobject
Папка, содержимое которой показано. null — вы в корне.
UUID текущей папки — его подставляют в folder_id, чтобы открыть её снова.
Название текущей папки.
Показать пример
{
"items": [
{
"type": "template",
"id": "string",
"name": "string",
"slug": "string",
"service_key": "string",
"service": {
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": null,
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": null,
"code": null,
"kind": null,
"precision": null,
"name": null,
"deleted_at": null,
"created_at": null,
"updated_at": null
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": null,
"code": null,
"name": null,
"metadata": null,
"is_active": null,
"created_at": null,
"updated_at": null,
"is_unlimited": null
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
},
"config": {},
"is_public": "string",
"folder_id": "string",
"created_at": "string",
"updated_at": "string"
}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1,
"current_folder": {
"id": "string",
"name": "string"
},
"breadcrumbs": [
{
"id": "string",
"name": "string"
}
]
}Используется в операциях: 1
CartesiaVoiceClone
objectUUID клона. Его подставляют в пути /voices/cartesia/clones/{voiceClone}/…; в шаблон он НЕ идёт — туда идёт voice_id.
Провайдер клона — всегда cartesia.
Название клона, заданное при создании.
Язык образца (ISO 639-1) либо null, если не передавался.
Ваше описание клона либо null.
Статус: pending → cloning → ready либо failed; archived — снят владельцем; banned — заблокирован модератором. Озвучивать можно только ready.
Идентификатор голоса Cartesia — значение для tts_settings.voice_id шаблона с service_key: cartesia. Есть только у ready, иначе null.
Номер попытки клонирования: 1 при создании, +1 за каждый повтор.
errorобязательноеПричина отказа последней попытки; null, пока отказа не было.
может быть nullobject
Причина отказа последней попытки; null, пока отказа не было.
Машинный код отказа: processing_error, max_retries, network, timeout, dispatch_failed. Повторить попытку — POST /voices/cartesia/clones/{voiceClone}/retry; если processing_error повторяется, смените образец.
Пояснение к отказу для человека либо null. Ветвитесь по reason, а не по тексту.
Когда клон создан.
Когда клон стал ready; null до этого.
Когда последняя попытка завершилась отказом; null, если отказа нет.
Когда клон заблокирован модератором (status = banned); null, если блокировки нет.
Причина блокировки от модератора либо null. Заблокированный клон нельзя ни использовать, ни архивировать.
Показать пример
{
"id": "string",
"provider": "cartesia",
"display_name": "string",
"language": "string",
"description": "string",
"status": "string",
"voice_id": "string",
"attempts": 1,
"error": {
"reason": "string",
"message": "string"
},
"created_at": "string",
"completed_at": "string",
"failed_at": "string",
"banned_at": "string",
"ban_reason": "string"
}CartesiaVoiceCloneStatus
stringСтатус клона голоса Cartesia: pending — в очереди, cloning — клонируется,
ready — готов, есть voice_id; failed — отказ (причина в error), можно
повторить; archived — снят владельцем; banned — заблокирован модератором
(причина в ban_reason).
- pending
- cloning
- ready
- failed
- archived
- banned
Показать пример
"pending"Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
CartesiaVoice
objectВнутренний id записи каталога. Для озвучки не нужен — в шаблон идёт voice_id.
Идентификатор голоса Cartesia — значение для tts_settings.voice_id шаблона с service_key: cartesia.
Название голоса.
Описание голоса от Cartesia либо null.
Язык голоса (ISO 639-1) либо null.
Пол голоса: masculine, feminine, gender_neutral либо null.
Ссылка на демо-запись голоса либо null.
Показать пример
{
"id": "string",
"voice_id": "string",
"name": "string",
"description": "string",
"language": "string",
"gender": "string",
"preview_url": "string"
}Используется в операциях: 1
CreateCartesiaVoiceCloneRequest
objectНовый клон голоса Cartesia: образец записи в base64 и согласие на использование
голоса. Принимается как application/json.
Название клона — видно только вам, до 128 символов.
Образец голоса в base64; data URI (data:audio/wav;base64,…) тоже подходит.
До 20 МБ после декодирования; формат — обычная аудиозапись (WAV, MP3 и т. п.).
Нужна чистая речь одного человека без музыки и шума.
Язык образца, код ISO 639-1 из списка. Не передан — язык по умолчанию воркера.
Ваше описание клона, до 500 символов.
Согласие на обработку биометрических данных — образца голоса (https://lumean.app/consent/biometric). Пишется в журнал согласий вместе с id клона. true — согласие дано.
Чей голос в образце: self — ваш, third_party — чужой, и у вас есть согласие его владельца.
Прежняя галочка «это ваш голос или у вас есть право его использовать». Нужна, только если не передан consent_biometric: true; когда согласия станут обязательными, вместо неё — consent_biometric и voice_owner.
Показать пример
{
"display_name": "Мой голос",
"reference_audio": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YQAAAAA=",
"language": "ru",
"description": "string",
"consent_biometric": true,
"voice_owner": "self",
"consent_confirmed": true
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
CreateFishAudioVoiceCloneRequest
objectНовый клон голоса Fish Audio: образец записи в base64 и согласие на использование
голоса. Принимается как application/json.
Название клона — видно только вам, до 128 символов.
Образец голоса в base64; data URI (data:audio/wav;base64,…) тоже подходит.
До 20 МБ после декодирования; формат — обычная аудиозапись (WAV, MP3 и т. п.).
Нужна чистая речь одного человека без музыки и шума.
Справочная метка клона, двухбуквенный код ISO 639-1 (ru, en, …). У голоса Fish Audio своего языка нет, провайдеру метка не передаётся.
Ваше описание клона, до 500 символов.
Согласие на обработку биометрических данных — образца голоса (https://lumean.app/consent/biometric). Пишется в журнал согласий вместе с id клона. true — согласие дано.
Чей голос в образце: self — ваш, third_party — чужой, и у вас есть согласие его владельца.
Прежняя галочка «это ваш голос или у вас есть право его использовать». Нужна, только если не передан consent_biometric: true; когда согласия станут обязательными, вместо неё — consent_biometric и voice_owner.
Показать пример
{
"display_name": "Мой голос",
"reference_audio": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YQAAAAA=",
"language": "ru",
"description": "string",
"consent_biometric": true,
"voice_owner": "self",
"consent_confirmed": true
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
Entitlement
objectВнутренний идентификатор возможности.
Код возможности — по нему сервис проверяет, открыт ли он вам.
Название возможности для показа, на языке аккаунта.
Дополнительные атрибуты возможности. Набор ключей произвольный.
Действует ли возможность.
Когда возможность заведена, ISO 8601.
Когда возможность последний раз менялась, ISO 8601.
Безлимитна ли эта возможность в рамках тарифа. Поле присутствует только когда право отдаётся в контексте плана.
Показать пример
{
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
FishAudioVoiceClone
objectUUID клона. Его подставляют в пути /voices/fishaudio/clones/{voiceClone}/…; в шаблон он НЕ идёт — туда идёт voice_id.
Провайдер клона — всегда fishaudio.
Название клона, заданное при создании.
Справочная метка языка (ISO 639-1) либо null, если не передавалась. На клонирование не влияет.
Ваше описание клона либо null.
Статус: pending → cloning → ready либо failed; archived — снят владельцем; banned — заблокирован модератором. Озвучивать можно только ready.
Идентификатор голоса Fish Audio (строка из 32 hex-символов, не UUID) — значение для tts_settings.voice_id шаблона с service_key: fishaudio. Есть только у ready, иначе null.
Номер попытки клонирования: 1 при создании, +1 за каждый повтор.
errorобязательноеПричина отказа последней попытки; null, пока отказа не было.
может быть nullobject
Причина отказа последней попытки; null, пока отказа не было.
Машинный код отказа: processing_error, max_retries, network, timeout, dispatch_failed, unbanned (клон разбанен, но голоса у него не было). Повторить попытку — POST /voices/fishaudio/clones/{voiceClone}/retry; если processing_error повторяется, смените образец.
Пояснение к отказу для человека либо null. Ветвитесь по reason, а не по тексту.
Когда клон создан.
Когда клон стал ready; null до этого.
Когда последняя попытка завершилась отказом; null, если отказа нет.
Когда клон заблокирован модератором (status = banned); null, если блокировки нет.
Причина блокировки от модератора либо null. Заблокированный клон нельзя ни использовать, ни архивировать.
Показать пример
{
"id": "string",
"provider": "fishaudio",
"display_name": "string",
"language": "string",
"description": "string",
"status": "string",
"voice_id": "string",
"attempts": 1,
"error": {
"reason": "string",
"message": "string"
},
"created_at": "string",
"completed_at": "string",
"failed_at": "string",
"banned_at": "string",
"ban_reason": "string"
}FishAudioVoiceCloneStatus
stringСтатус клона голоса Fish Audio: pending — в очереди, cloning — клонируется,
ready — готов, есть voice_id; failed — отказ (причина в error), можно
повторить; archived — снят владельцем; banned — заблокирован модератором
(причина в ban_reason).
- pending
- cloning
- ready
- failed
- archived
- banned
Показать пример
"pending"Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
FishAudioVoice
objectВнутренний id записи каталога. Для озвучки не нужен — в шаблон идёт voice_id.
Идентификатор голоса Fish Audio (строка из 32 hex-символов, не UUID) — значение для tts_settings.voice_id шаблона с service_key: fishaudio.
Название голоса.
Описание голоса от Fish Audio либо null.
Язык выгрузки каталога (ru, en, es) либо null.
Все языки голоса по данным Fish Audio.
Пол голоса: male, female либо null.
Сколько раз голос использовали у Fish Audio — мера популярности; каталог отсортирован по ней.
Число лайков голоса у Fish Audio.
Временная ссылка (60 минут) на MP3-сэмпл голоса либо null, пока превью не скачано.
Показать пример
{
"id": "string",
"voice_id": "string",
"name": "string",
"description": "string",
"language": "string",
"languages": "string",
"gender": "string",
"tags": "string",
"author_name": "string",
"task_count": 1,
"like_count": 1,
"preview_url": "string"
}Используется в операциях: 1
GetFileUrlRequest
objectЗапрос временной ссылки на файл результата. Ссылку качайте обычным GET,
без заголовка X-API-KEY.
Путь файла целиком, как он пришёл в result.files[] или result.service_files[]
заказа. Собирать путь вручную не нужно и не получится — он содержит служебные
сегменты.
При true ссылка помечается как attachment: файл скачается под человекочитаемым именем заказа, а не откроется во вкладке браузера.
С какого числа нумеруются чанки в имени файла: 1 → первый чанк «001», 0 → «000». По умолчанию 1.
Ширина номера чанка с ведущими нулями, 1..4: 3 → «007». По умолчанию 3. Держите одинаковым с запросом ZIP-архива, иначе один и тот же чанк называется по-разному поштучно и внутри архива.
Показать пример
{
"path": "storage/42/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/result/output.mp3",
"download": false,
"number_base": 1,
"number_padding": 3
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
GiftCodeBatch
objectИдентификатор партии.
Всегда reseller — партия выпущена с баланса реселлера.
Сколько кодов в партии.
Сумма номиналов кодов, миноры LMC.
Сумма номиналов, LMC.
Сколько списано с баланса реселлера (номиналы минус скидка), миноры LMC.
Списано с баланса реселлера, LMC.
Личная скидка реселлера на момент выпуска, базисные пункты (1000 = 10%).
codesнеобязательноеКоды партии с ПОЛНЫМ значением code — сохраните их: это деньги на предъявителя.
array<GiftCode>GiftCode
Коды партии с ПОЛНЫМ значением code — сохраните их: это деньги на предъявителя.
UUID кода. Его подставляют в пути GET /reseller/codes/{uuid} и POST /reseller/codes/{uuid}/cancel.
Код с маской, LUM-****-****-XXXX: его безопасно показывать в интерфейсе и писать в логи.
ПОЛНОЕ значение кода — то, что вводит получатель при активации. Публичный API реселлера отдаёт его в списке, при показе и при выпуске. Обращайтесь как с секретом: кто знает код, тот его и активирует.
Номинал кода в минимальных единицах LMC: real = nominal / 10^currency_asset.precision. Столько LMC получит активатор.
Тот же номинал в целых LMC — число, готовое к показу.
Сколько код стоил реселлеру с учётом скидки, в минимальных единицах LMC. Приходит только у кодов реселлера (source: reseller).
Та же стоимость в целых LMC. Приходит только у кодов реселлера.
Скидка реселлера на момент выпуска, в базисных пунктах (100 = 1%). Позднейшая смена личной скидки этот код не меняет. Приходит только у кодов реселлера.
С какого момента код можно активировать: до него код заморожен. null — ограничения нет.
Когда код активирован. null, пока не активирован. Кто его активировал, API не раскрывает.
Когда реселлер отменил код. null, если код не отменялся.
Когда код выпущен.
currency_assetобязательноеВалюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
object
Валюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
Код актива, в котором выражены суммы.
Сколько знаков после запятой у LMC: real = value / 10^precision.
Когда партия выпущена.
currency_assetобязательноеВалюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
object
Валюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
Код актива, в котором выражены суммы.
Сколько знаков после запятой у LMC: real = value / 10^precision.
Показать пример
{
"uuid": "string",
"source": "string",
"codes_count": "string",
"nominal_total": "string",
"nominal_total_formatted": 1,
"cost_total": "string",
"cost_total_formatted": 1,
"discount_bps": 1,
"codes": [
{
"uuid": "string",
"code_masked": "string",
"code": "string",
"nominal": "string",
"nominal_formatted": 1,
"cost": "string",
"cost_formatted": 1,
"discount_bps": 1,
"source": "string",
"funding": "string",
"status": "string",
"activatable_at": "string",
"redeemed_at": "string",
"cancelled_at": "string",
"created_at": "string",
"currency_asset": {
"code": "LUMC",
"precision": 1
}
}
],
"created_at": "string",
"currency_asset": {
"code": "LUMC",
"precision": 1
}
}Используется в операциях: 1
GiftCodeList
objectitemsобязательноеЗаписи текущей страницы в порядке сортировки списка.
array<GiftCode>GiftCode
Записи текущей страницы в порядке сортировки списка.
UUID кода. Его подставляют в пути GET /reseller/codes/{uuid} и POST /reseller/codes/{uuid}/cancel.
Код с маской, LUM-****-****-XXXX: его безопасно показывать в интерфейсе и писать в логи.
ПОЛНОЕ значение кода — то, что вводит получатель при активации. Публичный API реселлера отдаёт его в списке, при показе и при выпуске. Обращайтесь как с секретом: кто знает код, тот его и активирует.
Номинал кода в минимальных единицах LMC: real = nominal / 10^currency_asset.precision. Столько LMC получит активатор.
Тот же номинал в целых LMC — число, готовое к показу.
Сколько код стоил реселлеру с учётом скидки, в минимальных единицах LMC. Приходит только у кодов реселлера (source: reseller).
Та же стоимость в целых LMC. Приходит только у кодов реселлера.
Скидка реселлера на момент выпуска, в базисных пунктах (100 = 1%). Позднейшая смена личной скидки этот код не меняет. Приходит только у кодов реселлера.
С какого момента код можно активировать: до него код заморожен. null — ограничения нет.
Когда код активирован. null, пока не активирован. Кто его активировал, API не раскрывает.
Когда реселлер отменил код. null, если код не отменялся.
Когда код выпущен.
currency_assetобязательноеВалюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
object
Валюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
Код актива, в котором выражены суммы.
Сколько знаков после запятой у LMC: real = value / 10^precision.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
Показать пример
{
"items": [
{
"uuid": "string",
"code_masked": "string",
"code": "string",
"nominal": "string",
"nominal_formatted": 1,
"cost": "string",
"cost_formatted": 1,
"discount_bps": 1,
"source": "string",
"funding": "string",
"status": "string",
"activatable_at": "string",
"redeemed_at": "string",
"cancelled_at": "string",
"created_at": "string",
"currency_asset": {
"code": "LUMC",
"precision": 1
}
}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}Используется в операциях: 1
GiftCode
objectUUID кода. Его подставляют в пути GET /reseller/codes/{uuid} и POST /reseller/codes/{uuid}/cancel.
Код с маской, LUM-****-****-XXXX: его безопасно показывать в интерфейсе и писать в логи.
ПОЛНОЕ значение кода — то, что вводит получатель при активации. Публичный API реселлера отдаёт его в списке, при показе и при выпуске. Обращайтесь как с секретом: кто знает код, тот его и активирует.
Номинал кода в минимальных единицах LMC: real = nominal / 10^currency_asset.precision. Столько LMC получит активатор.
Тот же номинал в целых LMC — число, готовое к показу.
Сколько код стоил реселлеру с учётом скидки, в минимальных единицах LMC. Приходит только у кодов реселлера (source: reseller).
Та же стоимость в целых LMC. Приходит только у кодов реселлера.
Скидка реселлера на момент выпуска, в базисных пунктах (100 = 1%). Позднейшая смена личной скидки этот код не меняет. Приходит только у кодов реселлера.
С какого момента код можно активировать: до него код заморожен. null — ограничения нет.
Когда код активирован. null, пока не активирован. Кто его активировал, API не раскрывает.
Когда реселлер отменил код. null, если код не отменялся.
Когда код выпущен.
currency_assetобязательноеВалюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
object
Валюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
Код актива, в котором выражены суммы.
Сколько знаков после запятой у LMC: real = value / 10^precision.
Показать пример
{
"uuid": "string",
"code_masked": "string",
"code": "string",
"nominal": "string",
"nominal_formatted": 1,
"cost": "string",
"cost_formatted": 1,
"discount_bps": 1,
"source": "string",
"funding": "string",
"status": "string",
"activatable_at": "string",
"redeemed_at": "string",
"cancelled_at": "string",
"created_at": "string",
"currency_asset": {
"code": "LUMC",
"precision": 1
}
}Используется в операциях: 4
GiftCodeSource
stringОткуда код: куплен пользователем за деньги (purchase) или выпущен реселлером
со своего баланса (reseller).
- purchase
- reseller
Показать пример
"purchase"Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
GiftCodeStatus
stringСтатус подарочного кода: active — выпущен и ждёт активации (возможно, ещё
заморожен до activatable_at); refunding — идёт возврат денег, активация и
отмена недоступны; redeemed — активирован, номинал на балансе активатора;
refunded — деньги возвращены покупателю на карту; cancelled — реселлер
отменил код, стоимость вернулась на его баланс; annulled — аннулирован без
возврата денег.
- active
- refunding
- redeemed
- refunded
- cancelled
- annulled
Показать пример
"active"Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
IssueGiftCodesRequest
objectВыпуск кодов с баланса реселлера. Заголовок Idempotency-Key необязателен,
но рекомендуется: с ним сетевой повтор не выпустит вторую партию.
Номиналы кодов в LMC, по одному числу на код: сколько кодов — столько элементов. Допустимы числа и десятичные строки; номинал — из готовых в GET /reseller/settings либо между min_nominal и max_nominal. Число элементов ограничено limits.max_codes_per_issue из GET /reseller.
Показать пример
{
"nominals": [
100,
100,
250
]
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
LumVoiceList
objectitemsобязательноеЗаписи текущей страницы в порядке сортировки списка.
array<LumVoice>LumVoice
Записи текущей страницы в порядке сортировки списка.
UUID голоса. Кладётся в config.voice_id шаблона; для путей /voices/{voice} — он же.
Название голоса для показа.
Описание голоса от автора: тембр, манера, сценарии использования.
Пол голоса.
Акцент или региональный вариант произношения.
Язык, на котором голос звучит по умолчанию, ISO-639-1.
Состояние клонирования голоса. Использовать в заказах можно только полностью готовый.
Стадия публикации: черновик, на модерации, опубликован. Определяет, виден ли голос в общем каталоге GET /voices/public.
Разрешил ли автор использовать голос другим. Без этого флага голос не попадает в каталог GET /voices/public, а у тех, кто уже добавил его в свою библиотеку, запись становится недоступной.
Когда собраны демо-фрагменты, ISO 8601. null — превью ещё нет.
Когда голос создан, ISO 8601.
Когда голос последний раз менялся, ISO 8601.
languagesнеобязательноеЯзыки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
array<VoiceLanguage>VoiceLanguage
Языки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
Внутренний идентификатор языковой версии голоса.
Код языка, ISO-639-1. Он же — ключ в preview_urls.
Состояние клонирования для этого языка. Заказ принимается только на языке, где клон готов.
Длительность референсной записи в миллисекундах — на ней обучен клон.
Версия обученной модели. Растёт при переобучении голоса.
Почему клонирование не удалось. null, если сбоя не было.
Когда клонирование началось, ISO 8601.
Когда клонирование завершилось, ISO 8601. null — ещё идёт либо не удалось.
Когда языковая версия последний раз менялась, ISO 8601.
preview_urlsобязательноеДемо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
object
Демо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
Показать пример
{
"items": [
{
"id": "string",
"display_name": "string",
"description": "string",
"gender": "string",
"accent": "string",
"default_language_code": "string",
"voice_status": "string",
"publication_status": "string",
"allow_usage_in_orders": true,
"preview_generated_at": "string",
"created_at": "string",
"updated_at": "string",
"tags": [
{
"id": 1,
"code": "string",
"name": "string",
"description": "string",
"color": "string",
"sort_order": 1
}
],
"languages": [
{
"id": 1,
"language_code": "string",
"status": "string",
"reference_duration_ms": 1,
"model_version": 1,
"failure_reason": "string",
"clone_started_at": "string",
"clone_completed_at": "string",
"updated_at": "string"
}
],
"preview_urls": {}
}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}Используется в операциях: 1
LumVoice
objectUUID голоса. Кладётся в config.voice_id шаблона; для путей /voices/{voice} — он же.
Название голоса для показа.
Описание голоса от автора: тембр, манера, сценарии использования.
Пол голоса.
Акцент или региональный вариант произношения.
Язык, на котором голос звучит по умолчанию, ISO-639-1.
Состояние клонирования голоса. Использовать в заказах можно только полностью готовый.
Стадия публикации: черновик, на модерации, опубликован. Определяет, виден ли голос в общем каталоге GET /voices/public.
Разрешил ли автор использовать голос другим. Без этого флага голос не попадает в каталог GET /voices/public, а у тех, кто уже добавил его в свою библиотеку, запись становится недоступной.
Когда собраны демо-фрагменты, ISO 8601. null — превью ещё нет.
Когда голос создан, ISO 8601.
Когда голос последний раз менялся, ISO 8601.
languagesнеобязательноеЯзыки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
array<VoiceLanguage>VoiceLanguage
Языки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
Внутренний идентификатор языковой версии голоса.
Код языка, ISO-639-1. Он же — ключ в preview_urls.
Состояние клонирования для этого языка. Заказ принимается только на языке, где клон готов.
Длительность референсной записи в миллисекундах — на ней обучен клон.
Версия обученной модели. Растёт при переобучении голоса.
Почему клонирование не удалось. null, если сбоя не было.
Когда клонирование началось, ISO 8601.
Когда клонирование завершилось, ISO 8601. null — ещё идёт либо не удалось.
Когда языковая версия последний раз менялась, ISO 8601.
preview_urlsобязательноеДемо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
object
Демо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
Показать пример
{
"id": "string",
"display_name": "string",
"description": "string",
"gender": "string",
"accent": "string",
"default_language_code": "string",
"voice_status": "string",
"publication_status": "string",
"allow_usage_in_orders": true,
"preview_generated_at": "string",
"created_at": "string",
"updated_at": "string",
"tags": [
{
"id": 1,
"code": "string",
"name": "string",
"description": "string",
"color": "string",
"sort_order": 1
}
],
"languages": [
{
"id": 1,
"language_code": "string",
"status": "string",
"reference_duration_ms": 1,
"model_version": 1,
"failure_reason": "string",
"clone_started_at": "string",
"clone_completed_at": "string",
"updated_at": "string"
}
],
"preview_urls": {}
}Используется в операциях: 3
OrderList
objectЗаказы текущей страницы.
Номер текущей страницы, начиная с 1.
Номер последней страницы.
Элементов на странице.
Всего элементов по фильтру.
Показать пример
{
"items": [],
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 0
}Используется в операциях: 1
OrderItem
objectUUID чанка. Подставляется в пути /orders/{order}/items/{item}/….
UUID заказа, которому принадлежит чанк.
Природа записи: chunk — исходный фрагмент, retry — бесплатный повтор
упавшего фрагмента, regeneration — платная переделка готового.
Повторы и перегенерации живут отдельными записями с тем же chunk_index:
история попыток сохраняется целиком, а звучит в результате последняя.
Порядковый номер фрагмента в заказе, с нуля. Задаёт порядок склейки итогового файла.
Номер абзаца, к которому относится фрагмент, — заполняется только у исходных фрагментов абзацного заказа. null и в обычном режиме, и у записей повтора либо перегенерации: у них своей привязки к абзацу нет, её берут у родительского фрагмента через parent_item_id. Режим включается ключом generation_mode в config_override заказа.
UUID исходного чанка — у записей retry и regeneration. У самого исходного чанка null.
Длина текста, с которой фрагмент создавался. Служит потолком для text в regenerate.
Длина актуального текста фрагмента: после перегенерации отличается от original_text_length.
Стоимость фрагмента в токенах — это не деньги. Денежная сумма лежит у самого заказа, в его поле price_units (там LMC, здесь токены; поля называются одинаково, единицы разные).
Сколько токенов фактически списано по этому фрагменту. У незавершённого фрагмента — 0.
Сколько токенов ещё зарезервировано под фрагмент. Обнуляется, когда фрагмент завершается или отменяется.
Состояние фрагмента: pending — ждёт воркера, processing — в работе,
completed — готов, failed — техническая ошибка, policy_flagged —
отклонён контентной политикой.
Разница между двумя последними определяет способ лечения: failed чинится
повтором как есть, policy_flagged — только переформулировкой текста,
повтор с прежним будет отклонён снова.
Файл готового фрагмента: абсолютный путь либо структура с путём и размером. Скачивается через POST /storage/url, как и файлы заказа. null, пока фрагмент не готов.
Длительность полученного аудио в миллисекундах — длина записи, а не время генерации. У не-аудио задач null.
Номер попытки для этого фрагмента, начиная с 1. Растёт с каждым повтором.
Разрешён ли бесплатный повтор прямо сейчас. Учитывает статус, тип задачи и исчерпание попыток — проверять условия самому не нужно.
Разрешена ли платная перегенерация прямо сейчас. Доступна только для завершённых фрагментов.
Когда фрагмент создан, ISO 8601.
Когда фрагмент последний раз менялся, ISO 8601.
Причина падения в машиночитаемом виде — есть только у failed и policy_flagged. Остальным приходит null.
Показать пример
{
"id": "string",
"order_id": "string",
"item_type": "string",
"chunk_index": 1,
"paragraph_index": "string",
"parent_item_id": "string",
"original_text_length": 1,
"current_text_length": 1,
"price_units": 1,
"consumed_units": 1,
"remaining_locked": 1,
"status": "string",
"result_file": {},
"duration_ms": 1,
"attempt_number": 1,
"can_retry": true,
"can_regenerate": true,
"created_at": "string",
"updated_at": "string",
"failure_reason": "string"
}Order
objectUUID заказа. Его подставляют в пути /orders/{order}/… и передают в POST /orders/{order}/retry.
ID владельца заказа. У заказов, созданных по API-ключу, это всегда владелец ключа — чужой заказ по ключу не увидеть.
Название заказа: из него берутся имя скачиваемого файла и имя ZIP-архива.
templateнеобязательноеШаблон, по которому создан заказ. Приходит только у заказов с template_id; у заказа без шаблона (sfx/music по task_type) поля нет. config внутри — настройки, с которыми выполняется ИМЕННО этот заказ: конфиг шаблона на момент создания заказа с наложенным config_override; правка шаблона после создания его не меняет. В списке GET /orders config приходит null — полный конфиг отдаёт GET /orders/{order}. Шаблон могли удалить после создания заказа: здесь он виден по-прежнему, но GET /templates/{template} ответит 404, а новый заказ с этим template_id — 422. У заказов, созданных до выхода этой версии API (конец сентября 2026 года), снимка нет: там config — текущий конфиг шаблона с наложенным config_override, и правка шаблона его меняет.
TemplateTemplate
Шаблон, по которому создан заказ. Приходит только у заказов с template_id; у заказа без шаблона (sfx/music по task_type) поля нет. config внутри — настройки, с которыми выполняется ИМЕННО этот заказ: конфиг шаблона на момент создания заказа с наложенным config_override; правка шаблона после создания его не меняет. В списке GET /orders config приходит null — полный конфиг отдаёт GET /orders/{order}. Шаблон могли удалить после создания заказа: здесь он виден по-прежнему, но GET /templates/{template} ответит 404, а новый заказ с этим template_id — 422. У заказов, созданных до выхода этой версии API (конец сентября 2026 года), снимка нет: там config — текущий конфиг шаблона с наложенным config_override, и правка шаблона его меняет.
UUID шаблона. Его кладут в template_id при создании заказа.
ID владельца шаблона.
Короткий публичный идентификатор для расшаривания. null у шаблона, которым не делились.
Название шаблона — только для человека, на поведение генерации не влияет.
Код сервиса, по схеме которого валидируется config: elevenlabs, lumimg и т. д.
Сервис шаблона справочно: название и тарификация, без схем конфигурации. null означает, что сервиса с таким кодом больше нет.
Настройки генерации: голос, модель, скорость и прочее — набор ключей задаёт сервис. Допустимые значения смотрите в GET /templates/config-options?service=<код>, значение вне схемы отклоняется с 422. В заказе (template в GET /orders/{order}) это настройки самого заказа — снимок на момент его создания с config_override, а не текущий конфиг шаблона (у заказов, созданных до конца сентября 2026 года, — текущий конфиг шаблона с config_override).
Опубликован ли шаблон в общем каталоге.
UUID папки, в которой лежит шаблон, либо null для корня. Структура папок видна в GET /templates/browse.
Когда шаблон создан, ISO 8601.
Когда шаблон последний раз менялся, ISO 8601.
UUID использованного шаблона либо null, если заказ создан без шаблона.
Тип задачи — он определяет, что лежит в task_data и что придёт в result.
Текущее состояние заказа. Терминальные — completed, failed, cancelled,
compensated; опрашивать заказ дальше смысла нет.
partially_completed — часть чанков готова, часть упала: файлы уже можно
забирать, а сбойные фрагменты перезапускать через
POST /orders/{order}/items/retry-failed.
Заблокированная под заказ сумма в минимальных единицах LMC. Показывать это число как есть нельзя: реальное значение — price_units / 10^precision, где precision берётся из актива рядом. Готовое к показу значение лежит в соседнем decimal-поле.
Та же сумма, что и price_units, но в целых LMC — готова к показу. null, пока стоимость не зафиксирована.
currency_assetобязательноеАктив суммы — всегда LMC. Его precision нужен, чтобы перевести минимальные единицы в реальное значение.
AssetAsset
Актив суммы — всегда LMC. Его precision нужен, чтобы перевести минимальные единицы в реальное значение.
Внутренний идентификатор актива.
Код актива: LUMC — внутренняя валюта, TOKEN — токены генерации.
Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты.
Число десятичных знаков. Ключевое поле: любая целая сумма этого актива делится на 10^precision, чтобы получить реальное значение. Не считайте, что делитель равен 100.
Название актива для показа, на языке аккаунта.
Когда актив выведен из обращения, ISO 8601. null у действующего.
Когда актив заведён, ISO 8601.
Когда актив последний раз менялся, ISO 8601.
Полная стоимость заказа в токенах: исходные чанки плюс все повторы и перегенерации. Это единица квоты, а не деньги.
Суммарная длительность полученного аудио в миллисекундах. Это длина результата, а не время, потраченное на генерацию.
Входные данные задачи ровно в том виде, в каком их принял сервер: текст, ссылки на загруженные файлы, применённые настройки. Набор ключей зависит от task_type.
Результат выполнения. files[] — основные файлы; service_files[] —
вспомогательные (субтитры .srt/.vtt/.lrc, alignment) у TTS-заказов.
Пути абсолютные и готовы к передаче в POST /storage/url.
null, пока заказ не завершён, а также у упавшего заказа: подробностей
ошибки в публичном контуре нет.
Когда заказ создан, ISO 8601.
Когда заказ последний раз менялся, ISO 8601. Растёт на каждом переходе статуса — годится как дешёвый признак «что-то произошло».
Срок хранения файлов заказа. files_expire_at — момент удаления (null, если заказ ещё не завершён или файлы уже удалены); files_expired — файлов больше нет, скачивать нечего.
true — срок хранения истёк и файлы уже удалены: ссылку на них получить нельзя, заказ нужно создавать заново.
retentionобязательноеСроки хранения по уровням файлов. Пофрагментные дорожки склеенного заказа удаляются раньше самого результата.
object
Сроки хранения по уровням файлов. Пофрагментные дорожки склеенного заказа удаляются раньше самого результата.
chunksобязательноеСрок жизни пофрагментных дорожек — ими работают правка пауз, пересборка финала и перегенерация отдельного фрагмента.
object
Срок жизни пофрагментных дорожек — ими работают правка пауз, пересборка финала и перегенерация отдельного фрагмента.
Когда исчезнут пофрагментные дорожки, ISO 8601. До этого момента доступны правка пауз, пересборка и перегенерация отдельного фрагмента. null — заказ ещё не завершён (отсчёт не начат) либо фрагментов уже нет.
true — пофрагментных дорожек больше нет: правка и пересборка отклоняются. Готовый результат при этом может быть ещё доступен — смотрите retention.files.
true — фрагменты исчезнут раньше результата (заказ склеен в отдельный файл). false — фрагменты и есть результат, оба уровня истекают одновременно.
Почему фрагменты недоступны: chunks_purged — удалены по своему сроку, результат ещё на месте; storage_expired — удалены все файлы заказа. null — фрагменты доступны.
filesобязательноеСрок жизни всех файлов заказа, включая результат. Дублирует поля files_expire_at / files_expired верхнего уровня.
object
Срок жизни всех файлов заказа, включая результат. Дублирует поля files_expire_at / files_expired верхнего уровня.
Когда будут удалены все файлы заказа, ISO 8601. То же значение, что в files_expire_at — поле верхнего уровня сохранено для совместимости.
То же, что files_expired: файлов больше нет, скачивать нечего.
Оценка оставшегося времени, в секундах — только пока заказ выполняется. У завершённого и у ещё не начатого null.
Ожидаемый момент готовности, ISO 8601 — тот же прогноз, что и eta_seconds, только абсолютным временем.
Сколько исходных чанков уже готово. Повторы и перегенерации сюда не входят — иначе прогресс уезжал бы выше 100 %.
Сколько исходных чанков в заказе всего. Ноль означает, что разбиение ещё не выполнено.
Готовность в процентах, 0–100 — производная от completed_chunks и total_chunks, считать самому не нужно.
true — идёт склейка аудио: результат ещё не финальный. Бывает и при status = completed — после перегенерации фрагмента финал пересобирается, и до конца склейки result указывает на прежнюю дорожку. Скачивать итог — когда stitching = false.
paragraphsобязательноеСводка по абзацам: индекс, число фрагментов, общий статус и прогресс каждого абзаца. null — заказ создан в обычном режиме, ориентируйтесь на items[]. Чтобы абзацы появились, создавайте заказ с config_override.generation_mode = paragraph (подробности — в описании этого поля).
может быть nullarray<object>
Сводка по абзацам: индекс, число фрагментов, общий статус и прогресс каждого абзаца. null — заказ создан в обычном режиме, ориентируйтесь на items[]. Чтобы абзацы появились, создавайте заказ с config_override.generation_mode = paragraph (подробности — в описании этого поля).
Номер абзаца, с нуля.
Сколько чанков попало в этот абзац.
Сколько чанков абзаца уже готово.
Сводный статус абзаца: он выводится из статусов его чанков, а не хранится отдельно. Словарь свой, короче общего: pending, in_progress, failed, completed — заблокированный модерацией чанк тоже даёт failed. Считаются только исходные чанки, поэтому успешный повтор упавшего фрагмента статус абзаца НЕ меняет: смотрите на сам фрагмент в items[].
Готовность абзаца в процентах, 0–100.
Склеенное аудио абзаца целиком: абсолютный путь либо структура с путём и размером. Скачивается через POST /storage/url, как и остальные файлы заказа. null читается по-разному в зависимости от chunks_count: при chunks_count = 1 собственного файла у абзаца нет и не будет — абзац это и есть тот единственный фрагмент, берите его result_file из items[] по тому же paragraph_index; при chunks_count > 1 склейки ещё не было — многочанковый абзац получает файл ТОЛЬКО после неё, никогда заранее.
itemsнеобязательноеЧанки заказа. Приходят в детальном ответе GET /orders/{order}; в списке GET /orders поля нет — за ними идите в GET /orders/{order}/items.
array<OrderItem>OrderItem
Чанки заказа. Приходят в детальном ответе GET /orders/{order}; в списке GET /orders поля нет — за ними идите в GET /orders/{order}/items.
UUID чанка. Подставляется в пути /orders/{order}/items/{item}/….
UUID заказа, которому принадлежит чанк.
Природа записи: chunk — исходный фрагмент, retry — бесплатный повтор
упавшего фрагмента, regeneration — платная переделка готового.
Повторы и перегенерации живут отдельными записями с тем же chunk_index:
история попыток сохраняется целиком, а звучит в результате последняя.
Порядковый номер фрагмента в заказе, с нуля. Задаёт порядок склейки итогового файла.
Номер абзаца, к которому относится фрагмент, — заполняется только у исходных фрагментов абзацного заказа. null и в обычном режиме, и у записей повтора либо перегенерации: у них своей привязки к абзацу нет, её берут у родительского фрагмента через parent_item_id. Режим включается ключом generation_mode в config_override заказа.
UUID исходного чанка — у записей retry и regeneration. У самого исходного чанка null.
Длина текста, с которой фрагмент создавался. Служит потолком для text в regenerate.
Длина актуального текста фрагмента: после перегенерации отличается от original_text_length.
Стоимость фрагмента в токенах — это не деньги. Денежная сумма лежит у самого заказа, в его поле price_units (там LMC, здесь токены; поля называются одинаково, единицы разные).
Сколько токенов фактически списано по этому фрагменту. У незавершённого фрагмента — 0.
Сколько токенов ещё зарезервировано под фрагмент. Обнуляется, когда фрагмент завершается или отменяется.
Состояние фрагмента: pending — ждёт воркера, processing — в работе,
completed — готов, failed — техническая ошибка, policy_flagged —
отклонён контентной политикой.
Разница между двумя последними определяет способ лечения: failed чинится
повтором как есть, policy_flagged — только переформулировкой текста,
повтор с прежним будет отклонён снова.
Файл готового фрагмента: абсолютный путь либо структура с путём и размером. Скачивается через POST /storage/url, как и файлы заказа. null, пока фрагмент не готов.
Длительность полученного аудио в миллисекундах — длина записи, а не время генерации. У не-аудио задач null.
Номер попытки для этого фрагмента, начиная с 1. Растёт с каждым повтором.
Разрешён ли бесплатный повтор прямо сейчас. Учитывает статус, тип задачи и исчерпание попыток — проверять условия самому не нужно.
Разрешена ли платная перегенерация прямо сейчас. Доступна только для завершённых фрагментов.
Когда фрагмент создан, ISO 8601.
Когда фрагмент последний раз менялся, ISO 8601.
Причина падения в машиночитаемом виде — есть только у failed и policy_flagged. Остальным приходит null.
Сколько из потраченных токенов покрыла квота подписки. null — из квоты не покрыто ничего.
Сколько токенов оплачено сверх квоты, из баланса LMC. null — доплаты не было.
Итог по двум предыдущим полям: сколько токенов списано за заказ (квота + доплата). Заказ, покрытый безлимитом подписки, и бесплатные версии сюда не входят — у безлимитного заказа поле null; объём генерации — total_tokens. Повторы (retry) не входят — они не тарифицируются заново.
Место в очереди — только у задач поиска голоса (voice_search), которые обслуживаются по одной. У остальных типов задач поля нет.
Оценка ожидания в очереди поиска голоса, в секундах. Оценка, а не обещание: пересчитывается на каждый ответ.
Показать пример
{
"id": "string",
"user_id": 1,
"name": "string",
"template": {
"id": "string",
"user_id": 1,
"slug": "string",
"name": "string",
"service_key": "string",
"service": {
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": [
"string"
],
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
},
"config": {},
"is_public": true,
"folder_id": "string",
"created_at": "string",
"updated_at": "string"
},
"template_id": "string",
"task_type": "tts",
"status": "created",
"price_units": 1,
"price_formatted": 1,
"currency_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"total_tokens": 1,
"total_duration_ms": 1,
"task_data": {},
"result": {},
"created_at": "string",
"updated_at": "string",
"files_expire_at": "string",
"files_expired": true,
"retention": {
"chunks": {
"expires_at": "string",
"expired": true,
"expires_early": true,
"reason": "chunks_purged"
},
"files": {
"expires_at": "string",
"expired": true
}
},
"eta_seconds": 1,
"eta_at": "string",
"completed_chunks": 1,
"total_chunks": 1,
"progress_percent": 1,
"stitching": true,
"paragraphs": [
{
"paragraph_index": 1,
"chunks_count": 1,
"completed_chunks": "string",
"status": "string",
"progress_percent": 1,
"result_file": "string"
}
],
"items": [
{
"id": "string",
"order_id": "string",
"item_type": "string",
"chunk_index": 1,
"paragraph_index": "string",
"parent_item_id": "string",
"original_text_length": 1,
"current_text_length": 1,
"price_units": 1,
"consumed_units": 1,
"remaining_locked": 1,
"status": "string",
"result_file": {},
"duration_ms": 1,
"attempt_number": 1,
"can_retry": true,
"can_regenerate": true,
"created_at": "string",
"updated_at": "string",
"failure_reason": "string"
}
],
"tokens_from_quota": 1,
"tokens_from_payg": 1,
"tokens_spent": 1,
"queue_position": 1,
"queue_wait_seconds": 1
}Используется в операциях: 5
OrderStatus
string- created
- pending
- in_progress
- completed
- result_delivered
- failed
- compensated
- cancelled
- partially_completed
Показать пример
"created"Используется в операциях: 5
PreviewChunksRequest
objectDry-run preview разбиения текста на чанки — без создания заказа. input_text обязателен (preview по inline-тексту; файлы — async-путь).
config_override — тот же объект, что уйдёт в POST /orders (с 25.09.2026): размер
чанка и режим провайдера в нём меняют рез, и превью без него показывало границы
конфига шаблона, а не боевого реза ({@see AcceptsConfigOverride}).
ID предыдущего preview для инкрементального ре-чанка (пересчёт только хвоста правки).
sha256(input_text) от фронта — необязательная серверная верификация целостности.
Режим генерации ЭТОГО превью — то же значение, что уйдёт в
config_override.generation_mode при создании заказа. Отсутствие = default.
Сервис, не объявивший ключ в validation_schema, режим игнорирует
(см. Service::resolveGenerationMode) — как и на боевом пути.
Настройки генерации поверх конфига шаблона — тот же JSON-объект, что уйдёт в создание заказа; настройки, влияющие на рез, применяются к превью так же, как к заказу. Посторонние ключи отбрасываются.
Показать пример
{
"template_id": "string",
"task_type": "string",
"input_text": "string",
"previous_preview_id": "string",
"text_hash": "string",
"generation_mode": "default",
"config_override": {}
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
PublicVoiceList
objectitemsобязательноеЗаписи текущей страницы в порядке сортировки списка.
array<LumVoice>LumVoice
Записи текущей страницы в порядке сортировки списка.
UUID голоса. Кладётся в config.voice_id шаблона; для путей /voices/{voice} — он же.
Название голоса для показа.
Описание голоса от автора: тембр, манера, сценарии использования.
Пол голоса.
Акцент или региональный вариант произношения.
Язык, на котором голос звучит по умолчанию, ISO-639-1.
Состояние клонирования голоса. Использовать в заказах можно только полностью готовый.
Стадия публикации: черновик, на модерации, опубликован. Определяет, виден ли голос в общем каталоге GET /voices/public.
Разрешил ли автор использовать голос другим. Без этого флага голос не попадает в каталог GET /voices/public, а у тех, кто уже добавил его в свою библиотеку, запись становится недоступной.
Когда собраны демо-фрагменты, ISO 8601. null — превью ещё нет.
Когда голос создан, ISO 8601.
Когда голос последний раз менялся, ISO 8601.
languagesнеобязательноеЯзыки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
array<VoiceLanguage>VoiceLanguage
Языки, на которые голос склонирован, с состоянием каждого клона. Заказ возможен только на готовом языке.
Внутренний идентификатор языковой версии голоса.
Код языка, ISO-639-1. Он же — ключ в preview_urls.
Состояние клонирования для этого языка. Заказ принимается только на языке, где клон готов.
Длительность референсной записи в миллисекундах — на ней обучен клон.
Версия обученной модели. Растёт при переобучении голоса.
Почему клонирование не удалось. null, если сбоя не было.
Когда клонирование началось, ISO 8601.
Когда клонирование завершилось, ISO 8601. null — ещё идёт либо не удалось.
Когда языковая версия последний раз менялась, ISO 8601.
preview_urlsобязательноеДемо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
object
Демо-фрагменты по языкам: ключ — код языка, значение — временная ссылка на аудио либо null, если превью для языка нет. Ссылки живут около минуты.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
Показать пример
{
"items": [
{
"id": "string",
"display_name": "string",
"description": "string",
"gender": "string",
"accent": "string",
"default_language_code": "string",
"voice_status": "string",
"publication_status": "string",
"allow_usage_in_orders": true,
"preview_generated_at": "string",
"created_at": "string",
"updated_at": "string",
"tags": [
{
"id": 1,
"code": "string",
"name": "string",
"description": "string",
"color": "string",
"sort_order": 1
}
],
"languages": [
{
"id": 1,
"language_code": "string",
"status": "string",
"reference_duration_ms": 1,
"model_version": 1,
"failure_reason": "string",
"clone_started_at": "string",
"clone_completed_at": "string",
"updated_at": "string"
}
],
"preview_urls": {}
}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}Используется в операциях: 1
RegenerateOrderItemRequest
objectПараметры перегенерации готового фрагмента заказа.
Новый текст готового чанка — обязателен. Переделка уже выполненного фрагмента
тарифицируется как новая генерация (проверка токен-квоты ключа → 429 при
превышении).
Показать пример
{
"text": "Новая редакция фрагмента."
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
ResellerProfile
objectID реселлера.
Личная скидка реселлера на выпускаемые коды, в базисных пунктах: 100 = 1%. Именно она определяет стоимость кода: cost = nominal × (1 − discount_bps / 10000).
Причина блокировки кабинета. null, пока кабинет не заблокирован.
Когда заявка на роль реселлера была одобрена.
Лимиты — личные, если администратор их задал, иначе общие умолчания: max_topup_rub — потолок одного пополнения в рублях, max_codes_per_issue — сколько кодов можно выпустить за один запрос POST /reseller/codes.
balanceнеобязательноеБаланс кабинета. Каждая сумма приходит парой: в минимальных единицах LMC (available, held, debt, …; real = value / 10^currency_asset.precision) и <имя>_formatted — то же в целых LMC. available — на счёте, held — заморожено, debt — долг перед платформой (его гасит следующее пополнение), spendable — сколько реально можно потратить на выпуск (available за вычетом долга).
object
Баланс кабинета. Каждая сумма приходит парой: в минимальных единицах LMC (available, held, debt, …; real = value / 10^currency_asset.precision) и <имя>_formatted — то же в целых LMC. available — на счёте, held — заморожено, debt — долг перед платформой (его гасит следующее пополнение), spendable — сколько реально можно потратить на выпуск (available за вычетом долга).
currency_assetобязательноеВалюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
object
Валюта сумм ответа — LMC. По precision суммы в минимальных единицах переводятся в целые LMC.
Код актива, в котором выражены суммы.
Сколько знаков после запятой у LMC: real = value / 10^precision.
Показать пример
{
"id": "string",
"status": "string",
"discount_bps": "string",
"blocked_reason": "string",
"approved_at": "string",
"limits": "string",
"balance": {},
"currency_asset": {
"code": "LUMC",
"precision": 1
}
}Используется в операциях: 1
RetryOrderItemRequest
objectПараметры повтора сбойного фрагмента заказа.
Исправленный текст чанка. Не передан — чанк повторяется с прежним текстом.
Для чанка в статусе policy_flagged (контент отклонён политикой провайдера)
повтор с тем же текстом будет отклонён снова — присылайте переформулированный.
Текущий текст чанка: GET /orders/{order}/items/{item}/text.
Показать пример
{
"text": "Переформулированный фрагмент текста."
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
RetryOrderRequest
objectПодтверждение биллинга для повторного заказа. Пустое тело — обычный путь;
поля нужны только после ответа 402 в режиме отката к явному подтверждению.
Согласие на PAYG-добор для нового заказа — только в режиме отката к явному подтверждению (иначе игнорируется). Семантика та же, что у POST /orders: действует только вместе со свежим quote_token из ответа 402.
Котировка добора из ответа 402 этого же запроса (только режим отката). Живёт ~60 секунд.
Показать пример
{
"confirm_payg_topup": false,
"quote_token": "string"
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
Service
objectВнутренний числовой идентификатор сервиса. В запросах используйте code, а не его.
Код сервиса — то самое значение, которое идёт в service_key шаблона и в путь GET /usage/{service}.
Служебное название сервиса.
Название сервиса для показа пользователю, переведённое на язык аккаунта.
Разрешён ли доплатный (pay-as-you-go) добор сверх квоты подписки для этого сервиса.
Модель тарификации сервиса: за вызов, за символ, за секунду либо за изображение. Она определяет, какое из полей units_per_* работает.
ID актива, в котором номинированы единицы сервиса. Сам актив — в unit_asset.
unit_assetнеобязательноеАктив единиц сервиса; его precision нужен, чтобы перевести целые units_* в дробное значение.
AssetAsset
Актив единиц сервиса; его precision нужен, чтобы перевести целые units_* в дробное значение.
Внутренний идентификатор актива.
Код актива: LUMC — внутренняя валюта, TOKEN — токены генерации.
Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты.
Число десятичных знаков. Ключевое поле: любая целая сумма этого актива делится на 10^precision, чтобы получить реальное значение. Не считайте, что делитель равен 100.
Название актива для показа, на языке аккаунта.
Когда актив выведен из обращения, ISO 8601. null у действующего.
Когда актив заведён, ISO 8601.
Когда актив последний раз менялся, ISO 8601.
ID возможности, без которой сервис недоступен. null — сервис доступен всем.
required_entitlementнеобязательноеВозможность подписки, открывающая доступ к сервису. Есть ли она у вас — видно в GET /usage.
EntitlementEntitlement
Возможность подписки, открывающая доступ к сервису. Есть ли она у вас — видно в GET /usage.
Внутренний идентификатор возможности.
Код возможности — по нему сервис проверяет, открыт ли он вам.
Название возможности для показа, на языке аккаунта.
Дополнительные атрибуты возможности. Набор ключей произвольный.
Действует ли возможность.
Когда возможность заведена, ISO 8601.
Когда возможность последний раз менялась, ISO 8601.
Безлимитна ли эта возможность в рамках тарифа. Поле присутствует только когда право отдаётся в контексте плана.
Значение в минимальных единицах актива: реальное — value / 10^precision, где precision лежит в unit_asset.
Сколько единиц стоит один символ — работает при посимвольной тарификации. Значение в минимальных единицах актива.
Сколько единиц стоит одно изображение. Значение в минимальных единицах актива.
Сколько единиц стоит секунда результата. Значение в минимальных единицах актива.
Минимум символов, который тарифицируется, даже если текст короче. Защищает от копеечных заказов.
Цена одного токена при доплате из LMC, в минимальных единицах. Стоимость добора — tokens × lumcoin_per_token.
Число десятичных знаков LMC — делитель 10^precision для всех сумм в минимальных единицах.
Цена в минимальных единицах LMC за unit_size натуральных единиц сервиса. null — сервис тарифицируется через токены.
За сколько натуральных единиц сервиса назначена цена price_lumc_minor: например, за 1000 символов.
true — цена задана сразу в LMC (price_lumc_minor), а не выводится из токенов. Влияет только на способ расчёта, не на итог для вас.
Натуральная единица тарифа для показа: символы, секунды, изображения.
Раздел каталога, к которому сервис отнесён в интерфейсе.
Вес сортировки в каталоге: меньше — выше.
Дополнительные атрибуты сервиса. Набор ключей произвольный и может меняться — не полагайтесь на конкретный.
Виден ли сервис в каталоге. Приём заказов останавливает не он, а maintenance_mode.
Сервис на технических работах: создание заказа, повтор и перегенерация отвечают 503. Уже принятые заказы продолжают обрабатываться.
Когда сервис заведён, ISO 8601.
Когда настройки сервиса менялись, ISO 8601.
Показать пример
{
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": [
"string"
],
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
StoreOrderRequest
objectПараметры создания заказа. Принимается как application/json, так и
multipart/form-data (второе — когда нужны input_files).
UUID шаблона — он определяет сервис, тип задачи и все настройки генерации.
Либо template_id, либо task_type обязателен; если переданы оба, ведущим
считается шаблон.
Шаблон — обычный способ работы: настройки заданы один раз, в заказе остаётся
прислать только текст. Разовое отклонение от настроек шаблона — config_override.
Тип задачи для генерации без шаблона. Обязателен, если не передан template_id.
| Значение | Что делает | Где параметры |
|---|---|---|
sfx | Звуковой эффект по текстовому описанию | task_data |
music | Музыкальный трек по описанию | task_data |
voice_search | Подбор похожих голосов по вашему аудиофрагменту | input_files (аудио) + task_data.top |
Для tts шаблон нужен — в нём лежит выбор голоса и модели.
Человекочитаемое имя заказа: определяет имя скачиваемого файла и имя ZIP-архива.
Не передано — сервер выведет сам в таком порядке: имя загруженного файла без
расширения → первые ~60 символов текста по границе слова (паузные теги {{pause=…}}
вырезаются).
Параметры генерации для заказа без шаблона — «временный шаблон» на один заказ. JSON-объект; multipart-клиент может прислать его одной JSON-строкой.
Ключи кладите в корень объекта, без обёртки.
GET /templates/config-optionsпоказывает те же параметры сгруппированными в секцию (sfx_settings,music_settings) — это форма для интерфейса настроек, а не форма запроса. Прислав{"sfx_settings": {"text": "…"}}, вы получите422«text обязателен»: обёртка спрятала ключ.
SFX (task_type: "sfx") — одна генерация = один файл:
| Ключ | Тип | Дефолт | Назначение |
|---|---|---|---|
text | string, обязателен | — | Описание звука; английский промпт работает лучше |
prompt_influence | number 0..1 | 0.3 | Насколько строго держаться промпта |
duration_seconds | number 0.5..30 | null | null = авто-длительность |
loop | boolean | false | Бесшовное зацикливание |
output_format | mp3_44100_128 | mp3_44100_192 | opus_48000_128 | mp3_44100_128 | Формат результата |
Music (task_type: "music") — n_variants генераций = столько же файлов:
| Ключ | Тип | Дефолт | Назначение |
|---|---|---|---|
prompt | string, обязателен | — | Описание трека: жанр, настроение, инструменты |
n_variants | integer 1..4 | 1 | Сколько вариантов сгенерировать. Умножает цену и даёт столько же файлов в result.files[] |
lyrics_text | string | null | Текст песни; пусто и без force_instrumental — модель может добавить вокал сама |
force_instrumental | boolean | false | Инструментал без вокала |
music_length_ms | integer 10000..30000 | 30000 | Длительность в миллисекундах: 10–30 сек максимум, больше 30000 → 422 |
model_id | music_v2 | music_v2 | Пока единственное значение |
Voice Search (task_type: "voice_search") — аудиофрагмент едет в input_files,
здесь только один параметр:
| Ключ | Тип | Дефолт | Назначение |
|---|---|---|---|
top | integer 1..50 | 10 | Сколько похожих голосов вернуть |
Что определяет цену
Считается число генераций, а не их размер:
| Тип | Цена | На цену НЕ влияют |
|---|---|---|
sfx | Одна ставка сервиса за заказ | duration_seconds, длина text |
music | Ставка × n_variants | music_length_ms, длина prompt, lyrics_text |
voice_search | Одна ставка за заказ | Длительность записи, top |
Пятиминутный трек стоит столько же, сколько десятисекундный, — платите за
обращение к модели. Фактически списанное придёт в price_units созданного заказа.
Сервер домешивает к вашим значениям default_config сервиса (ваши приоритетнее) —
отключается флагом skip_service_defaults. Значение вне диапазона или enum → 422
до биллинга, заказ не создаётся и деньги не резервируются.
Разовое отклонение от настроек шаблона — единственный способ поменять параметры
под конкретный заказ, не создавая новый шаблон. Форма — тот же JSON-объект, что
и config шаблона; применяется поверх него только к этому заказу.
Например, озвучить один заказ другим голосом:
{"tts_settings": {"voice_id": "<OTHER_VOICE_ID>"}} — остальной конфиг шаблона
сохранится.
Пути, которых нет в схеме сервиса, молча отбрасываются (опечатка в ключе
выглядит как «настройка не применилась»); оставшиеся значения валидируются по
схеме — вне диапазона или enum → 422. Работает только вместе с template_id:
у template-less sfx/music все параметры и так в task_data.
Присылайте только те ключи, которые меняете. Явный
null— не «оставить как в шаблоне», а «стереть»: он перезапишет значение шаблона на пустое для этого заказа. Клиент, который сериализует всю форму настроек целиком и кладётnullв незаполненные поля, таким образом молча сбросит половину шаблона. Отсутствующий ключ — единственный способ сказать «не трогать».
Абзацный режим озвучки
По умолчанию текст режется на фрагменты подряд, по техническому размеру, и границы абзацев роли не играют. Абзацный режим меняет порядок: сначала текст делится по пустой строке на абзацы, и уже каждый абзац режется внутри себя.
Ключ лежит НЕ внутри tts_settings, а рядом с ним, в корне config_override:
{"generation_mode": "paragraph"}| Значение | Что делает |
|---|---|
paragraph | Абзац — самостоятельная единица генерации |
default | Сплошной рез по размеру фрагмента (так же, как без ключа) |
Поддерживают elevenlabs и heygen; остальные сервисы ключ игнорируют —
отказа не будет, режим просто не включится.
Что изменится в ответе: у заказа появится paragraphs[] (по каждому абзацу —
индекс, число фрагментов, общий статус и прогресс), у фрагментов —
paragraph_index.
Влияет на цену. Минимальный тарифицируемый объём применяется к КАЖДОМУ абзацу отдельно, а не к заказу целиком: пять коротких абзацев стоят пять минимумов, тогда как тот же текст в обычном режиме обошёлся бы в один.
Влияет и на скорость. Абзац — самостоятельная задача, и одновременно исполняются не больше 10 однофрагментных абзацев плюс 5 многофрагментных на заказ; остальные ждут освобождения места. Текст из сотни коротких абзацев пойдёт волнами, зато первые результаты придут раньше, чем при сплошной нарезке.
Тот же ключ принимает и config шаблона — тогда режим станет постоянным для
всех заказов по этому шаблону. В GET /templates/config-options он не
перечислен: справочник описывает настройки сервиса, а режим задаётся на заказ.
Не подмешивать default_config сервиса к task_data. Пришлите true, если у вас
уже есть полный набор параметров и воркер должен получить ровно его — сервер не
добавит ни одного ключа по умолчанию.
Флаг сохраняется на заказе: POST /orders/{order}/retry воспроизведёт то же
поведение. На заказы по шаблону не влияет — там конфиг берётся из template.config
и config_override, а не из настроек сервиса.
Текст задачи. Для tts — то, что будет озвучено; сервер сам режет его на чанки.
Каналов текста три, и они равноправны — проверки (капы пауз, «текст нечем озвучить») применяются к каждому:
| Канал | Когда использовать |
|---|---|
input_text | Обычный способ: текст прямо в запросе |
.txt в input_files[] | Длинный текст файлом; содержимое читается как текст задачи |
task_data.text | Только для заказа без шаблона |
Что происходит с текстом до нарезки и как разметка внутри него влияет на цену — в разделах «Разметка внутри текста» и «Как режется текст» описания этого метода.
Для template-less sfx/music это поле не используется — описание звука
кладите в task_data.text (SFX) или task_data.prompt (Music).
Согласие доплатить из LMC-баланса, когда квоты подписки не хватило на весь заказ. В норме не нужно: добор списывается автоматически, а поле игнорируется. Оно действует только в режиме отката к явному подтверждению, который может включить оператор платформы, — правила ниже описывают этот режим.
Порядок списания всегда один: сначала квота подписки, LMC — только за остаток. Если квоты хватает, флаг ничего не меняет и баланс не трогается вообще.
Один флаг ничего не спишет. Согласие действительно только вместе со свежим
quote_token из ответа 402, привязанным к вам, сервису и точному объёму задачи.
Присланный без токена (или с истёкшим/чужим) confirm_payg_topup: true снова
вернёт 402 — списания не произойдёт.
Рабочий цикл: отправили заказ → 402 с shortfall_tokens, shortfall_lmc,
quote_token, expires_at → показали сумму пользователю → повторили тот же
запрос с confirm_payg_topup: true и этим quote_token. Токен живёт ~60 секунд.
Согласие — верхняя граница: если к моменту списания добор подешевел, спишется
фактическая сумма; если подорожал (параллельный заказ съел квоту) — 409
quote_mismatch, запросите 402 заново.
Подписанная котировка добора из ответа 402 — передавайте строку «как есть»,
вместе с confirm_payg_topup: true.
Токен привязан к пользователю, сервису и объёму задачи и живёт ~60 секунд.
Просроченный, изменённый или выданный на другой заказ токен не действует:
запрос вернёт 402 с новой котировкой.
Входные файлы — только multipart/form-data, до 20 МБ на файл. Одиночный файл
можно прислать полем input_file.
| Тип задачи | Файл |
|---|---|
tts (озвучка) | .txt — полноценная замена input_text: содержимое читается как текст озвучки |
voice_search | Аудиофрагмент, обязателен. Тип проверяется по содержимому, не по расширению; чужой формат (картинка, архив) → 422 до списания. Длиннее 60 секунд — обрезается, признак придёт в результате |
sfx, music | Не используются — всё описание в task_data |
Показать пример
{
"template_id": "4d3e9f8b-2c1a-4f5a-8b9c-0d1e2f3a4b5c",
"task_type": "sfx",
"name": "Приветствие для лендинга",
"task_data": {
"text": "Тяжёлая деревянная дверь скрипит и захлопывается",
"duration_seconds": 4
},
"config_override": {
"tts_settings": {
"voice_id": "EXAVITQu4vr4xnSDxMaL"
}
},
"skip_service_defaults": false,
"input_text": "Здравствуйте! Рады видеть вас в Lumean.",
"confirm_payg_topup": false,
"quote_token": "string",
"input_files": [
"<binary>"
]
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
StoreTemplateRequest
objectНовый шаблон генерации. config валидируется по схеме сервиса — структуру
для нужного service_key берите из GET /templates/config-options.
UUID вашей папки. Не передан — шаблон создаётся в корне.
Код сервиса, под который создаётся шаблон: короткая латинская строка — elevenlabs, heygen, lumimg, sfx, music. Доступные вам коды перечисляет GET /usage в поле service_code; от этого выбора зависит, что примет config.
Название шаблона, до 255 символов. Видно в GET /templates и в интерфейсе.
Опубликовать шаблон в общем каталоге. По умолчанию false — шаблон виден только вам.
Настройки генерации. Структура зависит от service_key; допустимые ключи, диапазоны
и списки значений отдаёт GET /templates/config-options?service=<код> — берите их
оттуда, а не угадывайте.
Минимальный валидный config для elevenlabs:
{"tts_settings": {"mode": "mode_v1", "model_id": "eleven_multilingual_v2", "voice_id": "<VOICE_ID>", "advanced_voice_settings": true, "voice_settings": {"stability": 0.5, "similarity_boost": 0.75, "use_speaker_boost": true, "speed": 1.0}}}
Тонкие настройки голоса включаются флагом
Что из voice_settings доезжает до движка озвучки, зависит от модели и флага
tts_settings.advanced_voice_settings (по умолчанию false):
| Модель | Без флага | С флагом |
|---|---|---|
eleven_v3, eleven_v3_beta | stability | все пять |
eleven_v4, eleven_v4_exp | stability, similarity_boost | все пять |
| остальные | все пять | все пять |
Не доехавшие значения сохранятся в шаблоне и пройдут валидацию, но на звук не
повлияют. Ошибки не будет: это выглядит как «настройка не работает» — чаще всего
со speed на v3/v4.
Зависимость той же природы есть и у voice_settings.stability: на моделях
семейства eleven_v3 шаг равен 0.5, то есть принимаются только 0, 0.5 и 1.
Сшивка просодии между фрагментами
Длинный текст режется на фрагменты, и каждый озвучивается своим запросом —
поэтому на стыках слышен перепад интонации. Два необязательных булевых флага
просят движок учитывать соседей: tts_settings.prev_next_text передаёт текст
соседних фрагментов, tts_settings.request_ids — идентификаторы соседних
генераций. Оба по умолчанию false. Флаги влияют только на звучание стыков,
стоимость и разбиение на фрагменты не меняют.
Включить можно только ОДИН из них. Оба сразу — 422: получив и текст, и
идентификаторы, движок использует только идентификаторы и текст игнорирует,
так что «включено оба» было бы тихо выключенным prev_next_text.
Нормализация текста
tts_settings.apply_text_normalization — три режима: auto (движок сам решает,
нужна ли нормализация, например читать ли числа словами), on (применять
всегда), off (пропускать). По умолчанию auto.
Показать пример
{
"folder_id": "string",
"service_key": "elevenlabs",
"name": "Диктор — женский, спокойный",
"is_public": false,
"config": {}
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
TemplateList
objectitemsобязательноеЗаписи текущей страницы в порядке сортировки списка.
array<Template>Template
Записи текущей страницы в порядке сортировки списка.
UUID шаблона. Его кладут в template_id при создании заказа.
ID владельца шаблона.
Короткий публичный идентификатор для расшаривания. null у шаблона, которым не делились.
Название шаблона — только для человека, на поведение генерации не влияет.
Код сервиса, по схеме которого валидируется config: elevenlabs, lumimg и т. д.
Сервис шаблона справочно: название и тарификация, без схем конфигурации. null означает, что сервиса с таким кодом больше нет.
Настройки генерации: голос, модель, скорость и прочее — набор ключей задаёт сервис. Допустимые значения смотрите в GET /templates/config-options?service=<код>, значение вне схемы отклоняется с 422. В заказе (template в GET /orders/{order}) это настройки самого заказа — снимок на момент его создания с config_override, а не текущий конфиг шаблона (у заказов, созданных до конца сентября 2026 года, — текущий конфиг шаблона с config_override).
Опубликован ли шаблон в общем каталоге.
UUID папки, в которой лежит шаблон, либо null для корня. Структура папок видна в GET /templates/browse.
Когда шаблон создан, ISO 8601.
Когда шаблон последний раз менялся, ISO 8601.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
Показать пример
{
"items": [
{
"id": "string",
"user_id": 1,
"slug": "string",
"name": "string",
"service_key": "string",
"service": {
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": [
null
],
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
},
"config": {},
"is_public": true,
"folder_id": "string",
"created_at": "string",
"updated_at": "string"
}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}Используется в операциях: 1
TemplateItem
objectПоказать пример
{
"type": "template",
"id": "string",
"name": "string",
"slug": "string",
"service_key": "string",
"service": {
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": [
"string"
],
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
},
"config": {},
"is_public": "string",
"folder_id": "string",
"created_at": "string",
"updated_at": "string"
}Используется в операциях: 1
Template
objectUUID шаблона. Его кладут в template_id при создании заказа.
ID владельца шаблона.
Короткий публичный идентификатор для расшаривания. null у шаблона, которым не делились.
Название шаблона — только для человека, на поведение генерации не влияет.
Код сервиса, по схеме которого валидируется config: elevenlabs, lumimg и т. д.
Сервис шаблона справочно: название и тарификация, без схем конфигурации. null означает, что сервиса с таким кодом больше нет.
Настройки генерации: голос, модель, скорость и прочее — набор ключей задаёт сервис. Допустимые значения смотрите в GET /templates/config-options?service=<код>, значение вне схемы отклоняется с 422. В заказе (template в GET /orders/{order}) это настройки самого заказа — снимок на момент его создания с config_override, а не текущий конфиг шаблона (у заказов, созданных до конца сентября 2026 года, — текущий конфиг шаблона с config_override).
Опубликован ли шаблон в общем каталоге.
UUID папки, в которой лежит шаблон, либо null для корня. Структура папок видна в GET /templates/browse.
Когда шаблон создан, ISO 8601.
Когда шаблон последний раз менялся, ISO 8601.
Показать пример
{
"id": "string",
"user_id": 1,
"slug": "string",
"name": "string",
"service_key": "string",
"service": {
"id": 1,
"code": "string",
"name": "string",
"display_name": "string",
"label": [
"string"
],
"payg_access": "string",
"billing_mode": "subscription",
"unit_asset_id": 1,
"unit_asset": {
"id": 1,
"code": "string",
"kind": "money",
"precision": 1,
"name": "string",
"deleted_at": "string",
"created_at": "string",
"updated_at": "string"
},
"required_entitlement_id": 1,
"required_entitlement": {
"id": 1,
"code": "string",
"name": "string",
"metadata": {},
"is_active": true,
"created_at": "string",
"updated_at": "string",
"is_unlimited": true
},
"units_per_call": 1,
"units_per_char": 1,
"units_per_image": 1,
"units_per_second": 1,
"min_billable_chars": 1,
"lumcoin_per_token": 1,
"lumc_precision": 1,
"price_lumc_minor": 1,
"unit_size": 1,
"uses_money_first_pricing": true,
"rate_unit": "string",
"display_category": "string",
"is_premium": true,
"display_order": 1,
"metadata": {},
"is_active": true,
"maintenance_mode": true,
"access_level": "string",
"maintenance_auto_resume": true,
"maintenance_started_at": "string",
"maintenance_note": "string",
"created_at": "string",
"updated_at": "string"
},
"config": {},
"is_public": true,
"folder_id": "string",
"created_at": "string",
"updated_at": "string"
}UpdateTemplateRequest
objectЧастичное обновление шаблона: передавайте только изменяемые поля. service_key
и config меняются вместе — конфиг валидируется по схеме нового сервиса.
UUID папки, в которую переместить шаблон. null — перенести в корень.
Новый код сервиса. Меняется только вместе с config — конфиг валидируется по схеме нового сервиса.
Новое название шаблона, до 255 символов.
Опубликовать шаблон в общем каталоге или снять с публикации.
Новые настройки генерации целиком (не частичный патч). Допустимая структура — GET /templates/config-options?service=<код>.
Показать пример
{
"folder_id": "string",
"service_key": "elevenlabs",
"name": "string",
"is_public": true,
"config": {}
}Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
UserLibraryList
objectЗаписи текущей страницы в порядке сортировки списка.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
Показать пример
{
"items": [
{}
],
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}Используется в операциях: 1
VoiceLanguage
objectВнутренний идентификатор языковой версии голоса.
Код языка, ISO-639-1. Он же — ключ в preview_urls.
Состояние клонирования для этого языка. Заказ принимается только на языке, где клон готов.
Длительность референсной записи в миллисекундах — на ней обучен клон.
Версия обученной модели. Растёт при переобучении голоса.
Почему клонирование не удалось. null, если сбоя не было.
Когда клонирование началось, ISO 8601.
Когда клонирование завершилось, ISO 8601. null — ещё идёт либо не удалось.
Когда языковая версия последний раз менялась, ISO 8601.
Показать пример
{
"id": 1,
"language_code": "string",
"status": "string",
"reference_duration_ms": 1,
"model_version": 1,
"failure_reason": "string",
"clone_started_at": "string",
"clone_completed_at": "string",
"updated_at": "string"
}Используется в операциях: 3
VoiceTag
objectВнутренний идентификатор метки.
Код метки — устойчивое значение для фильтрации, в отличие от переводимого name.
Название метки на языке аккаунта.
Пояснение к метке на языке аккаунта, если автор его задал.
Цвет метки в HEX — подсказка для оформления.
Вес сортировки в списке меток: меньше — выше.
Показать пример
{
"id": 1,
"code": "string",
"name": "string",
"description": "string",
"color": "string",
"sort_order": 1
}Используется в операциях: 4
AssetKind
string- money
- unit
Показать пример
"money"BillingMode
string- subscription
- pay_as_you_go
Показать пример
"subscription"Ни одна операция справочника не ссылается на эту схему напрямую — она встречается внутри других объектов.
TaskType
string- tts
- image
- txt2img
- remix
- image_edit
- voice_clone
- sfx
- music
- voice_search
Показать пример
"tts"Используется в операциях: 5
Скормить страницу ИИ
спека 0.0.1