API: skrypty, kroki i foldery
Skrypt to ustalona sekwencja kroków dla jednej twórczyni: każdy krok to tekst, opcjonalnie media z Vault, cena w Stars i czas oczekiwania przed kolejnym krokiem. Skrypty są w folderach. Jeden skrypt na twórczynię może być oznaczony jako first: uruchamia się przy nowych rozmowach.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /scripts | Lista skryptów (creator_id= wymagany, folder_id=, active=true) | can_setup | Planned |
| POST | /scripts | Utwórz skrypt z krokami | can_setup | Planned |
| GET | /scripts/{id} | Jeden skrypt i jego kroki | can_setup | Planned |
| PUT | /scripts/{id} | Zastąp skrypt (nazwa, kroki, folder, konta) | can_setup | Planned |
| PATCH | /scripts/{id} | Włącz/wyłącz, oznacz jako first, przenieś do folderu | can_setup | Planned |
| POST | /scripts/{id}/duplicate | Skopiuj skrypt (kopia nigdy nie jest first) | can_setup | Planned |
| DELETE | /scripts/{id} | Usuń skrypt | can_setup | Planned |
| GET | /scripts/folders | Foldery twórczyni (creator_id=) | can_setup | Planned |
| POST | /scripts/folders | Utwórz folder | can_setup | Planned |
| PATCH | /scripts/folders/{id} | Zmień nazwę folderu | can_setup | Planned |
| DELETE | /scripts/folders/{id} | Usuń folder; jego skrypty trafiają do "No folder" | can_setup | Planned |
| POST | /conversations/{id}/script | Uruchom skrypt w jednej rozmowie (patrz Conversations) | can_chat | Planned |
Obiekt skryptu #
{
"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"
}
| Field | Type | Description |
|---|---|---|
id | string | Zaczyna się od scr_ |
creator_id | string | Twórczyni, której fani otrzymują skrypt |
name | string | Nazwa w Console |
goal | string or null | Cel skryptu, własnymi słowami |
folder_id | string or null | Folder; null to "No folder" |
active | boolean | false oznacza, że nigdy się nie uruchomi |
first | boolean | true oznacza, że uruchamia się przy nowych rozmowach |
account_ids | array or null | null oznacza wszystkie konta Telegram twórczyni; tablica tylko te (przynajmniej jedno) |
steps | array | Kroki, w kolejności (patrz niżej) |
created_at, updated_at | string | ISO 8601, UTC |
Każdy krok zawiera:
| Field | Type | Description |
|---|---|---|
id | string | Zaczyna się od st_ |
name | string | Nazwa w edytorze |
text | string | Wiadomość, którą otrzyma fan |
media | array of strings | Id mediów z Vault twórczyni |
wait_minutes | number | Czas oczekiwania przed wysłaniem tego kroku |
pricing.mode | string | free, vault (każde medium w cenie z Vault) lub paid (jedna cena za cały krok) |
pricing.stars | number | Cena w Stars, gdy mode to paid |
pricing.discount_stars | number | Opcjonalnie niższa cena w Stars |
Ustawienie first: true w skrypcie usuwa to oznaczenie z innych skryptów twórczyni.
Skrypty #
Lista skryptów #
GET /scripts · can_setup
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Yes | Twórczyni |
folder_id | string | No | Tylko skrypty z tego folderu |
active | boolean | No | true tylko aktywne skrypty |
limit, cursor | number, string | No | Paginacja |
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź to strona z obiektami skryptów w data, z next_cursor. Bez creator_id API zwraca 400.
Utwórz skrypt #
POST /scripts · can_setup
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Yes | Twórczyni |
name | string | Yes | Nazwa skryptu |
steps | array | Yes | Kroki, jak w obiekcie powyżej (bez id) |
goal | string | No | Cel skryptu |
folder_id | string | No | Folder tej samej twórczyni |
account_ids | array of strings | No | Tylko te konta; pomiń, by wszystkie |
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"
}
Odpowiedź to nowy skrypt (201), aktywny, nie first, bez folderu. Id medium z Vault innej twórczyni jest odrzucane (400).
Pobierz skrypt #
GET /scripts/{id} · can_setup
curl https://api.lanachat.ai/v1/scripts/scr_204 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź to obiekt skryptu ze wszystkimi krokami.
Zastąp skrypt #
PUT /scripts/{id} · can_setup
Wyślij cały skrypt: name, steps, folder_id i account_ids, jak w Utwórz skrypt. Kroki pominięte zostaną usunięte.
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}}]}'
Odpowiedź to zaktualizowany skrypt. Pusta tablica account_ids zwraca 400: użyj null dla wszystkich kont.
Włącz, oznacz jako first, przenieś #
PATCH /scripts/{id} · can_setup
| Parameter | Type | Required | Description |
|---|---|---|---|
active | boolean | No | Włącz lub wyłącz |
first | boolean | No | true ustawia jako skrypt nowych rozmów |
folder_id | string or null | No | Przenieś; null to "No folder" |
curl -X PATCH https://api.lanachat.ai/v1/scripts/scr_231 \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"first": true}'
Odpowiedź to zaktualizowany skrypt. Poprzedni skrypt first tej twórczyni traci oznaczenie first.
Duplikuj skrypt #
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)"
Odpowiedź to kopia (201). Kopia nigdy nie jest first.
Usuń skrypt #
DELETE /scripts/{id} · can_setup
curl -X DELETE https://api.lanachat.ai/v1/scripts/scr_231 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Foldery #
Lista folderów #
GET /scripts/folders · can_setup
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Yes | Twórczyni |
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Utwórz folder #
POST /scripts/folders · can_setup
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Yes | Twórczyni |
name | string | Yes | Nazwa folderu |
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"}'
Zmień nazwę folderu #
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"}'
Usuń folder #
DELETE /scripts/folders/{id} · can_setup
curl -X DELETE https://api.lanachat.ai/v1/scripts/folders/fld_12 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Skrypty z folderu zostają i trafiają do "No folder".
Uruchom skrypt w rozmowie #
POST /conversations/{id}/script · can_chat
Uruchamia skrypt w rozmowie z jednym fanem: state zmienia się na script do końca skryptu. Treść, przykład i zasady znajdziesz w Conversations.