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

GET/orders/chunks/preview

Preflight: есть ли уже готовое разбиение этого текста в кэше — без пересылки самого текста. Пришлите text_hash (sha256 сырого input_text, нижний регистр hex) + template_id (+ generation_mode и config_override, если использовались при расчёте) — сервер соберёт тот же preview_id и проверит кэш.

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

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

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

  • 200 status=ready — уже посчитано, текст слать не нужно.
  • 202 status=processing — расчёт этого текста ещё идёт.
  • 404 — в кэше нет → отправьте полный текст через POST /orders/chunks/preview.

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

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

Параметры

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

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

    UUID шаблона — тот же, что был указан в POST /orders/chunks/preview при расчёте. Часть идентичности preview_id.

  • stringв queryобязательныйшаблон: ^[a-f0-9]{64}$

    sha256 от СЫРОГО input_text (нижний регистр hex, 64 символа) — считайте у себя, нормализацию бэк делает сам и в хеш её не примешивает. Вместе с template_id и generation_mode детерминирует preview_id: та же тройка → тот же ответ, без пересылки самого текста.

  • stringв queryнеобязательный

    Режим генерации, если использовался при расчёте (paragraph — абзацный рез). Обязан совпадать с тем, что уходило в POST — режим входит в идентичность preview_id.

    Допустимые значения
  • array<string>в queryнеобязательный

    config_override, с которым превью считали в POST (если передавали). Настройки, влияющие на рез, входят в идентичность preview_id, остальные — нет. Передаётся JSON-строкой (config_override={"tts_settings":{"mode":"mode_v1"}}, URL-кодированной) или вложенными ключами (config_override[tts_settings][mode]=mode_v1).

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

200

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

Пример тела
{
  "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

В кэше нет — нужно отправить полный текст через POST

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

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

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

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

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

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

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

Ошибка валидации

Разобрать этот ответ
Пример тела
{
  "message": "string",
  "errors": {
    "key": [
      "string"
    ]
  }
}
Поля ответа
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