API: скрипты, шаги и папки
Скрипт, это фиксированная последовательность шагов для одного автора: каждый шаг, это текст, опциональные медиа из Vault, цена в Stars и пауза перед следующим шагом. Скрипты хранятся в папках. Один скрипт на автора может быть отмечен как первый: он запускается при новых разговорах.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /scripts | Список скриптов (creator_id= обязателен, folder_id=, active=true) | can_setup | Planned |
| POST | /scripts | Создать скрипт с его шагами | can_setup | Planned |
| GET | /scripts/{id} | Один скрипт и его шаги | can_setup | Planned |
| PUT | /scripts/{id} | Заменить скрипт (название, шаги, папка, аккаунты) | can_setup | Planned |
| PATCH | /scripts/{id} | Включить или выключить, отметить первым, переместить в папку | can_setup | Planned |
| POST | /scripts/{id}/duplicate | Копировать скрипт (копия никогда не первая) | can_setup | Planned |
| DELETE | /scripts/{id} | Удалить скрипт | can_setup | Planned |
| GET | /scripts/folders | Папки автора (creator_id=) | can_setup | Planned |
| POST | /scripts/folders | Создать папку | can_setup | Planned |
| PATCH | /scripts/folders/{id} | Переименовать папку | can_setup | Planned |
| DELETE | /scripts/folders/{id} | Удалить папку; скрипты перемещаются в "Без папки" | can_setup | Planned |
| POST | /conversations/{id}/script | Запустить скрипт в одном разговоре (см. Conversations) | can_chat | Planned |
Объект скрипта #
{
"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"
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Начинается с scr_ |
creator_id | string | Автор, чьи фанаты получают скрипт |
name | string | Название в Console |
goal | string или null | Цель скрипта, вашими словами |
folder_id | string или null | Папка; null, "Без папки" |
active | boolean | false, скрипт не запускается |
first | boolean | true, запускается при новых разговорах |
account_ids | array или null | null, все Telegram аккаунты автора; массив, только указанные (минимум один) |
steps | array | Шаги в порядке (см. ниже) |
created_at, updated_at | string | ISO 8601, UTC |
Каждый шаг содержит:
| Поле | Тип | Описание |
|---|---|---|
id | string | Начинается с st_ |
name | string | Название в редакторе |
text | string | Сообщение, которое получает фан |
media | массив строк | ID медиа из Vault автора |
wait_minutes | number | Пауза перед отправкой шага |
pricing.mode | string | free, vault (каждое медиа по цене из Vault) или paid (одна цена за весь шаг) |
pricing.stars | number | Цена в Stars при mode = paid |
pricing.discount_stars | number | Опциональная сниженная цена в Stars |
Установка first: true для скрипта снимает этот статус с других скриптов автора.
Скрипты #
Список скриптов #
GET /scripts · can_setup
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
creator_id | string | Да | Автор |
folder_id | string | Нет | Только скрипты из этой папки |
active | boolean | Нет | true, только включённые скрипты |
limit, cursor | number, 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_id | string | Да | Автор |
name | string | Да | Название |
steps | array | Да | Шаги, как в объекте выше (без id) |
goal | string | Нет | Цель |
folder_id | string | Нет | Папка того же автора |
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
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
active | boolean | Нет | Включить или выключить |
first | boolean | Нет | true, скрипт для новых разговоров |
folder_id | string или 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_id | string | Да | Автор |
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Создать папку #
POST /scripts/folders · can_setup
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
creator_id | string | Да | Автор |
name | string | Да | Название папки |
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.