LanaChat

API: скрипты, шаги и папки

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

Скрипт, это фиксированная последовательность шагов для одного автора: каждый шаг, это текст, опциональные медиа из Vault, цена в Stars и пауза перед следующим шагом. Скрипты хранятся в папках. Один скрипт на автора может быть отмечен как первый: он запускается при новых разговорах.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/scriptsСписок скриптов (creator_id= обязателен, folder_id=, active=true)can_setupPlanned
POST/scriptsСоздать скрипт с его шагамиcan_setupPlanned
GET/scripts/{id}Один скрипт и его шагиcan_setupPlanned
PUT/scripts/{id}Заменить скрипт (название, шаги, папка, аккаунты)can_setupPlanned
PATCH/scripts/{id}Включить или выключить, отметить первым, переместить в папкуcan_setupPlanned
POST/scripts/{id}/duplicateКопировать скрипт (копия никогда не первая)can_setupPlanned
DELETE/scripts/{id}Удалить скриптcan_setupPlanned
GET/scripts/foldersПапки автора (creator_id=)can_setupPlanned
POST/scripts/foldersСоздать папкуcan_setupPlanned
PATCH/scripts/folders/{id}Переименовать папкуcan_setupPlanned
DELETE/scripts/folders/{id}Удалить папку; скрипты перемещаются в "Без папки"can_setupPlanned
POST/conversations/{id}/scriptЗапустить скрипт в одном разговоре (см. Conversations)can_chatPlanned

Объект скрипта #

{
  "id": "scr_204",
  "creator_id": "cr_lea",
  "name": "Welcome message",
  "goal": "First sale within the first day",
  "folder_id": "fld_12",
  "active": true,
  "first": true,
  "account_ids": null,
  "steps": [
    { "id": "st_1", "name": "Hello", "text": "Hey you 😊 glad you found me here", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } },
    { "id": "st_2", "name": "First set", "text": "Made this one this morning…", "media": ["med_5521", "med_5522"], "wait_minutes": 20, "pricing": { "mode": "paid", "stars": 250, "discount_stars": 200 } }
  ],
  "created_at": "2026-09-30T10:00:00Z",
  "updated_at": "2026-10-05T16:22:00Z"
}
ПолеТипОписание
idstringНачинается с scr_
creator_idstringАвтор, чьи фанаты получают скрипт
namestringНазвание в Console
goalstring или nullЦель скрипта, вашими словами
folder_idstring или nullПапка; null, "Без папки"
activebooleanfalse, скрипт не запускается
firstbooleantrue, запускается при новых разговорах
account_idsarray или nullnull, все Telegram аккаунты автора; массив, только указанные (минимум один)
stepsarrayШаги в порядке (см. ниже)
created_at, updated_atstringISO 8601, UTC

Каждый шаг содержит:

ПолеТипОписание
idstringНачинается с st_
namestringНазвание в редакторе
textstringСообщение, которое получает фан
mediaмассив строкID медиа из Vault автора
wait_minutesnumberПауза перед отправкой шага
pricing.modestringfree, vault (каждое медиа по цене из Vault) или paid (одна цена за весь шаг)
pricing.starsnumberЦена в Stars при mode = paid
pricing.discount_starsnumberОпциональная сниженная цена в Stars

Установка first: true для скрипта снимает этот статус с других скриптов автора.

Скрипты #

Список скриптов #

GET /scripts · can_setup

ПараметрТипОбязателенОписание
creator_idstringДаАвтор
folder_idstringНетТолько скрипты из этой папки
activebooleanНетtrue, только включённые скрипты
limit, cursornumber, stringНетПагинация
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ответ, страница объектов скриптов в data с next_cursor. Без creator_id API возвращает 400.

Создать скрипт #

POST /scripts · can_setup

ПараметрТипОбязателенОписание
creator_idstringДаАвтор
namestringДаНазвание
stepsarrayДаШаги, как в объекте выше (без id)
goalstringНетЦель
folder_idstringНетПапка того же автора
account_idsмассив строкНетТолько эти аккаунты; если не указано, все
curl -X POST https://api.lanachat.ai/v1/scripts \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back", "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}]}'
{
  "id": "scr_231",
  "creator_id": "cr_lea",
  "name": "Win back",
  "goal": null,
  "folder_id": null,
  "active": true,
  "first": false,
  "account_ids": null,
  "steps": [ { "id": "st_1", "name": "Miss you", "text": "Hey stranger, where did you go?", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } } ],
  "created_at": "2026-10-06T14:30:00Z",
  "updated_at": "2026-10-06T14:30:00Z"
}

Ответ, новый скрипт (201), активный, не первый, без папки. ID медиа из Vault другого автора отклоняется (400).

Получить скрипт #

GET /scripts/{id} · can_setup

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

Ответ, объект скрипта со всеми шагами.

Заменить скрипт #

PUT /scripts/{id} · can_setup

Отправьте весь скрипт: name, steps, folder_id и account_ids, как в Создать скрипт. Пропущенные шаги удаляются.

curl -X PUT https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Win back", "folder_id": "fld_12", "account_ids": null, "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}, {"name": "Gift", "text": "Kept this one for you", "media": ["med_5522"], "wait_minutes": 30, "pricing": {"mode": "paid", "stars": 200}}]}'

Ответ, обновлённый скрипт. Пустой массив account_ids возвращает 400: используйте null для всех аккаунтов.

Включить, отметить первым, переместить #

PATCH /scripts/{id} · can_setup

ПараметрТипОбязателенОписание
activebooleanНетВключить или выключить
firstbooleanНетtrue, скрипт для новых разговоров
folder_idstring или nullНетПереместить; null, "Без папки"
curl -X PATCH https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"first": true}'

Ответ, обновлённый скрипт. Предыдущий первый скрипт автора теряет статус first.

Дублировать скрипт #

POST /scripts/{id}/duplicate · can_setup

curl -X POST https://api.lanachat.ai/v1/scripts/scr_204/duplicate \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

Ответ, копия (201). Копия никогда не первая.

Удалить скрипт #

DELETE /scripts/{id} · can_setup

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

Папки #

Список папок #

GET /scripts/folders · can_setup

ПараметрТипОбязателенОписание
creator_idstringДаАвтор
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Создать папку #

POST /scripts/folders · can_setup

ПараметрТипОбязателенОписание
creator_idstringДаАвтор
namestringДаНазвание папки
curl -X POST https://api.lanachat.ai/v1/scripts/folders \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back"}'

Переименовать папку #

PATCH /scripts/folders/{id} · can_setup

curl -X PATCH https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Welcome"}'

Удалить папку #

DELETE /scripts/folders/{id} · can_setup

curl -X DELETE https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Её скрипты сохраняются и перемещаются в "Без папки".

Запустить скрипт в разговоре #

POST /conversations/{id}/script · can_chat

Запускает скрипт в разговоре с одним фаном: state становится script до окончания. Тело запроса, пример и правила в Conversations.

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

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