К содержанию
Lumean API

GET/orders/chunks/preview/{previewId}

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

Поправки к спецификации · 2

  • Пагинация лежит не в data.meta

    Четыре описания параметра per_page обещают метаданные пагинации в data.meta. Такого ключа нет ни в одном ответе публичного API: страница приходит плоско — data.items[] плюс data.current_page, data.last_page, data.per_page, data.total. Код, читающий data.meta.total, получит undefined.

  • Предпросмотр чанков доступен по API-ключу

    В машинной документации llm.md §12 сказано, что предпросмотр чанков — эндпоинт веб-кабинета и по ключу вернёт 401. Это неверно: три операции предпросмотра входят в публичный контур и требуют права orders.read — так их описывают и OpenAPI, и §7.1 той же llm.md. Если ИИ-ассистент сошлётся на §12 — он ошибается.

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

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

На этой странице(4)

Параметры

Поля ввода живут прямо в строке запроса: подставьте значение — и получите готовый URL. Ниже — тип, обязательность и допустимые значения каждого параметра.

GEThttps://api.lumean.app/api/public/orders/chunks/preview/
  • stringв путиобязательный

    Идентификатор превью — sha256-хеш (64 символа нижнего регистра, БЕЗ дефисов), не UUID.

    Берётся из поля preview_id ответа POST/GET /orders/chunks/preview. Чужой preview_id вернёт 404 — кэш изолирован по владельцу ключа.

    Значение подставляется прямо в строку запроса выше.

  • integerв queryнеобязательный≥ 1

    Номер страницы, начиная с 1.

  • integerв queryнеобязательный1..500

    Сколько записей вернуть на странице. Метаданные пагинации лежат рядом с items: current_page, last_page, per_page, total.

Возможные ответы

200

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

Пример тела
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
Поля ответа
successобязательное

Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь true, а ошибка приходит телом другой формы, где этого поля может не быть вовсе.

boolean
messageобязательное

Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются.

string
dataобязательное

Полезная нагрузка ответа.

object
statusобязательное

Всегда ready у кода 200 — расчёт готов.

string
preview_idобязательное

Контентный идентификатор превью (sha256 от текста+шаблона+режима+версии алгоритма). Используйте для инкрементального re-preview (previous_preview_id) и для пагинации (GET .../{previewId}).

string
summaryобязательное

Итоги по всему тексту — не только по текущей странице чанков.

string
chunksобязательное

Только ТЕКУЩАЯ страница (см. data.page), не весь список — используйте пагинацию (GET .../{previewId}?page=) для остальных.

array<any>
pageобязательное

Мета пагинации ТЕКУЩЕЙ страницы data.chunks.

string
202

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

Пример тела
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
Поля ответа
successобязательное

Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь true, а ошибка приходит телом другой формы, где этого поля может не быть вовсе.

boolean
messageобязательное

Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются.

string
dataобязательное

Полезная нагрузка ответа.

object
statusобязательное

Всегда processing у кода 202 — расчёт идёт в фоне.

string
preview_idобязательное

Идентификатор превью. Используйте для подписки на WS-канал private-chunks.preview.{userId} (событие .ready) либо для ручного поллинга GET /orders/chunks/preview/{previewId}.

string
summaryобязательное

Итоги по всему тексту — не только по текущей странице чанков.

string
chunksобязательное

Только ТЕКУЩАЯ страница (см. data.page), не весь список — используйте пагинацию (GET .../{previewId}?page=) для остальных.

array<any>
pageобязательное

Мета пагинации ТЕКУЩЕЙ страницы data.chunks.

string
401

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

Разобрать этот ответ
Пример тела
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
Поля ответа
successобязательное

Всегда false в ответах об ошибке.

boolean
messageобязательное

Текст ошибки на языке ключа (задаётся заголовком X-Locale).

string
dataобязательное

Всегда null, когда запрос отклонён до обработки.

может быть null
null
403

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

Разобрать этот ответ
Пример тела
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
Поля ответа
successобязательное

Всегда false в ответах об ошибке.

boolean
messageобязательное

Текст ошибки на языке ключа (задаётся заголовком X-Locale).

string
404

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

Разобрать этот ответ
Пример тела
{
  "success": false,
  "message": "Resource not found."
}
Поля ответа
successобязательное

Всегда false у ошибок.

boolean
messageобязательное

Причина отказа словами, на языке аккаунта. Для показа пользователю; ветвиться по ней нельзя — формулировки меняются.

может быть null
null | array<any> | string | object
errorsобязательное

Разбор по полям — только у ошибок валидации (422): ключ соответствует полю запроса, значение — список претензий к нему. У остальных кодов приходит null: разбирать нечего, причина целиком в message.

может быть null
null
422

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

Разобрать этот ответ
Пример тела
{
  "message": "string",
  "errors": {}
}
Поля ответа
messageобязательное

Errors overview.

string
errorsобязательное

A detailed description of each field that failed validation.

object
*необязательное
произвольные ключи
array<string>
429

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

Разобрать этот ответ
Пример тела
{
  "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
}
Поля ответа
successобязательное

Всегда false в ответах об ошибке.

boolean
messageобязательное

Текст ошибки на языке ключа (задаётся заголовком X-Locale).

string
reasonобязательное

Машиночитаемая причина отказа — по ней ветвите обработку, а не по тексту сообщения.

string
error_codeобязательное

Тот же машинный код, что в reason, — второе имя поля. Значения всегда совпадают; ветвитесь по любому из них.

string
retry_afterнеобязательное

Через сколько секунд имеет смысл повторить запрос (то же значение — в заголовке Retry-After).

может быть null
integer

События, которые это порождает

Ход выполнения приезжает по WebSocket: опрашивать заказ в цикле не обязательно. Подписка требует того же права, что и чтение заказов.

Скормить страницу ИИ

Открыть .mdllm.md

спека 0.0.1