Skip to content
Lumean API

Descriptions are in English

The section interface is translated into your language, but descriptions of operations, schemas and errors exist only in Russian and English — the English version is shown here.

private-order.task.{orderId}

Events for a single order. Someone else's order is out of reach: subscription auth returns 403.

Spec fixes · 1

  • orderId in the channel name is a UUID, not a number

    In the AsyncAPI document the channel parameter orderId is declared as integer, while its own description and every example show the order UUID — the one returned as data.id by POST /orders. Subscribe with the string: private-order.task.c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f. The numeric userId in the other channel really is a number.

Channel parameters

Fill in your values — they appear in the channel name, in the code below and in the console. They are sent nowhere and never end up in the page URL.

is the UUID from the POST /orders response.

Channel name to subscribe to

private-order.task.{orderId}

The name still contains placeholders in braces. You cannot subscribe with it: the server authorizes channels by exact name.

import Pusher from 'pusher-js';

const pusher = new Pusher('7c4dd881d8116ac76fe89aff71d8c2ff', {
  wsHost: 'ws.lumean.app',
  wsPort: 443, wssPort: 443,
  forceTLS: true,
  enabledTransports: ['ws', 'wss'],
  cluster: '',
  channelAuthorization: {
    endpoint: 'https://api.lumean.app/api/public/broadcasting/auth',
    headers: { 'X-API-KEY': 'YOUR_API_KEY' },
  },
});

const channel = pusher.subscribe('private-order.task.{orderId}');
channel.bind('paragraph_regenerate.completed', (data) => {
  console.log(data);
});

Payload example

not connected

Channel: private-order.task.{orderId}

This is an example from the spec. There is no connection and none is simulated: subscribing for real needs your API key.

needs a key with the orders.read scope

.paragraph_regenerate.completed

{
  "order_id": "01a0d8c6-86d3-70b5-a86e-5a12b1d860df",
  "paragraph_index": 1,
  "created_count": 1,
  "failed_count": 1
}

Channel events: 8

Every event has its own anchor, a full payload table with descriptions and enums, and a sample shape. Names are shown in Laravel Echo notation — with the leading dot.

.paragraph_regenerate.completed

Echo: .paragraph_regenerate.completed · pusher-js: paragraph_regenerate.completed

Payload fields

order_idrequired
string
Example 01a0d8c6-86d3-70b5-a86e-5a12b1d860df
paragraph_indexrequired
integer
Example 1
created_countrequired
integer
Example 1
failed_countrequired
integer
Example 1

Payload example

