GET /orders
Возвращает пагинированный список заказов пользователя (владельца ключа).
Поправки к спецификации · 3
OrderListобъявлен массивом, а приходит объектВ спеке схема
OrderList—{"type":"array","items":{}}, но пример ответа и сам сервис отдают объект со страницей:items[],current_page,last_page,per_page,total. Таблица полей ниже описывает настоящий ответ. Кодогенератор SDK, собранный прямо по спеке, на этом месте сделаетOrder[]и сломается — правьте тип руками.В enum
TaskTypeне хватаетvoice_searchСпека перечисляет восемь типов задач, сервис принимает девять:
voice_search(подбор похожих голосов по аудиофрагменту) в enum не попал, хотя работает и валидацию проходит. Мы дописали его в списки на этой странице.Терминальных статусов пять, а не четыре
Описание поля
Order.statusназывает терминальнымиcompleted,failed,cancelled,compensatedи забываетresult_delivered— заказ в нём тоже больше не изменится, а опрос в цикле никогда не закончится. Полный список берите из описания фильтраstatusвGET /orders:completed,result_delivered,failed,compensated,cancelled.
Фильтрация:
status— статус заказа. Допустимые значения:created,pending,in_progress,completed,result_delivered,failed,compensated,cancelled,partially_completed. Неизвестное значение → 422.template_id— UUID шаблона.task_type[]— тип задачи, множественный:?task_type[]=tts&task_type[]=sfx. Известные значения:tts,image,txt2img,remix,image_edit,voice_clone,sfx,music,voice_search. Список расширяется при подключении новых сервисов; неизвестный тип вернёт пустой список, а не ошибку.
Терминальные статусы (заказ больше не изменится): completed,
result_delivered, failed, compensated, cancelled.
Требуемое право ключа: orders.read.
На этой странице(4)
Параметры
Поля ввода живут прямо в строке запроса: подставьте значение — и получите готовый URL. Ниже — тип, обязательность и допустимые значения каждого параметра.
- integerв queryнеобязательный≥ 1
Номер страницы, начиная с
1. - integerв queryнеобязательный1..100
Записей на странице,
1..100. По умолчанию 20. - OrderStatusв queryнеобязательный
Вернуть только заказы в этом статусе. Неизвестное значение →
422.Терминальные (заказ больше не изменится):
completed,result_delivered,failed,compensated,cancelled. Нетерминальныйpartially_completedозначает, что часть чанков не удалась и ждёт вашего действия — см.POST /orders/{order}/items/{item}/retry.Допустимые значения - stringв queryнеобязательныйuuid
Вернуть только заказы, созданные по этому шаблону (UUID из
GET /templates). - array<string>в queryнеобязательный
Фильтр по типу задачи, множественный:
?task_type[]=tts&task_type[]=sfx. Одиночная строка (?task_type=tts) тоже принимается.Известные значения:
tts,image,txt2img,remix,image_edit,voice_clone,sfx,music,voice_search. Список расширяется при подключении новых сервисов, поэтому фильтр намеренно мягкий: неизвестный тип вернёт пустой список, а не422.
Возможные ответы
200Список заказов
Список заказов
{
"success": true,
"message": "Orders list retrieved successfully.",
"data": {
"items": [
{
"id": "c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
"user_id": 501,
"template": null,
"template_id": null,
"task_type": "music",
"status": "completed",
"price_units": 6000,
"total_tokens": 6000,
"task_data": {
"n_variants": 3,
"lyrics_text": null,
"force_instrumental": true,
"music_length_ms": 30000,
"model_id": "music_v2",
"prompt": "Lo-fi hip hop, calm, rainy night, vinyl crackle"
},
"result": {
"user_message": null,
"files": [
"storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/0/result.mp3",
"storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/1/result.mp3",
"storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/2/result.mp3"
]
},
"created_at": "2026-07-17T12:10:00+00:00",
"updated_at": "2026-07-17T12:11:20+00:00",
"eta_seconds": null,
"eta_at": null,
"completed_chunks": 3,
"total_chunks": 3,
"progress_percent": 100,
"items": [
{
"id": "d8e9f0a1-2b3c-4d4e-8f5a-6b7c8d9e0f1a",
"order_id": "c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
"item_type": "chunk",
"chunk_index": 0,
"parent_item_id": null,
"original_text_length": 0,
"current_text_length": 0,
"price_units": 2000,
"consumed_units": 2000,
"remaining_locked": 0,
"status": "completed",
"result_file": "storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/0/result.mp3",
"attempt_number": 1,
"can_retry": false,
"can_regenerate": true,
"created_at": "2026-07-17T12:10:05+00:00",
"updated_at": "2026-07-17T12:11:00+00:00"
},
{
"id": "e9f0a1b2-3c4d-4e5f-8a6b-7c8d9e0f1a2b",
"order_id": "c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
"item_type": "chunk",
"chunk_index": 1,
"parent_item_id": null,
"original_text_length": 0,
"current_text_length": 0,
"price_units": 2000,
"consumed_units": 2000,
"remaining_locked": 0,
"status": "completed",
"result_file": "storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/1/result.mp3",
"attempt_number": 1,
"can_retry": false,
"can_regenerate": true,
"created_at": "2026-07-17T12:10:05+00:00",
"updated_at": "2026-07-17T12:11:10+00:00"
},
{
"id": "f0a1b2c3-4d5e-4f6a-8b7c-8d9e0f1a2b3c",
"order_id": "c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
"item_type": "chunk",
"chunk_index": 2,
"parent_item_id": null,
"original_text_length": 0,
"current_text_length": 0,
"price_units": 2000,
"consumed_units": 2000,
"remaining_locked": 0,
"status": "completed",
"result_file": "storage/501/orders/c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f/output/chunks/2/result.mp3",
"attempt_number": 1,
"can_retry": false,
"can_regenerate": true,
"created_at": "2026-07-17T12:10:05+00:00",
"updated_at": "2026-07-17T12:11:20+00:00"
}
]
},
{
"id": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"user_id": 501,
"template": null,
"template_id": null,
"task_type": "sfx",
"status": "in_progress",
"price_units": 50,
"total_tokens": 0,
"task_data": {
"prompt_influence": 0.3,
"duration_seconds": 6,
"loop": false,
"output_format": "mp3_44100_128",
"text": "Footsteps on gravel, then a door creaks open."
},
"result": null,
"created_at": "2026-07-17T12:05:00+00:00",
"updated_at": "2026-07-17T12:05:00+00:00",
"eta_seconds": 45,
"eta_at": "2026-07-17T12:05:45+00:00",
"completed_chunks": 0,
"total_chunks": 1,
"progress_percent": 0,
"items": [
{
"id": "a6b7c8d9-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"order_id": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"item_type": "chunk",
"chunk_index": 0,
"parent_item_id": null,
"original_text_length": 0,
"current_text_length": 0,
"price_units": 50,
"consumed_units": 0,
"remaining_locked": 50,
"status": "processing",
"result_file": null,
"attempt_number": 1,
"can_retry": false,
"can_regenerate": false,
"created_at": "2026-07-17T12:05:00+00:00",
"updated_at": "2026-07-17T12:05:00+00:00"
}
]
},
{
"id": "9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c",
"user_id": 501,
"template": {
"id": "7e2a4c1d-8b3f-4a5e-9c6d-1f2e3a4b5c6d",
"user_id": 501,
"slug": null,
"name": "Narrator Voice (EN)",
"service_key": "elevenlabs",
"service": {
"id": 3,
"code": "elevenlabs",
"name": "ElevenLabs",
"display_name": null,
"payg_access": "everyone",
"billing_mode": "pay_as_you_go",
"unit_asset_id": 5,
"unit_asset": {
"id": 5,
"code": "tts_units",
"kind": "unit",
"precision": 0,
"name": "TTS Units",
"deleted_at": null,
"created_at": "2026-01-10T09:00:00+00:00",
"updated_at": "2026-01-10T09:00:00+00:00"
},
"required_entitlement_id": null,
"units_per_call": null,
"units_per_char": 1,
"units_per_image": null,
"units_per_second": null,
"min_billable_chars": null,
"lumcoin_per_token": null,
"lumc_precision": 2,
"price_lumc_minor": null,
"unit_size": 1,
"uses_money_first_pricing": false,
"rate_unit": null,
"display_category": null,
"is_premium": false,
"display_order": 0,
"metadata": null,
"is_active": true,
"created_at": "2026-01-10T09:00:00+00:00",
"updated_at": "2026-01-10T09:00:00+00:00"
},
"config": null,
"is_public": false,
"folder_id": null,
"created_at": "2026-06-01T10:00:00+00:00",
"updated_at": "2026-06-01T10:00:00+00:00"
},
"template_id": "7e2a4c1d-8b3f-4a5e-9c6d-1f2e3a4b5c6d",
"task_type": "tts",
"status": "completed",
"price_units": 420,
"total_tokens": 420,
"task_data": {
"text": "Welcome to our platform! This narration greets every new listener.",
"total_length": 420
},
"result": {
"user_message": null,
"files": [
"storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/final/result.mp3"
],
"service_files": [
"storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/final/service/subtitles.srt",
"storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/final/service/subtitles.vtt",
"storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/final/service/result.json"
]
},
"created_at": "2026-07-17T12:00:00+00:00",
"updated_at": "2026-07-17T12:02:50+00:00",
"eta_seconds": null,
"eta_at": null,
"completed_chunks": 2,
"total_chunks": 2,
"progress_percent": 100,
"items": [
{
"id": "d4e5f6a7-8b9c-4d0e-8f1a-2b3c4d5e6f7a",
"order_id": "9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c",
"item_type": "chunk",
"chunk_index": 0,
"parent_item_id": null,
"original_text_length": 240,
"current_text_length": 240,
"price_units": 240,
"consumed_units": 240,
"remaining_locked": 0,
"status": "completed",
"result_file": {
"path": "storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/chunks/0/result.mp3",
"storage": "s3",
"name": "chunk_0.mp3",
"size": 512340,
"mime_type": "audio/mpeg",
"size_formatted": "500.33 KB"
},
"attempt_number": 1,
"can_retry": false,
"can_regenerate": true,
"created_at": "2026-07-17T12:00:05+00:00",
"updated_at": "2026-07-17T12:02:10+00:00"
},
{
"id": "e5f6a7b8-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
"order_id": "9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c",
"item_type": "chunk",
"chunk_index": 1,
"parent_item_id": null,
"original_text_length": 180,
"current_text_length": 180,
"price_units": 180,
"consumed_units": 180,
"remaining_locked": 0,
"status": "completed",
"result_file": {
"path": "storage/501/orders/9f8b2c1a-4d3e-4f5a-8b9c-0d1e2f3a4b5c/output/chunks/1/result.mp3",
"storage": "s3",
"name": "chunk_1.mp3",
"size": 398210,
"mime_type": "audio/mpeg",
"size_formatted": "388.88 KB"
},
"attempt_number": 1,
"can_retry": false,
"can_regenerate": true,
"created_at": "2026-07-17T12:00:05+00:00",
"updated_at": "2026-07-17T12:02:45+00:00"
}
]
}
],
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 3
}
}Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь true, а ошибка приходит телом другой формы, где этого поля может не быть вовсе.
Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются.
dataобязательноеСтраница заказов владельца ключа, новые сверху. Чанков (items) в списке нет — за ними идите в GET /orders/{order}.
OrderListOrderList
Страница заказов владельца ключа, новые сверху. Чанков (items) в списке нет — за ними идите в GET /orders/{order}.
itemsобязательноеЗаписи текущей страницы в порядке сортировки списка.
array<Order>Order
Записи текущей страницы в порядке сортировки списка.
UUID заказа. Его подставляют в пути /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), которые обслуживаются по одной. У остальных типов задач поля нет.
Оценка ожидания в очереди поиска голоса, в секундах. Оценка, а не обещание: пересчитывается на каждый ответ.
Номер текущей страницы, с единицы.
Номер последней страницы. Обход списка закончен, когда current_page равен last_page.
Размер страницы, применённый сервером.
Сколько записей всего по фильтру.
401Невалидный или отсутствующий X-API-KEY
Невалидный или отсутствующий X-API-KEY
{
"success": false,
"message": "API key is missing. Provide it in the X-API-KEY header.",
"data": null
}Всегда false в ответах об ошибке.
Текст ошибки на языке ключа (задаётся заголовком X-Locale).
Всегда null, когда запрос отклонён до обработки.
403У ключа нет права orders.read
У ключа нет права orders.read
{
"success": false,
"message": "This API key does not have permission to perform this action."
}Всегда false в ответах об ошибке.
Текст ошибки на языке ключа (задаётся заголовком X-Locale).
422Ошибка валидации. Поля с ошибками перечислены в errors.
Ошибка валидации. Поля с ошибками перечислены в errors.
{
"message": "string",
"errors": {}
}Errors overview.
errorsобязательноеA detailed description of each field that failed validation.
object
A detailed description of each field that failed validation.
События, которые это порождает
Ход выполнения приезжает по WebSocket: опрашивать заказ в цикле не обязательно. Подписка требует того же права, что и чтение заказов.
Рядом
Скормить страницу ИИ
спека 0.0.1