---
title: "private-orders.{userId}"
url: https://lumean.app/developers/docs/realtime/orders
locale: ru
description: "События по всем вашим заказам сразу."
generated: 2026-11-08
scopes: [orders.read]
spec_version: 1.0.0
---

# private-orders.{userId}

События по всем вашим заказам сразу.

- Право ключа: `orders.read`

## Параметры канала

| Поле | Тип | Описание | Пример |
| --- | --- | --- | --- |
| `userId` | `integer` | числовой идентификатор владельца ключа, его отдаёт `GET /user`. | `42` |

## События

### `.policy_cooldown.applied` — Policy cooldown applied

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `reason` | `string` | обяз. |  |
| `minutes` | `integer` | обяз. |  |
| `retry_after` | `integer` | обяз. |  |
| `retry_at` | `string` | обяз. |  |
| `level` | `integer` | обяз. |  |
| `threshold` | `integer` | обяз. |  |

### `.paragraph_regenerate.completed` — Paragraph regenerate completed

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string` | обяз. |  |
| `paragraph_index` | `integer` | обяз. |  |
| `created_count` | `integer` | обяз. |  |
| `failed_count` | `integer` | обяз. |  |

### `.order.queue.updated` — Order queue updated

Сдвинулось место заказа в очереди исполнителей — для всех типов задач, кроме `voice_search`. `queue_position` — сколько заказов стоит впереди, `0` — следующий; `null` — заказ вышел из очереди (исполнитель взял его в работу или заказ отменён), бейдж очереди пора убрать. Приходит только при изменении позиции, не чаще раза в ~2 с; сдвиги в зоне от 100 заказов не рассылаются — точное число в `GET /orders/{order}`. Позиция считается в заказах, а не в людях; несколько исполнителей берут задачи одновременно, поэтому число может уменьшаться скачками и работа может начаться при позиции больше нуля. `queue_wait_seconds` всегда `null`. Пропущенный кадр не повторяется: после переподключения перечитайте заказ по REST.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string` | обяз. |  |
| `queue_position` | `integer \| null` | обяз. |  |
| `queue_wait_seconds` | `integer \| null` | обяз. |  |

### `.created` — Created

Создан новый заказ.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order` | `object` | обяз. | Снимок заказа без списка чанков — он не помещается в лимит размера WebSocket-сообщения. Статус здесь всегда `created`; сами чанки берите из `GET /orders/{order}`. |
| `order.id` | `integer` | — |  |
| `order.uuid` | `string (uuid)` | — |  |
| `order.user_id` | `integer` | — |  |
| `order.status` | `string` — `created` · `queued` · `processing` · `completed` · `failed` · `cancelled` | — |  |
| `order.task_type` | `string \| null` | — |  |
| `order.total_amount` | `number` | — |  |
| `order.created_at` | `string (date-time)` | — |  |
| `order.template` | `object` | — |  |
| `items_summary` | `object` | обяз. | Сводка по чанкам заказа вместо полного списка. |
| `items_summary.total` | `integer` | обяз. |  |
| `items_summary.by_status` | `object<string, integer>` | обяз. | Сколько чанков в каждом статусе: `pending`, `processing`, `completed`, `failed`, `policy_flagged`. |

### `.progress` — Progress

Обновился общий прогресс заказа.

Прогресс по исходным чанкам заказа. Повторы и перегенерации в него не входят.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | обяз. |  |
| `completed` | `integer` | обяз. |  |
| `total` | `integer` | обяз. |  |
| `percent` | `integer` | обяз. |  |

### `.voice_search.queue.updated` — Voice search queue updated

Сдвинулась очередь поиска голоса — только для заказов `voice_search`, которые проверяются по одному. `queue_position` — сколько заказов стоит впереди, `0` — ваш заказ обрабатывается сейчас. `queue_wait_seconds` — оценка ожидания в секундах (оценка, а не обещание) или `null`, пока нет статистики. Те же значения приходят в полях заказа в REST.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string` | обяз. |  |
| `queue_position` | `integer` | обяз. |  |
| `queue_wait_seconds` | `integer \| null` | обяз. |  |

