---
title: "private-orders.{userId}"
url: https://lumean.app/en/developers/docs/realtime/orders
locale: en
description: "Events for every order of the account at once."
generated: 2026-10-17
scopes: [orders.read]
spec_version: 0.0.1
---

# private-orders.{userId}

Events for every order of the account at once.

- Required scope: `orders.read`

## Channel parameters

| Field | Type | Description | Example |
| --- | --- | --- | --- |
| `userId` | `integer` | is the numeric id of the key owner, returned by `GET /user`. | `7` |

## Events

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `reason` | `string` | required |  |
| `minutes` | `integer` | required |  |
| `retry_after` | `integer` | required |  |
| `retry_at` | `string` | required |  |
| `level` | `integer` | required |  |
| `threshold` | `integer` | required |  |

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string` | required |  |
| `paragraph_index` | `integer` | required |  |
| `created_count` | `integer` | required |  |
| `failed_count` | `integer` | required |  |

### `.created` — Created

A new order was created.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order` | `object` | required | A snapshot of the order without the chunk list — it would not fit the WebSocket message size limit. The status here is always `created`; fetch the chunks from `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` | required | A summary of the order's chunks instead of the full list. |
| `items_summary.total` | `integer` | required |  |
| `items_summary.by_status` | `object<string, integer>` | required | How many chunks are in each status: `pending`, `processing`, `completed`, `failed`, `policy_flagged`. |

### `.progress` — Progress

The order's overall progress was updated.

Progress across the order's original chunks. Retries and regenerations are not counted.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | required |  |
| `completed` | `integer` | required |  |
| `total` | `integer` | required |  |
| `percent` | `integer` | required |  |

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string` | required |  |
| `queue_position` | `integer` | required |  |
| `queue_wait_seconds` | `integer \| null` | required |  |

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string` | required |  |
| `created_count` | `integer` | required |  |
| `failed_count` | `integer` | required |  |

### `.renamed` — Renamed

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order` | `object` | required |  |
| `order.id` | `string` | required |  |
| `order.user_id` | `integer` | required |  |
| `order.name` | `string \| null` | required |  |
| `order.template` | `object` | required |  |
| `order.template.id` | `string` | required |  |
| `order.template.user_id` | `integer` | required |  |
| `order.template.slug` | `string` | required |  |
| `order.template.name` | `string` | required |  |
| `order.template.service_key` | `string` | required |  |
| `order.template.service` | `unknown` | required | May arrive as `null`. |
| `order.template.config` | `array<object>` | required |  |
| `order.template.is_public` | `boolean` | required |  |
| `order.template.folder_id` | `unknown` | required | May arrive as `null`. |
| `order.template.created_at` | `string (date-time)` | required |  |
| `order.template.updated_at` | `string (date-time)` | required |  |
| `order.template_id` | `string` | required |  |
| `order.task_type` | `string` — `tts` · `image` · `txt2img` · `remix` · `image_edit` · `voice_clone` · `sfx` · `music` · `voice_search` | required |  |
| `order.status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | required |  |
| `order.price_units` | `number` | required |  |
| `order.price_formatted` | `number` | required |  |
| `order.currency_asset` | `object` | required |  |
| `order.currency_asset.id` | `unknown` | required | May arrive as `null`. |
| `order.currency_asset.code` | `string` | required |  |
| `order.currency_asset.kind` | `unknown` | required | May arrive as `null`. |
| `order.currency_asset.precision` | `integer` | required |  |
| `order.currency_asset.name` | `unknown` | required | May arrive as `null`. |
| `order.currency_asset.deleted_at` | `string (date-time) \| null` | required |  |
| `order.currency_asset.created_at` | `string (date-time) \| null` | required |  |
| `order.currency_asset.updated_at` | `string (date-time) \| null` | required |  |
| `order.total_tokens` | `unknown` | required | May arrive as `null`. |
| `order.total_duration_ms` | `unknown` | required | May arrive as `null`. |
| `order.tokens_from_quota` | `unknown` | required | May arrive as `null`. |
| `order.tokens_from_payg` | `unknown` | required | May arrive as `null`. |
| `order.tokens_spent` | `unknown` | required | May arrive as `null`. |
| `order.task_data` | `unknown` | required | May arrive as `null`. |
| `order.result` | `unknown` | required | May arrive as `null`. |
| `order.created_at` | `string (date-time)` | required |  |
| `order.updated_at` | `string (date-time)` | required |  |
| `order.files_expire_at` | `string (date-time) \| null` | required |  |
| `order.files_expired` | `boolean` | required |  |
| `order.retention` | `object` | required |  |
| `order.retention.chunks` | `object` | required |  |
| `order.retention.chunks.expires_at` | `string (date-time) \| null` | required |  |
| `order.retention.chunks.expired` | `boolean` | required |  |
| `order.retention.chunks.expires_early` | `boolean` | required |  |
| `order.retention.chunks.reason` | `unknown` | required | May arrive as `null`. |
| `order.retention.files` | `object` | required |  |
| `order.retention.files.expires_at` | `string (date-time) \| null` | required |  |
| `order.retention.files.expired` | `boolean` | required |  |
| `order.eta_seconds` | `unknown` | required | May arrive as `null`. |
| `order.eta_at` | `string (date-time) \| null` | required |  |
| `order.completed_chunks` | `unknown` | required | May arrive as `null`. |
| `order.total_chunks` | `unknown` | required | May arrive as `null`. |
| `order.progress_percent` | `unknown` | required | May arrive as `null`. |
| `order.stitching` | `boolean` | required |  |
| `order.paragraphs` | `unknown` | required | May arrive as `null`. |

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

