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

GET/orders

Возвращает пагинированный список заказов пользователя (владельца ключа).

Поправки к спецификации · 3

  • OrderList объявлен массивом, а приходит объект

    В спеке схема OrderList — {"type":"array","items":{}}, но пример ответа и сам сервис отдают объект со страницей: items[], current_page, last_page, per_page, total. Таблица полей ниже описывает настоящий ответ. Кодогенератор SDK, собранный прямо по спеке, на этом месте сделает Order[] и сломается — правьте тип руками.

  • Терминальных статусов пять, а не четыре

    Описание поля 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. Ниже — тип, обязательность и допустимые значения каждого параметра.

GEThttps://api.lumean.app/api/public/orders
  • 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
  }
}
Поля ответа
successобязательное

Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь true, а ошибка приходит телом другой формы, где этого поля может не быть вовсе.

boolean
messageобязательное

Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются.

string
dataобязательное

Страница заказов владельца ключа, новые сверху. Чанков (items) в списке нет — за ними идите в GET /orders/{order}.

OrderListOrderList
itemsобязательное

Записи текущей страницы в порядке сортировки списка.

array<Order>Order
элемент массива
idобязательное

UUID заказа. Его подставляют в пути /orders/{order}/… и передают в POST /orders/{order}/retry.

string
user_idобязательное

ID владельца заказа. У заказов, созданных по API-ключу, это всегда владелец ключа — чужой заказ по ключу не увидеть.

integer
nameобязательное

Название заказа: из него берутся имя скачиваемого файла и имя ZIP-архива.

string
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
idобязательное

UUID шаблона. Его кладут в template_id при создании заказа.

string
user_idобязательное

ID владельца шаблона.

integer
slugобязательное

Короткий публичный идентификатор для расшаривания. null у шаблона, которым не делились.

string
nameобязательное

Название шаблона — только для человека, на поведение генерации не влияет.

string
service_keyобязательное

Код сервиса, по схеме которого валидируется config: elevenlabs, lumimg и т. д.

string
serviceобязательное

Сервис шаблона справочно: название и тарификация, без схем конфигурации. null означает, что сервиса с таким кодом больше нет.

может быть null
Service | null
configобязательное

Настройки генерации: голос, модель, скорость и прочее — набор ключей задаёт сервис. Допустимые значения смотрите в GET /templates/config-options?service=<код>, значение вне схемы отклоняется с 422. В заказе (template в GET /orders/{order}) это настройки самого заказа — снимок на момент его создания с config_override, а не текущий конфиг шаблона (у заказов, созданных до конца сентября 2026 года, — текущий конфиг шаблона с config_override).

object
is_publicобязательное

Опубликован ли шаблон в общем каталоге.

boolean
folder_idобязательное

UUID папки, в которой лежит шаблон, либо null для корня. Структура папок видна в GET /templates/browse.

string
created_atобязательное

Когда шаблон создан, ISO 8601.

может быть nulldate-time
string
updated_atобязательное

Когда шаблон последний раз менялся, ISO 8601.

может быть nulldate-time
string
template_idобязательное

UUID использованного шаблона либо null, если заказ создан без шаблона.

string
task_typeобязательное

Тип задачи — он определяет, что лежит в task_data и что придёт в result.

Значенияttsimagetxt2imgremiximage_editvoice_clonesfxmusicvoice_search
TaskTypeTaskType
statusобязательное

Текущее состояние заказа. Терминальные — completed, failed, cancelled, compensated; опрашивать заказ дальше смысла нет.

partially_completed — часть чанков готова, часть упала: файлы уже можно забирать, а сбойные фрагменты перезапускать через POST /orders/{order}/items/retry-failed.

Значенияcreatedpendingin_progresscompletedresult_deliveredfailedcompensatedcancelledpartially_completed
OrderStatusOrderStatus
price_unitsобязательное

Заблокированная под заказ сумма в минимальных единицах LMC. Показывать это число как есть нельзя: реальное значение — price_units / 10^precision, где precision берётся из актива рядом. Готовое к показу значение лежит в соседнем decimal-поле.

integer
price_formattedобязательное

Та же сумма, что и price_units, но в целых LMC — готова к показу. null, пока стоимость не зафиксирована.

может быть null
number
currency_assetобязательное

