---
title: "private-chunks.preview.{userId}"
url: https://lumean.app/en/developers/docs/realtime/chunks-preview
locale: en
description: "The result of a background chunk-preview split calculation. Arrives for large texts submitted to `POST /orders/chunks/preview`."
generated: 2026-10-17
scopes: [orders.read]
spec_version: 0.0.1
---

# private-chunks.preview.{userId}

The result of a background chunk-preview split calculation. Arrives for large texts submitted to `POST /orders/chunks/preview`.

- 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

### `.ready` — Ready

The async preview is ready — a limited notification: totals for the whole text (`summary`) and the first page's meta (`page`). The chunks themselves are not part of this event — fetch them separately via `GET /orders/chunks/preview/{previewId}?page=1`.

**Payload**

| Field | Type | Req. | Description |
| --- | --- | --- | --- |
| `status` | `string` — `ready` | required |  |
| `preview_id` | `string` | required | A content-based preview id (sha256 of text+template+mode). Use it for pagination (`GET .../{previewId}`) and repeat preflight lookups. |
| `summary` | `object` | required | Totals for the whole text — not just the current page of chunks. |
| `summary.chunks_count` | `integer` | — |  |
| `summary.total_effective_length` | `integer` | — | Total billable length across all chunks, in characters (pauses are excluded). |
| `summary.total_price_units` | `integer` | — |  |
| `summary.pause_count` | `integer` | — |  |
| `summary.total_pause_seconds` | `number` | — |  |
| `summary.caps_ok` | `boolean` | — |  |
| `summary.caps_exceeded` | `string \| null` — `count` · `single` · `total` · `chunks` · `null` | — |  |
| `summary.paragraphs_count` | `integer \| null` | — | Number of paragraphs, or `null` outside paragraph mode. |
| `summary.paragraphs` | `array<object> \| null` | — | A per-paragraph aggregate. `null` means either "the preview is not paragraph-mode" or "there are more paragraphs than the broadcast payload cap" — in the second case `paragraphs_count` stays a number, and you fetch the full list via `GET /orders/chunks/preview/{previewId}`. |
| `summary.paragraphs.paragraph_index` | `integer` | — |  |
| `summary.paragraphs.chunks_count` | `integer` | — |  |
| `summary.paragraphs.first_chunk_index` | `integer` | — | The cross-text index of the paragraph's first chunk — use it to locate the paragraph within the paginated chunk list. |
| `summary.paragraphs.text_length` | `integer` | — |  |
| `summary.paragraphs.effective_length` | `integer` | — |  |
| `summary.paragraphs.price_units` | `integer` | — |  |
| `page` | `object` | required | Meta for the first page of chunks. Fetch the chunks themselves with a separate paginated `GET` request keyed by `preview_id`. |
| `page.current_page` | `integer` | — |  |
| `page.per_page` | `integer` | — |  |
| `page.total` | `integer` | — | Total chunks in the split (across all pages). |
| `page.has_more` | `boolean` | — |  |

---

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