LanaChat

API: skrypty, kroki i foldery

5 min czytaniaZaktualizowano Markdown

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 #

MethodPathDescriptionPermissionStatus
GET/scriptsLista skryptów (creator_id= wymagany, folder_id=, active=true)can_setupPlanned
POST/scriptsUtwórz skrypt z krokamican_setupPlanned
GET/scripts/{id}Jeden skrypt i jego krokican_setupPlanned
PUT/scripts/{id}Zastąp skrypt (nazwa, kroki, folder, konta)can_setupPlanned
PATCH/scripts/{id}Włącz/wyłącz, oznacz jako first, przenieś do folderucan_setupPlanned
POST/scripts/{id}/duplicateSkopiuj skrypt (kopia nigdy nie jest first)can_setupPlanned
DELETE/scripts/{id}Usuń skryptcan_setupPlanned
GET/scripts/foldersFoldery twórczyni (creator_id=)can_setupPlanned
POST/scripts/foldersUtwórz foldercan_setupPlanned
PATCH/scripts/folders/{id}Zmień nazwę folderucan_setupPlanned
DELETE/scripts/folders/{id}Usuń folder; jego skrypty trafiają do "No folder"can_setupPlanned
POST/conversations/{id}/scriptUruchom skrypt w jednej rozmowie (patrz Conversations)can_chatPlanned

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"
}
FieldTypeDescription
idstringZaczyna się od scr_
creator_idstringTwórczyni, której fani otrzymują skrypt
namestringNazwa w Console
goalstring or nullCel skryptu, własnymi słowami
folder_idstring or nullFolder; null to "No folder"
activebooleanfalse oznacza, że nigdy się nie uruchomi
firstbooleantrue oznacza, że uruchamia się przy nowych rozmowach
account_idsarray or nullnull oznacza wszystkie konta Telegram twórczyni; tablica tylko te (przynajmniej jedno)
stepsarrayKroki, w kolejności (patrz niżej)
created_at, updated_atstringISO 8601, UTC

Każdy krok zawiera:

FieldTypeDescription
idstringZaczyna się od st_
namestringNazwa w edytorze
textstringWiadomość, którą otrzyma fan
mediaarray of stringsId mediów z Vault twórczyni
wait_minutesnumberCzas oczekiwania przed wysłaniem tego kroku
pricing.modestringfree, vault (każde medium w cenie z Vault) lub paid (jedna cena za cały krok)
pricing.starsnumberCena w Stars, gdy mode to paid
pricing.discount_starsnumberOpcjonalnie 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

ParameterTypeRequiredDescription
creator_idstringYesTwórczyni
folder_idstringNoTylko skrypty z tego folderu
activebooleanNotrue tylko aktywne skrypty
limit, cursornumber, stringNoPaginacja
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

ParameterTypeRequiredDescription
creator_idstringYesTwórczyni
namestringYesNazwa skryptu
stepsarrayYesKroki, jak w obiekcie powyżej (bez id)
goalstringNoCel skryptu
folder_idstringNoFolder tej samej twórczyni
account_idsarray of stringsNoTylko 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

ParameterTypeRequiredDescription
activebooleanNoWłącz lub wyłącz
firstbooleanNotrue ustawia jako skrypt nowych rozmów
folder_idstring or nullNoPrzenieś; 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

ParameterTypeRequiredDescription
creator_idstringYesTwó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

ParameterTypeRequiredDescription
creator_idstringYesTwórczyni
namestringYesNazwa 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.

Najnowsze wieści o Lanie na Telegramie

Nowości i zaproszenia do bety, najpierw na kanale.