Актив суммы — всегда LMC. Его precision нужен, чтобы перевести минимальные единицы в реальное значение.

AssetAsset
idобязательное

Внутренний идентификатор актива.

integer
codeобязательное

Код актива: LUMC — внутренняя валюта, TOKEN — токены генерации.

string
kindобязательное

Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты.

Значенияmoneyunit
AssetKindAssetKind
precisionобязательное

Число десятичных знаков. Ключевое поле: любая целая сумма этого актива делится на 10^precision, чтобы получить реальное значение. Не считайте, что делитель равен 100.

integer
nameобязательное

Название актива для показа, на языке аккаунта.

string
deleted_atобязательное

Когда актив выведен из обращения, ISO 8601. null у действующего.

может быть nulldate-time
string
created_atобязательное

Когда актив заведён, ISO 8601.

может быть nulldate-time
string
updated_atобязательное

Когда актив последний раз менялся, ISO 8601.

может быть nulldate-time
string
total_tokensобязательное

Полная стоимость заказа в токенах: исходные чанки плюс все повторы и перегенерации. Это единица квоты, а не деньги.

может быть null
integer
total_duration_msобязательное

Суммарная длительность полученного аудио в миллисекундах. Это длина результата, а не время, потраченное на генерацию.

может быть null
integer
task_dataобязательное

Входные данные задачи ровно в том виде, в каком их принял сервер: текст, ссылки на загруженные файлы, применённые настройки. Набор ключей зависит от task_type.

может быть null
object
resultобязательное

Результат выполнения. files[] — основные файлы; service_files[] — вспомогательные (субтитры .srt/.vtt/.lrc, alignment) у TTS-заказов. Пути абсолютные и готовы к передаче в POST /storage/url.

null, пока заказ не завершён, а также у упавшего заказа: подробностей ошибки в публичном контуре нет.

может быть null
object
created_atобязательное

Когда заказ создан, ISO 8601.

может быть nulldate-time
string
updated_atобязательное

Когда заказ последний раз менялся, ISO 8601. Растёт на каждом переходе статуса — годится как дешёвый признак «что-то произошло».

может быть nulldate-time
string
files_expire_atобязательное

Срок хранения файлов заказа. files_expire_at — момент удаления (null, если заказ ещё не завершён или файлы уже удалены); files_expired — файлов больше нет, скачивать нечего.

может быть null
string
files_expiredобязательное

true — срок хранения истёк и файлы уже удалены: ссылку на них получить нельзя, заказ нужно создавать заново.

boolean
retentionобязательное

Сроки хранения по уровням файлов. Пофрагментные дорожки склеенного заказа удаляются раньше самого результата.

object
chunksобязательное

Срок жизни пофрагментных дорожек — ими работают правка пауз, пересборка финала и перегенерация отдельного фрагмента.

object
expires_atобязательное

Когда исчезнут пофрагментные дорожки, ISO 8601. До этого момента доступны правка пауз, пересборка и перегенерация отдельного фрагмента. null — заказ ещё не завершён (отсчёт не начат) либо фрагментов уже нет.

string
expiredобязательное

true — пофрагментных дорожек больше нет: правка и пересборка отклоняются. Готовый результат при этом может быть ещё доступен — смотрите retention.files.

boolean
expires_earlyобязательное

true — фрагменты исчезнут раньше результата (заказ склеен в отдельный файл). false — фрагменты и есть результат, оба уровня истекают одновременно.

boolean
reasonобязательное

Почему фрагменты недоступны: chunks_purged — удалены по своему сроку, результат ещё на месте; storage_expired — удалены все файлы заказа. null — фрагменты доступны.

может быть null
Значенияchunks_purgedstorage_expired
string
filesобязательное

Срок жизни всех файлов заказа, включая результат. Дублирует поля files_expire_at / files_expired верхнего уровня.

object
expires_atобязательное

Когда будут удалены все файлы заказа, ISO 8601. То же значение, что в files_expire_at — поле верхнего уровня сохранено для совместимости.

может быть null
string
expiredобязательное

То же, что files_expired: файлов больше нет, скачивать нечего.

boolean
eta_secondsобязательное

Оценка оставшегося времени, в секундах — только пока заказ выполняется. У завершённого и у ещё не начатого null.

