LanaChat

API: AI Brains, черновики и Playground

Чтение 6 минОбновлено Markdown

AI Brain хранит логику продаж AI для автора: его этапы продаж, правила и настройки. Вы изменяете черновик, тестируете его в Playground, затем публикуете; живой brain меняется только при публикации. Brain привязан к одному автору и может использоваться его аккаунтами.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/brainsСписок brains (creator_id=)can_enginePlanned
POST/brainsСоздать brain для автора, пустой или скопированный из другого (copy_from)can_enginePlanned
GET/brains/{id}Живая версия braincan_enginePlanned
PATCH/brains/{id}Переименовать или связать с другим авторомcan_enginePlanned
DELETE/brains/{id}Удалить brain, если им не пользуется ни один аккаунтcan_enginePlanned
GET/brains/{id}/draftТекущий черновик и отличия от живой версииcan_enginePlanned
PATCH/brains/{id}/draftИзменить черновик (этапы, правила, настройки)can_enginePlanned
DELETE/brains/{id}/draftОтбросить черновикcan_enginePlanned
POST/brains/{id}/publishОпубликовать черновик; он становится живым на всех связанных аккаунтахcan_publishPlanned
GET/brains/{id}/versionsОпубликованные версии, сначала новыеcan_enginePlanned
POST/brains/{id}/versions/{version}/restoreСкопировать старую версию в черновикcan_enginePlanned
POST/playground/{brain_id}/messageОтправить тестовое сообщение в черновик и получить ответ AIcan_enginePlanned
DELETE/playground/{brain_id}/sessionНачать тестовый разговор зановоcan_enginePlanned

Объект brain #

{
  "id": "br_lea_main",
  "name": "Lea · main",
  "creator_id": "cr_lea",
  "version": 12,
  "published_at": "2026-10-04T21:10:00Z",
  "has_draft": true,
  "accounts": ["acc_1001", "acc_1004"],
  "phases": [
    { "key": "warm_up", "name": "Warm up", "enabled": true },
    { "key": "first_offer", "name": "First offer", "enabled": true }
  ]
}
ПолеТипОписание
idstringНачинается с br_
namestringИмя в Console
creator_idstringАвтор, к которому привязан
versionnumberЖивая версия; увеличивается на 1 при каждой публикации
published_atstring или nullВремя публикации живой версии, ISO 8601 UTC
has_draftbooleantrue, если черновик отличается от живой версии
accountsмассив строкTelegram-аккаунты, отвечающие с этим brain
phasesмассивЭтапы продаж: key, name и включён ли каждый (enabled)

Brains #

Список brains #

GET /brains · can_engine

ПараметрТипОбязателенОписание
creator_idstringНетТолько brains этого автора
limit, cursornumber, stringНетПагинация
curl "https://api.lanachat.ai/v1/brains?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
{
  "data": [
    { "id": "br_lea_main", "name": "Lea · main", "creator_id": "cr_lea", "version": 12, "published_at": "2026-10-04T21:10:00Z", "has_draft": true, "accounts": ["acc_1001", "acc_1004"], "phases": [ { "key": "warm_up", "name": "Warm up", "enabled": true }, { "key": "first_offer", "name": "First offer", "enabled": true } ] }
  ],
  "next_cursor": null
}

Создать brain #

POST /brains · can_engine

ПараметрТипОбязателенОписание
creator_idstringДаАвтор, для которого создаётся
namestringНетИмя в Console
copy_fromstringНетID brain для копирования; без него brain создаётся пустым
curl -X POST https://api.lanachat.ai/v1/brains \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Lea · TikTok test", "copy_from": "br_lea_main"}'

Ответ, новый brain (201). Если copy_from не существует в этом workspace, ответ 404.

Получить brain #

GET /brains/{id} · can_engine

curl https://api.lanachat.ai/v1/brains/br_lea_main \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ответ, живая версия, как в объекте brain. Черновик читается через GET /brains/{id}/draft.

Переименовать или перепривязать brain #

PATCH /brains/{id} · can_engine

ПараметрТипОбязателенОписание
namestringНетНовое имя
creator_idstringНетПривязать к другому автору
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Lea · main FR"}'

Ответ, обновлённый brain.

Удалить brain #

DELETE /brains/{id} · can_engine

curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_old \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Если brain ещё используется аккаунтом, запрос отклоняется (409): сначала перепривяжите эти аккаунты к другому brain.

Черновики и публикация #

Прочитать черновик #

GET /brains/{id}/draft · can_engine

curl https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ответ, текущий черновик (этапы, правила, настройки) и отличия от живой версии.

Изменить черновик #

PATCH /brains/{id}/draft · can_engine

ПараметрТипОбязателенОписание
phasesмассивНетЭтапы продаж для изменения
rulesмассивНетПравила для изменения
settingsобъектНетНастройки для изменения, например first_offer_after_messages или max_discount_percent
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"settings": {"first_offer_after_messages": 6, "max_discount_percent": 20}}'

Изменяются только отправленные поля. Живой brain не меняется до публикации.

Отбросить черновик #

DELETE /brains/{id}/draft · can_engine

curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Черновик удаляется; живая версия остаётся, has_draft становится false.

Опубликовать черновик #

POST /brains/{id}/publish · can_publish

curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/publish \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{ "id": "br_lea_main", "version": 13, "published_at": "2026-10-06T14:20:03Z", "has_draft": false }

Черновик становится живым на всех связанных аккаунтах. Публикация без черновика возвращает 409. Продвинутые AI-профили требуют собственных прав владельца, как в Console. Ваш сервер уведомляется через webhook brain.published.

Версии #

Список версий #

GET /brains/{id}/versions · can_engine

curl https://api.lanachat.ai/v1/brains/br_lea_main/versions \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ответ, список опубликованных версий, сначала новые, с пагинацией.

Восстановить версию #

POST /brains/{id}/versions/{version}/restore · can_engine

curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/versions/11/restore \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Старая версия копируется в черновик. Для фанатов ничего не меняется до публикации. Неизвестная версия возвращает 404.

Playground #

Playground общается с черновиком, никогда с фанатом. Ничего не отправляется в Telegram и ничего не продаётся.

Отправить тестовое сообщение #

POST /playground/{brain_id}/message · can_engine

ПараметрТипОбязателенОписание
textstringДаЧто пишет тестовый фанат
fanобъектНетТестовый фанат: language (например, en) и is_new
curl -X POST https://api.lanachat.ai/v1/playground/br_lea_main/message \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"text": "hey, are you real?", "fan": {"language": "en", "is_new": true}}'
{
  "reply": { "text": "Haha very real, just slow at typing 🙈 where are you from?", "media": [] },
  "phase": "warm_up",
  "explain": "Phrase bank answer for \"Are you a bot?\", then a question to keep the fan talking."
}
  • reply, что AI отправил бы: текст и медиа.
  • phase, этап продаж, на котором находится AI.
  • explain, простое объяснение, почему AI ответил так.

Каждый вызов продолжается в рамках одного тестового разговора.

Начать тестовый разговор заново #

DELETE /playground/{brain_id}/session · can_engine

curl -X DELETE https://api.lanachat.ai/v1/playground/br_lea_main/session \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Следующее тестовое сообщение начнёт новый разговор, как от нового фаната.

Последние новости о Lana в Telegram

Новые релизы и приглашения в бету, первыми в канале.