---
title: "GET /orders/chunks/preview/{previewId} — Preview Page"
url: https://lumean.app/developers/docs/api/get-orders-chunks-preview-preview-id
locale: ru
description: "Preview Page"
generated: 2026-10-17
operationId: order.getPreviewPage
method: GET
path: "/orders/chunks/preview/{previewId}"
scopes: [orders.read]
spec_version: 0.0.1
---

# GET /orders/chunks/preview/{previewId}

**Preview Page**

Страница чанков уже посчитанного preview из кэша (без пересчёта) — пагинация по
`preview_id`, полученному из `POST`/`GET /orders/chunks/preview`.

- **200** `status=ready` — страница чанков + мета пагинации. Страница вне диапазона
  → пустой `chunks[]` + `has_more=false`.
- **202** `status=processing` — расчёт ещё идёт.
- **404** — preview не найден, протух (TTL ~30 мин) или расчёт упал — пере-отправьте
  через `POST /orders/chunks/preview`.

**Требуемое право ключа:** `orders.read`.

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

## Запрос

```bash
curl -X GET 'https://api.lumean.app/api/public/orders/chunks/preview/{previewId}' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `previewId` | path | `string` | обяз. | Идентификатор превью — sha256-хеш (64 символа нижнего регистра, БЕЗ дефисов), не UUID. Берётся из поля `preview_id` ответа `POST`/`GET /orders/chunks/preview`. Чужой `preview_id` вернёт `404` — кэш изолирован по владельцу ключа. default: `a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2` |
| `page` | query | `integer` — ≥ 1 | — | Номер страницы, начиная с `1`. |
| `per_page` | query | `integer` — 1..500 | — | Сколько записей вернуть на странице. Метаданные пагинации лежат рядом с `items`: `current_page`, `last_page`, `per_page`, `total`. |

## Тело запроса

Тела нет.

## Ответы

### 200 — status=ready: страница чанков + мета пагинации

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь `true`, а ошибка приходит телом другой формы, где этого поля может не быть вовсе. |
| `message` | `string` | обяз. | Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются. |
| `data` | `object` | обяз. | Полезная нагрузка ответа. |
| `data.status` | `string` | обяз. | Всегда `ready` у кода 200 — расчёт готов. |
| `data.preview_id` | `string` | обяз. | Контентный идентификатор превью (sha256 от текста+шаблона+режима+версии алгоритма). Используйте для инкрементального re-preview (`previous_preview_id`) и для пагинации (`GET .../{previewId}`). |
| `data.summary` | `string` | обяз. | Итоги по всему тексту — не только по текущей странице чанков. |
| `data.chunks` | `array<any>` | обяз. | Только ТЕКУЩАЯ страница (см. `data.page`), не весь список — используйте пагинацию (`GET .../{previewId}?page=`) для остальных. |
| `data.page` | `string` | обяз. | Мета пагинации ТЕКУЩЕЙ страницы `data.chunks`. |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
```

### 202 — status=processing: расчёт ещё идёт

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь `true`, а ошибка приходит телом другой формы, где этого поля может не быть вовсе. |
| `message` | `string` | обяз. | Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются. |
| `data` | `object` | обяз. | Полезная нагрузка ответа. |
| `data.status` | `string` | обяз. | Всегда `processing` у кода 202 — расчёт идёт в фоне. |
| `data.preview_id` | `string` | обяз. | Идентификатор превью. Используйте для подписки на WS-канал `private-chunks.preview.{userId}` (событие `.ready`) либо для ручного поллинга `GET /orders/chunks/preview/{previewId}`. |
| `data.summary` | `string` | обяз. | Итоги по всему тексту — не только по текущей странице чанков. |
| `data.chunks` | `array<any>` | обяз. | Только ТЕКУЩАЯ страница (см. `data.page`), не весь список — используйте пагинацию (`GET .../{previewId}?page=`) для остальных. |
| `data.page` | `string` | обяз. | Мета пагинации ТЕКУЩЕЙ страницы `data.chunks`. |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
```

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

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `data` | `null` — nullable | обяз. | Всегда `null`, когда запрос отклонён до обработки. |

**Пример**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

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

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |

**Пример**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 404 — Preview не найден или протух

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` у ошибок. |
| `message` | `null \| array<any> \| string \| object` — nullable | обяз. | Причина отказа словами, на языке аккаунта. Для показа пользователю; ветвиться по ней нельзя — формулировки меняются. |
| `errors` | `null` — nullable | обяз. | Разбор по полям — только у ошибок валидации (`422`): ключ соответствует полю запроса, значение — список претензий к нему. У остальных кодов приходит `null`: разбирать нечего, причина целиком в `message`. |

**Пример**

```json
{
  "success": false,
  "message": "Resource not found."
}
```

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

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `message` | `string` | обяз. | Errors overview. |
| `errors` | `object` | обяз. | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — произвольные ключи | — |  |

**Пример**

```json
{
  "message": "string",
  "errors": {}
}
```

### 429 — Превышен лимит запросов чтения preview для этого ключа

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `reason` | `string` | обяз. | Машиночитаемая причина отказа — по ней ветвите обработку, а не по тексту сообщения. |
| `error_code` | `string` | обяз. | Тот же машинный код, что в `reason`, — второе имя поля. Значения всегда совпадают; ветвитесь по любому из них. |
| `retry_after` | `integer` — nullable | — | Через сколько секунд имеет смысл повторить запрос (то же значение — в заголовке `Retry-After`). |

**Пример**

```json
{
  "success": false,
  "message": "Too many attempts. Please wait a moment and try again.",
  "reason": "rate_limit_exceeded",
  "error_code": "rate_limit_exceeded",
  "retry_after": 30
}
```

---

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