может быть null
integer
eta_atобязательное

Ожидаемый момент готовности, ISO 8601 — тот же прогноз, что и eta_seconds, только абсолютным временем.

может быть nulldate-time
string
completed_chunksобязательное

Сколько исходных чанков уже готово. Повторы и перегенерации сюда не входят — иначе прогресс уезжал бы выше 100 %.

может быть null
integer
total_chunksобязательное

Сколько исходных чанков в заказе всего. Ноль означает, что разбиение ещё не выполнено.

может быть null
integer
progress_percentобязательное

Готовность в процентах, 0–100 — производная от completed_chunks и total_chunks, считать самому не нужно.

может быть null
integer
stitchingобязательное

true — идёт склейка аудио: результат ещё не финальный. Бывает и при status = completed — после перегенерации фрагмента финал пересобирается, и до конца склейки result указывает на прежнюю дорожку. Скачивать итог — когда stitching = false.

boolean
paragraphsобязательное

Сводка по абзацам: индекс, число фрагментов, общий статус и прогресс каждого абзаца. null — заказ создан в обычном режиме, ориентируйтесь на items[]. Чтобы абзацы появились, создавайте заказ с config_override.generation_mode = paragraph (подробности — в описании этого поля).

может быть null
array<object>
элемент массива
paragraph_indexобязательное

Номер абзаца, с нуля.

integer
chunks_countобязательное

Сколько чанков попало в этот абзац.

integer | number
completed_chunksобязательное

Сколько чанков абзаца уже готово.

string | integer
statusобязательное

Сводный статус абзаца: он выводится из статусов его чанков, а не хранится отдельно. Словарь свой, короче общего: pending, in_progress, failed, completed — заблокированный модерацией чанк тоже даёт failed. Считаются только исходные чанки, поэтому успешный повтор упавшего фрагмента статус абзаца НЕ меняет: смотрите на сам фрагмент в items[].

string
progress_percentобязательное

Готовность абзаца в процентах, 0–100.

integer
result_fileобязательное

Склеенное аудио абзаца целиком: абсолютный путь либо структура с путём и размером. Скачивается через POST /storage/url, как и остальные файлы заказа. null читается по-разному в зависимости от chunks_count: при chunks_count = 1 собственного файла у абзаца нет и не будет — абзац это и есть тот единственный фрагмент, берите его result_file из items[] по тому же paragraph_index; при chunks_count > 1 склейки ещё не было — многочанковый абзац получает файл ТОЛЬКО после неё, никогда заранее.

может быть null
string
itemsнеобязательное

Чанки заказа. Приходят в детальном ответе GET /orders/{order}; в списке GET /orders поля нет — за ними идите в GET /orders/{order}/items.

array<OrderItem>OrderItem
элемент массива
idобязательное

UUID чанка. Подставляется в пути /orders/{order}/items/{item}/….

string
order_idобязательное

UUID заказа, которому принадлежит чанк.

string
item_typeобязательное

Природа записи: chunk — исходный фрагмент, retry — бесплатный повтор упавшего фрагмента, regeneration — платная переделка готового.

Повторы и перегенерации живут отдельными записями с тем же chunk_index: история попыток сохраняется целиком, а звучит в результате последняя.

string
chunk_indexобязательное

Порядковый номер фрагмента в заказе, с нуля. Задаёт порядок склейки итогового файла.

может быть null
integer
paragraph_indexобязательное

Номер абзаца, к которому относится фрагмент, — заполняется только у исходных фрагментов абзацного заказа. null и в обычном режиме, и у записей повтора либо перегенерации: у них своей привязки к абзацу нет, её берут у родительского фрагмента через parent_item_id. Режим включается ключом generation_mode в config_override заказа.

string
parent_item_idобязательное

UUID исходного чанка — у записей retry и regeneration. У самого исходного чанка null.

string
original_text_lengthобязательное

Длина текста, с которой фрагмент создавался. Служит потолком для text в regenerate.

integer
current_text_lengthобязательное

Длина актуального текста фрагмента: после перегенерации отличается от original_text_length.

integer
price_unitsобязательное

Стоимость фрагмента в токенах — это не деньги. Денежная сумма лежит у самого заказа, в его поле price_units (там LMC, здесь токены; поля называются одинаково, единицы разные).