### `.bulk_retry.completed` — Bulk retry completed

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string` | обяз. |  |
| `created_count` | `integer` | обяз. |  |
| `failed_count` | `integer` | обяз. |  |

### `.renamed` — Renamed

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order` | `object` | обяз. |  |
| `order.id` | `string` | обяз. |  |
| `order.user_id` | `integer` | обяз. |  |
| `order.name` | `string \| null` | обяз. |  |
| `order.template` | `object` | обяз. |  |
| `order.template.id` | `string` | обяз. |  |
| `order.template.user_id` | `integer` | обяз. |  |
| `order.template.slug` | `string` | обяз. |  |
| `order.template.name` | `string` | обяз. |  |
| `order.template.service_key` | `string` | обяз. |  |
| `order.template.service` | `object \| null` | обяз. | Может прийти пустым (`null`). |
| `order.template.config` | `array<object>` | обяз. |  |
| `order.template.is_public` | `boolean` | обяз. |  |
| `order.template.folder_id` | `string \| null` | обяз. | Может прийти пустым (`null`). |
| `order.template.created_at` | `string (date-time)` | обяз. |  |
| `order.template.updated_at` | `string (date-time)` | обяз. |  |
| `order.template_id` | `string` | обяз. |  |
| `order.task_type` | `string` — `tts` · `image` · `txt2img` · `remix` · `image_edit` · `voice_clone` · `sfx` · `music` · `voice_search` · `cartesia_dub` · `elevenlabs_dub` | обяз. |  |
| `order.status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | обяз. |  |
| `order.price_units` | `number` | обяз. |  |
| `order.price_formatted` | `number` | обяз. |  |
| `order.currency_asset` | `object` | обяз. |  |
| `order.currency_asset.id` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.currency_asset.code` | `string` | обяз. |  |
| `order.currency_asset.kind` | `string \| null` | обяз. | Может прийти пустым (`null`). |
| `order.currency_asset.precision` | `integer` | обяз. |  |
| `order.currency_asset.name` | `string \| null` | обяз. | Может прийти пустым (`null`). |
| `order.currency_asset.deleted_at` | `string (date-time) \| null` | обяз. |  |
| `order.currency_asset.created_at` | `string (date-time) \| null` | обяз. |  |
| `order.currency_asset.updated_at` | `string (date-time) \| null` | обяз. |  |
| `order.total_tokens` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.total_duration_ms` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.tokens_from_quota` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.tokens_from_payg` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.tokens_spent` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.task_data` | `object \| null` | обяз. | Может прийти пустым (`null`). |
| `order.result` | `object \| null` | обяз. | Может прийти пустым (`null`). |
| `order.created_at` | `string (date-time)` | обяз. |  |
| `order.updated_at` | `string (date-time)` | обяз. |  |
| `order.files_expire_at` | `string (date-time) \| null` | обяз. |  |
| `order.files_expired` | `boolean` | обяз. |  |
| `order.retention` | `object` | обяз. |  |
| `order.retention.chunks` | `object` | обяз. |  |
| `order.retention.chunks.expires_at` | `string (date-time) \| null` | обяз. |  |
| `order.retention.chunks.expired` | `boolean` | обяз. |  |
| `order.retention.chunks.expires_early` | `boolean` | обяз. |  |
| `order.retention.chunks.reason` | `string \| null` | обяз. | Может прийти пустым (`null`). |
| `order.retention.files` | `object` | обяз. |  |
| `order.retention.files.expires_at` | `string (date-time) \| null` | обяз. |  |
| `order.retention.files.expired` | `boolean` | обяз. |  |
| `order.eta_seconds` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.eta_at` | `string (date-time) \| null` | обяз. |  |
| `order.completed_chunks` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.total_chunks` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.progress_percent` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `order.stitching` | `boolean` | обяз. |  |
| `order.paragraphs` | `array<object> \| null` | обяз. | Может прийти пустым (`null`). |

### `.status.changed` — Status changed

