For AI agents
Machine-readable entry points to the docs, the reading order and the API rules. If you are setting up an agent, give it a link to this page or to /llms.txt.
Entry points
- /llms.txt
A map of every documentation page with links to their Markdown versions. Start here.
https://lumean.app/llms.txt - llm.md
The whole API in one file, with sections and end-to-end recipes. Use it when you need full context. The file is in Russian only.
https://api.lumean.app/docs/llm.md - .md
The Markdown version of any page: replace /developers/docs/ in the URL with /developers/docs/md/. Use it when you need one topic.
https://lumean.app/en/developers/docs/md/<path> - OpenAPI
The REST contract: operations, parameters and schemas. Use it to generate a client and exact types. Available in Russian and English.
https://api.lumean.app/docs/public-openapi.en.json - AsyncAPI
WebSocket channels and events. Use it to subscribe to order statuses instead of polling.
https://api.lumean.app/docs/public-asyncapi.en.json
Reading order
- Read /llms.txt and pick the pages you need.
- Fetch their Markdown versions, not HTML.
- Take schemas and types from OpenAPI.
- Send requests with the X-API-KEY header. The account owner creates the key in their account.
API rules
Agents get these rules wrong most often. /llms.txt and the Markdown version of this page carry the same rules in English.
The voice is set in a template
An order has no voice_id field. The voice is stored in the template’s config.tts_settings.voice_id, and the order refers to the template by template_id. To voice a single order with another voice, pass config_override.tts_settings.voice_id. The text to voice goes in input_text.
Orders run asynchronously
POST /orders returns 201 with status created and no result yet. Poll GET /orders/{order} or listen over WebSocket to follow the status. partially_completed is not a final status: some chunks failed, and you can retry them or cancel the order.
result.files[] holds paths, not links
POST /storage/url returns the download link, valid for one hour. Order files are kept for 7 days after the order finishes.
Retrying an order creates a new order
POST /orders/{order}/retry creates a new order with the same parameters and is billed again. Failed chunks are retried inside the original order: POST /orders/{order}/items/retry-failed. POST /orders has no idempotency key, so after a dropped connection, look for the order in the list first.
A 429 has several causes
It can be the request rate limit, the key’s token quota, a subscription limit, the concurrent task limit, or a pause after content policy blocks. The reason field names the cause. If the response has a Retry-After header, wait the time it gives. concurrency_limit_exceeded comes without it and lifts when your active orders finish. limit_exceeded is the subscription limit: retrying does not help until the period resets or the plan changes.
What models get wrong
The list from section 0 of llm.md. Add it to the agent’s context before the first request.
- TTS-голос задаётся только через шаблон, а не полем заказа. Нет
orders.voice_id. Порядок: положитьvoice_idвconfig.tts_settings.voice_idшаблона → создать заказ по этому шаблону. См. §11 (Рецепты). - Текст для TTS передаётся в top-level поле
input_textзапросаPOST /orders(сырая строка). НЕ кладите текст TTS вtask_data. А вот для template-less SFX/music промпт идёт вtask_data. - У заказов НЕТ update/delete. Доступны только
index,store,show, плюс действияcancel/retry.PUT/PATCH/DELETE /orders/{order}вернут 405/404. - Два независимых лимита: rate-limit по числу запросов (429,
reason: rate_limit_exceeded, заголовокRetry-After) и токен-квота по объёму генерации (429,reason: token_quota_exceeded;Retry-After— только у окна со сбросом по времени, у пулаwindow: "quota"его нет). См. §6. - Пагинация с разными базами: внешние каталоги голосов (
voices/elevenlabs/library,voices/heygen) считаютpageс 0; обычные списки (orders,templates,templates/browse, а также каталог и клоны Cartesiavoices/cartesia,voices/cartesia/clones, а также Fish Audiovoices/fishaudio,voices/fishaudio/clones) —current_pageс 1. - Субтитры и другие сервисные файлы лежат ОТДЕЛЬНО — в
result.service_files[], не вresult.files[]. Оба поля — плоские массивы строк-путей (напр..../output/final/service/subtitles.srt), генерируется только для TTS. Скачивается тем жеPOST /storage/url. См. §7.10. - Сбой чанка чинится на уровне чанка, не заказа. У чанка бывают статусы
failed(тех. ошибка) иpolicy_flagged(контент отклонён политикой провайдера). Частично готовый заказ (partially_completed) доводят доcompletedтак: один вызовPOST /orders/{order}/items/retry-failedзабирает всеfailedразом, аpolicy_flaggedдобивают поштучноPOST /orders/{order}/items/{item}/retryс исправленнымtext(повтор с тем же текстом бессмыслен). Order-levelretryдля этого не годится — он создаёт новый заказ. См. §7.11. - Бесплатна только пауза
{{pause}}; квадратные скобки и<break/>оплачиваются.{{pause=2s}}— наш формат: тишину строит воркер, до провайдера строка не доезжает, в цену и в длину фрагмента не входит. Любые[…]([шёпот], а заодно[1],[sic],[00:12]) и<break time="…"/>— синтаксис провайдера: он получает их целиком, модель читает их как указание диктору, а символы тарифицируются и занимают место во фрагменте.(ремарка),<тег>,*звёздочки*— прозвучат вслух и тоже тарифицируются. См. §8.3. - Тонкие настройки голоса включаются флагом. Без
tts_settings.advanced_voice_settings: true(по умолчаниюfalse) наeleven_v3*до движка доезжает толькоstability, наeleven_v4*—stabilityиsimilarity_boost; остальные значения (в том числеspeed) молча не влияют на звук — ошибки не будет. На прочих моделях флаг на звук не влияет. См. §8.2. - Свой голос для Cartesia клонируется по API, но асинхронно.
POST /voices/cartesia/clones(правоvoices.write) сразу отвечает201с клоном в статусеpending, аvoice_idпоявляется только в статусеready— ждите событиеvoice_clone.updated(§10) или опрашивайтеGET /voices/cartesia/clones. В шаблон кладутvoice_idклона, а НЕ егоid. Клонирование требует живой подписки с Cartesia, только если сервис закрыт для оплаты с баланса (иначе 402no_subscription), и упирается в потолок клонов: 2 без подписки, лимит тарифа с подпиской. См. §7.12, Рецепт H. То же у Fish Audio (POST /voices/fishaudio/clones, §7.12): правила те же, что у Cartesia, лимит клонов у Fish свой,voice_id— строка из 32 hex-символов, а не UUID. - Не подбирайте адреса — все эндпоинты описаны в этом файле. Путь, которого нет, отвечает
404 с
reason: "endpoint_not_found", текстом-подсказкой и ссылками на этот файл. Перебор несуществующих путей распознаётся как http probing: после нескольких таких 404 IP банится на ВСЕХ путях — 429reason: "ip_banned"(5 мин → 10 → 30 → 1 ч → 24 ч). Получилиendpoint_not_found— остановитесь и найдите нужный запрос здесь. См. §6.1, §12. - Есть отдельный AI API (LLM-гейтвей), не входящий в
/api/public/*. OpenAI- и Anthropic-совместимые ручки наhttps://api.lumean.app/v1(/chat/completions,/responses,/messages,/models,/images/*) работают с ЛЮБЫМ ключом кабинета (Authorization: Bearerилиx-api-key), оплата с баланса LUMC. Полностью — §14. - Цены AI-моделей не фиксированы. Они меняются вслед за поставщиками (иногда несколько раз в
день), модель может временно пропасть. Перед дорогой генерацией сверяйте цену —
GET /api/public/ai/models/{key}(любой ключ, ETag → 304, пока цена прежняя) — и держите месячный лимит ключа. См. §14.6.
This page for AI
Updated 10/18/2026 · API version 1.0.0