{
  "order_id": "01a0d8c6-86d3-70b5-a86e-5a12b1d860df",
  "paragraph_index": 1,
  "created_count": 1,
  "failed_count": 1
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.voice_search.queue.updated

Echo: .voice_search.queue.updated · pusher-js: voice_search.queue.updated

Payload fields

order_idrequired
string
Example example
queue_positionrequired
integer
Example 1
queue_wait_secondsrequired
integer | null
Example 1

Payload example

{
  "order_id": "example",
  "queue_position": 1,
  "queue_wait_seconds": 1
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.bulk_retry.completed

Echo: .bulk_retry.completed · pusher-js: bulk_retry.completed

Payload fields

order_idrequired
string
Example 01a0d8c6-86b5-706a-958a-a626ddb3ba3d
created_countrequired
integer
Example 1
failed_countrequired
integer
Example 1

Payload example

{
  "order_id": "01a0d8c6-86b5-706a-958a-a626ddb3ba3d",
  "created_count": 1,
  "failed_count": 1
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.renamed

Echo: .renamed · pusher-js: renamed

Payload fields

orderrequired
object
idrequired
string
Example 01a12b4f-ddef-71a8-ae98-c8ec656c2886
user_idrequired
integer
Example 70
namerequired
string | null
Example example
templaterequired
object
idrequired
string
Example 01a12b4f-dded-706a-91d6-0f86a632230d
user_idrequired
integer
Example 71
slugrequired
string
Example a80eab29-6508-36cb-b8e8-3e85029e97b3
namerequired
string
Example consequatur
service_keyrequired
string
Example example
servicerequired

May arrive as null.

unknown
configrequired
array<object>
is_publicrequired
boolean
Example false
folder_idrequired

May arrive as null.

unknown
created_atrequired
string (date-time)
Example 2026-10-11T14:13:36+00:00
updated_atrequired
string (date-time)
Example 2026-10-11T14:13:36+00:00
template_idrequired
string
Example 01a12b4f-dded-706a-91d6-0f86a632230d
task_typerequired
Valuesttsimagetxt2imgremiximage_editvoice_clonesfxmusicvoice_search
string
Example tts
statusrequired
Valuescreatedpendingin_progresscompletedresult_deliveredfailedcompensatedcancelledpartially_completed
string
Example created
price_unitsrequired
number
Example 97.05
price_formattedrequired
number
Example 0.97
currency_assetrequired
object
idrequired

May arrive as null.

unknown
coderequired
string
Example LUMC
kindrequired

May arrive as null.

unknown
precisionrequired
integer
Example 2
namerequired

May arrive as null.

unknown
deleted_atrequired
string (date-time) | null
created_atrequired
string (date-time) | null
updated_atrequired
string (date-time) | null
total_tokensrequired

May arrive as null.

unknown
total_duration_msrequired

May arrive as null.

unknown
tokens_from_quotarequired

May arrive as null.

unknown
tokens_from_paygrequired

May arrive as null.

unknown
tokens_spentrequired

May arrive as null.

unknown
task_datarequired

May arrive as null.

unknown
resultrequired

May arrive as null.

unknown
created_atrequired
string (date-time)
Example 2026-10-11T14:13:36+00:00
updated_atrequired
string (date-time)
Example 2026-10-11T14:13:36+00:00
files_expire_atrequired
string (date-time) | null
files_expiredrequired
boolean
Example false
retentionrequired
object
chunksrequired
object
expires_atrequired
string (date-time) | null
expiredrequired
boolean
Example false
expires_earlyrequired
boolean
Example false
reasonrequired

May arrive as null.

unknown
filesrequired
object
expires_atrequired
string (date-time) | null
expiredrequired
boolean
Example false
eta_secondsrequired

May arrive as null.

unknown
eta_atrequired
string (date-time) | null
completed_chunksrequired

May arrive as null.

unknown
total_chunksrequired

May arrive as null.

unknown
progress_percentrequired

May arrive as null.

unknown
stitchingrequired
boolean
Example false
paragraphsrequired

May arrive as null.

unknown

Payload example

{
  "order": {
    "id": "01a12b4f-ddef-71a8-ae98-c8ec656c2886",
    "user_id": 70,
    "name": "example",
    "template": {
      "id": "01a12b4f-dded-706a-91d6-0f86a632230d",
      "user_id": 71,
      "slug": "a80eab29-6508-36cb-b8e8-3e85029e97b3",
      "name": "consequatur",
      "service_key": "example",
      "service": "string",
      "config": [],
      "is_public": false,
      "folder_id": "string",
      "created_at": "2026-10-11T14:13:36+00:00",
      "updated_at": "2026-10-11T14:13:36+00:00"
    },
    "template_id": "01a12b4f-dded-706a-91d6-0f86a632230d",
    "task_type": "tts",
    "status": "created",
    "price_units": 97.05,
    "price_formatted": 0.97,
    "currency_asset": {
      "id": "string",
      "code": "LUMC",
      "kind": "string",
      "precision": 2,
      "name": "string",
      "deleted_at": "<date-time>",
      "created_at": "<date-time>",
      "updated_at": "<date-time>"
    },
    "total_tokens": "string",
    "total_duration_ms": "string",
    "tokens_from_quota": "string",
    "tokens_from_payg": "string",
    "tokens_spent": "string",
    "task_data": "string",
    "result": "string",
    "created_at": "2026-10-11T14:13:36+00:00",
    "updated_at": "2026-10-11T14:13:36+00:00",
    "files_expire_at": "<date-time>",
    "files_expired": false,
    "retention": {
      "chunks": {
        "expires_at": "<date-time>",
        "expired": false,
        "expires_early": false,
        "reason": "string"
      },
      "files": {
        "expires_at": "<date-time>",
        "expired": false
      }
    },
    "eta_seconds": "string",
    "eta_at": "<date-time>",
    "completed_chunks": "string",
    "total_chunks": "string",
    "progress_percent": "string",
    "stitching": false,
    "paragraphs": "string"
  }
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.status.changed

Echo: .status.changed · pusher-js: status.changed

The order changed status.

Payload fields

orderrequired

A snapshot of the order without the chunk list — per-chunk changes arrive as separate item.status.changed events.

object
items_summaryrequired

A summary of the order's chunks instead of the full list.

object
totalrequired
integer
Example 12
by_statusrequired

How many chunks are in each status: pending, processing, completed, failed, policy_flagged.

object<string, integer>
Example {"completed":10,"failed":2}
previous_statusrequired
Valuescreatedpendingin_progresscompletedresult_deliveredfailedcompensatedcancelledpartially_completed
string
new_statusrequired
Valuescreatedpendingin_progresscompletedresult_deliveredfailedcompensatedcancelledpartially_completed
string

Payload example

{
  "order": {},
  "items_summary": {
    "total": 12,
    "by_status": {
      "completed": 10,
      "failed": 2
    }
  },
  "previous_status": "created",
  "new_status": "created"
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.item.status.changed

Echo: .item.status.changed · pusher-js: item.status.changed

An order chunk changed status.

Payload fields

itemrequired

The chunk index, its status, the result file path and the audio duration.

object
idoptional
string (uuid)
chunk_indexoptional
integer | null
Example 3
statusoptional
Valuespendingprocessingcompletedfailedpolicy_flagged
string
result_fileoptional
object | null
duration_msoptional
integer | null
Example 12480
previous_statusrequired
string
new_statusrequired
string
completed_chunksoptional
integer
Example 3
total_chunksoptional
integer
Example 7
progress_percentoptional
integer
Example 43
stitchingoptional

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.

boolean
Example false

Payload example

{
  "item": {
    "id": "<uuid>",
    "chunk_index": 3,
    "status": "pending",
    "result_file": {},
    "duration_ms": 12480
  },
  "previous_status": "string",
  "new_status": "string",
  "completed_chunks": 3,
  "total_chunks": 7,
  "progress_percent": 43,
  "stitching": false
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.stitch.changed

Echo: .stitch.changed · pusher-js: stitch.changed

Payload fields

order_idrequired
string
Example 01a12b4f-d2ba-70ef-b1a8-14aff97d1da2
order_statusrequired
string
Example created
stitchingrequired
boolean
Example false
stitchrequired
object
idrequired
string
Example 01a12b4f-d2bc-7117-83c6-a16f11eac8f4
statusrequired
string
Example pending
paragraph_indexrequired

May arrive as null.

unknown
restitchrequired
boolean
Example false

Payload example

{
  "order_id": "01a12b4f-d2ba-70ef-b1a8-14aff97d1da2",
  "order_status": "created",
  "stitching": false,
  "stitch": {
    "id": "01a12b4f-d2bc-7117-83c6-a16f11eac8f4",
    "status": "pending",
    "paragraph_index": "string",
    "restitch": false
  }
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

.progress

Echo: .progress · pusher-js: progress

Live progress of the order.

Payload fields

task_idrequired

The order UUID — the same value as the channel's {orderId}.

string (uuid)
progressrequired

Kept for compatibility and does not reflect progress — rely on the progress events of the orders channel, or on eta_seconds.

number
Example 42.5
chunks_donerequired

Kept for compatibility and does not reflect how many parts are done — count completion from item.status.changed events.

integer
chunks_totalrequired

Total number of parts in the order.

integer
duration_secondsoptional

How many seconds the task has been running. This is elapsed time, not remaining.

number
eta_secondsoptional

Estimated time remaining, in seconds. Computed by the API from service statistics.

integer | null
Example 95
eta_confidenceoptional

How much to trust the estimate: high — statistics for chunks of the same size, medium — for the service overall, low — little data, so show it with a «≈».

Valueshighmediumlownull
string | null
timestampoptional
string (date-time)

Payload example

{
  "task_id": "<uuid>",
  "progress": 42.5,
  "chunks_done": 0,
  "chunks_total": 0,
  "duration_seconds": 0,
  "eta_seconds": 95,
  "eta_confidence": "high",
  "timestamp": "<date-time>"
}

Values come from the spec where the spec has them; the rest are type-based placeholders. This is the shape of the event, not a recording of a real one.

All channels and connection parameters·POST /broadcasting/auth

Feed this page to an AI

Open .mdllm.md

spec 0.0.1