The order changed status.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order` | `object` | required | A snapshot of the order without the chunk list — per-chunk changes arrive as separate `item.status.changed` events. |
| `items_summary` | `object` | required | A summary of the order's chunks instead of the full list. |
| `items_summary.total` | `integer` | required |  |
| `items_summary.by_status` | `object<string, integer>` | required | How many chunks are in each status: `pending`, `processing`, `completed`, `failed`, `policy_flagged`. |
| `previous_status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | required |  |
| `new_status` | `string` — `created` · `pending` · `in_progress` · `completed` · `result_delivered` · `failed` · `compensated` · `cancelled` · `partially_completed` | required |  |

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

The ZIP archive is assembled and ready to download. Sent only for large orders built in the background.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | required |  |
| `archive_id` | `string (uuid)` | required |  |
| `url` | `string (uri)` | required | A ready-to-use ZIP link. Fetch it with a plain `GET`, no authorization headers, from storage rather than the API. |
| `size` | `integer \| null` | — | Archive size in bytes; `null` when storage did not report it. |
| `expires_at` | `string (date-time)` | required | When the link stops working (ISO 8601) — no later than a day after it was built. Request the archive again afterwards. |

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

An order chunk changed status.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `item` | `object` | required | The chunk index, its status, the result file path and the audio duration. |
| `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` | required |  |
| `new_status` | `string` | required |  |
| `completed_chunks` | `integer` | — |  |
| `total_chunks` | `integer` | — |  |
| `progress_percent` | `integer` | — |  |
| `stitching` | `boolean` | — | Whether the order's audio is being stitched. The last finished chunk of a multi-chunk order means stitching has started, not that the order is done: while `true` the result is not final. |

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `was_blocked` | `boolean` | required |  |
| `strikes` | `integer` | required |  |
| `level` | `integer` | required |  |

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

Background ZIP assembly failed. This event is terminal: neither `progress` nor `ready` will arrive for that `archive_id` again, so dismiss the progress indicator on it — otherwise it stays on screen forever.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | required |  |
| `archive_id` | `string (uuid)` | required |  |
| `reason` | `string` — `order_not_found` · `build_failed` | required | A machine-readable reason code — pick the user-facing wording on your side. |

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

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string` | required |  |
| `order_status` | `string` | required |  |
| `stitching` | `boolean` | required |  |
| `stitch` | `object` | required |  |
| `stitch.id` | `string` | required |  |
| `stitch.status` | `string` | required |  |
| `stitch.paragraph_index` | `unknown` | required | May arrive as `null`. |
| `stitch.restitch` | `boolean` | required |  |

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

Progress of a background ZIP assembly. Sent only for large orders (`mode=job`); a small archive is returned synchronously and produces no events. Values arrive in steps of roughly 20% — do not expect every percent; the last frame has `files_done` equal to `files_total`.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `order_id` | `string (uuid)` | required |  |
| `archive_id` | `string (uuid)` | required | The same `archive_id` returned when the archive was requested — match events to your UI card by it. |
| `percent` | `integer` | required |  |
| `files_done` | `integer` | required |  |
| `files_total` | `integer` | required |  |

---

- This page in the browser: https://lumean.app/en/developers/docs/realtime/orders
- Full machine-readable reference: https://api.lumean.app/docs/llm.md