integer
consumed_unitsобязательное

Сколько токенов фактически списано по этому фрагменту. У незавершённого фрагмента — 0.

integer
remaining_lockedобязательное

Сколько токенов ещё зарезервировано под фрагмент. Обнуляется, когда фрагмент завершается или отменяется.

integer
statusобязательное

Состояние фрагмента: pending — ждёт воркера, processing — в работе, completed — готов, failed — техническая ошибка, policy_flagged — отклонён контентной политикой.

Разница между двумя последними определяет способ лечения: failed чинится повтором как есть, policy_flagged — только переформулировкой текста, повтор с прежним будет отклонён снова.

string
result_fileобязательное

Файл готового фрагмента: абсолютный путь либо структура с путём и размером. Скачивается через POST /storage/url, как и файлы заказа. null, пока фрагмент не готов.

может быть null
object | string | null
duration_msобязательное

Длительность полученного аудио в миллисекундах — длина записи, а не время генерации. У не-аудио задач null.

может быть null
integer
attempt_numberобязательное

Номер попытки для этого фрагмента, начиная с 1. Растёт с каждым повтором.

integer
can_retryобязательное

Разрешён ли бесплатный повтор прямо сейчас. Учитывает статус, тип задачи и исчерпание попыток — проверять условия самому не нужно.

boolean
can_regenerateобязательное

Разрешена ли платная перегенерация прямо сейчас. Доступна только для завершённых фрагментов.

boolean
created_atобязательное

Когда фрагмент создан, ISO 8601.

может быть nulldate-time
string
updated_atобязательное

Когда фрагмент последний раз менялся, ISO 8601.

может быть nulldate-time
string
failure_reasonнеобязательное

Причина падения в машиночитаемом виде — есть только у failed и policy_flagged. Остальным приходит null.

может быть null
string
tokens_from_quotaнеобязательное

Сколько из потраченных токенов покрыла квота подписки. null — из квоты не покрыто ничего.

может быть null
integer
tokens_from_paygнеобязательное

Сколько токенов оплачено сверх квоты, из баланса LMC. null — доплаты не было.

может быть null
integer
tokens_spentнеобязательное

Итог по двум предыдущим полям: сколько токенов списано за заказ (квота + доплата). Заказ, покрытый безлимитом подписки, и бесплатные версии сюда не входят — у безлимитного заказа поле null; объём генерации — total_tokens. Повторы (retry) не входят — они не тарифицируются заново.

может быть null
integer
queue_positionнеобязательное

Место в очереди — только у задач поиска голоса (voice_search), которые обслуживаются по одной. У остальных типов задач поля нет.

может быть null
integer
queue_wait_secondsнеобязательное

Оценка ожидания в очереди поиска голоса, в секундах. Оценка, а не обещание: пересчитывается на каждый ответ.

может быть null
integer
current_pageобязательное

Номер текущей страницы, с единицы.

integer
last_pageобязательное

Номер последней страницы. Обход списка закончен, когда current_page равен last_page.

integer
per_pageобязательное

Размер страницы, применённый сервером.

integer
totalобязательное

Сколько записей всего по фильтру.

integer
401

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

Разобрать этот ответ
Пример тела
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
Поля ответа
successобязательное

Всегда false в ответах об ошибке.

boolean
messageобязательное

Текст ошибки на языке ключа (задаётся заголовком X-Locale).

string
dataобязательное

Всегда null, когда запрос отклонён до обработки.

может быть null
null
403

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

Разобрать этот ответ
Пример тела
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
Поля ответа
successобязательное

Всегда false в ответах об ошибке.

boolean
messageобязательное

Текст ошибки на языке ключа (задаётся заголовком X-Locale).

string
422

Ошибка валидации. Поля с ошибками перечислены в errors.

Разобрать этот ответ
Пример тела
{
  "message": "string",
  "errors": {}
}
Поля ответа
messageобязательное

Errors overview.

string
errorsобязательное

A detailed description of each field that failed validation.

object
*необязательное
произвольные ключи
array<string>

События, которые это порождает

Ход выполнения приезжает по WebSocket: опрашивать заказ в цикле не обязательно. Подписка требует того же права, что и чтение заказов.

Скормить страницу ИИ

Открыть .mdllm.md

спека 0.0.1