Сменился статус заказа.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order` | `object` | обяз. | Снимок заказа без списка чанков — изменения по каждому чанку приходят отдельными событиями `item.status.changed`. |
| `items_summary` | `object` | обяз. | Сводка по чанкам заказа вместо полного списка. |
| `items_summary.total` | `integer` | обяз. |  |
| `items_summary.by_status` | `object<string, integer>` | обяз. | Сколько чанков в каждом статусе: `pending`, `processing`, `completed`, `failed`, `policy_flagged`. |
| `previous_status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | обяз. |  |
| `new_status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | обяз. |  |

### `.archive.ready` — Archive ready

ZIP-архив собран и готов к скачиванию. Приходит только для крупных заказов, собираемых в фоне.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | обяз. |  |
| `archive_id` | `string (uuid)` | обяз. |  |
| `url` | `string (uri)` | обяз. | Готовая ссылка на ZIP. Качается обычным `GET` без заголовков авторизации, с хранилища, а не с API. |
| `size` | `integer \| null` | — | Размер архива в байтах; `null`, если хранилище его не сообщило. |
| `expires_at` | `string (date-time)` | обяз. | Когда ссылка перестанет работать (ISO 8601) — не позже суток с момента готовности. После этого запросите архив заново. |

### `.item.status.changed` — Item status changed

Сменился статус чанка заказа.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `item` | `object` | обяз. | Индекс чанка, его статус, путь к файлу результата и длительность аудио. |
| `item.id` | `string (uuid)` | — |  |
| `item.chunk_index` | `integer \| null` | — |  |
| `item.status` | `string` — `pending` · `processing` · `completed` · `failed` · `policy_flagged` | — |  |
| `item.result_file` | `object \| null` | — |  |
| `item.duration_ms` | `integer \| null` | — |  |
| `previous_status` | `string` | обяз. |  |
| `new_status` | `string` | обяз. |  |
| `completed_chunks` | `integer` | — |  |
| `total_chunks` | `integer` | — |  |
| `progress_percent` | `integer` | — |  |
| `stitching` | `boolean` | — | Идёт ли склейка аудио заказа. Последний готовый чанк многочанкового заказа означает начало склейки, а не готовность: при `true` результат ещё не финальный. |

### `.policy_cooldown.cleared` — Policy cooldown cleared

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `was_blocked` | `boolean` | обяз. |  |
| `strikes` | `integer` | обяз. |  |
| `level` | `integer` | обяз. |  |

### `.archive.failed` — Archive failed

Фоновая сборка ZIP-архива не удалась. Событие терминальное: ни `progress`, ни `ready` по этому `archive_id` больше не придут, поэтому именно по нему убирайте индикатор прогресса — иначе он останется на экране навсегда.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | обяз. |  |
| `archive_id` | `string (uuid)` | обяз. |  |
| `reason` | `string` — `order_not_found` · `build_failed` | обяз. | Машиночитаемый код причины — текст для пользователя подбирайте на своей стороне. |

### `.stitch.changed` — Stitch changed

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string` | обяз. |  |
| `order_status` | `string` | обяз. |  |
| `stitching` | `boolean` | обяз. |  |
| `stitch` | `object` | обяз. |  |
| `stitch.id` | `string` | обяз. |  |
| `stitch.status` | `string` | обяз. |  |
| `stitch.paragraph_index` | `integer \| null` | обяз. | Может прийти пустым (`null`). |
| `stitch.restitch` | `boolean` | обяз. |  |

### `.archive.progress` — Archive progress

Прогресс фоновой сборки ZIP-архива. Приходит только для крупных заказов (`mode=job`); небольшой архив отдаётся синхронно, и событий по нему нет. Значения приходят с шагом около 20% — не рассчитывайте на каждый процент; последним придёт кадр, где `files_done` равно `files_total`.

**Payload**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | обяз. |  |
| `archive_id` | `string (uuid)` | обяз. | Тот же `archive_id`, что пришёл в ответе на запрос архива, — по нему сопоставляйте события с карточкой. |
| `percent` | `integer` | обяз. |  |
| `files_done` | `integer` | обяз. |  |
| `files_total` | `integer` | обяз. |  |

---

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