LanaChat

API: script, passaggi e cartelle

5 min di letturaAggiornato Markdown

Un script è una sequenza fissa di passaggi per una creator: ogni passaggio è un testo, media opzionali dal Vault, un prezzo in Stars e un'attesa prima del successivo. Gli script sono organizzati in cartelle. Uno script per creator può essere contrassegnato come first: viene eseguito nelle nuove conversazioni.

Endpoint #

MetodoPercorsoDescrizionePermessoStato
GET/scriptsElenca gli script (creator_id= obbligatorio, folder_id=, active=true)can_setupPlanned
POST/scriptsCrea uno script con i suoi passaggican_setupPlanned
GET/scripts/{id}Uno script e i suoi passaggican_setupPlanned
PUT/scripts/{id}Sostituisce uno script (nome, passaggi, cartella, account)can_setupPlanned
PATCH/scripts/{id}Attiva/disattiva, contrassegna come first, sposta in una cartellacan_setupPlanned
POST/scripts/{id}/duplicateDuplica uno script (la copia non è mai first)can_setupPlanned
DELETE/scripts/{id}Elimina uno scriptcan_setupPlanned
GET/scripts/foldersCartelle di una creator (creator_id=)can_setupPlanned
POST/scripts/foldersCrea una cartellacan_setupPlanned
PATCH/scripts/folders/{id}Rinomina una cartellacan_setupPlanned
DELETE/scripts/folders/{id}Elimina una cartella; gli script si spostano in "No folder"can_setupPlanned
POST/conversations/{id}/scriptEsegue uno script su una conversazione (vedi Conversations)can_chatPlanned

L'oggetto script #

{
  "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"
}
CampoTipoDescrizione
idstringaInizia con scr_
creator_idstringaLa creator i cui fans lo ricevono
namestringaIl nome nella Console
goalstringa o nullA cosa serve lo script, a parole tue
folder_idstringa o nullLa cartella; null è "No folder"
activebooleanofalse significa che non viene mai eseguito
firstbooleanotrue significa che si esegue nelle nuove conversazioni
account_idsarray o nullnull significa tutti gli account Telegram della creator; un array significa solo quelli (almeno uno)
stepsarrayI passaggi, in ordine (vedi sotto)
created_at, updated_atstringaISO 8601, UTC

Ogni passaggio ha:

CampoTipoDescrizione
idstringaInizia con st_
namestringaIl nome nell'editor
textstringaIl messaggio che riceve il fan
mediaarray di stringheId dei media dal Vault della creator
wait_minutesnumeroAttesa prima dell'invio del passaggio
pricing.modestringafree, vault (ogni media al suo prezzo Vault) o paid (un prezzo per tutto il passaggio)
pricing.starsnumeroPrezzo in Stars, se mode è paid
pricing.discount_starsnumeroPrezzo inferiore opzionale in Stars

Impostare first: true su uno script lo rimuove dagli altri script della creator.

Script #

Elenca gli script #

GET /scripts · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringaSìLa creator
folder_idstringaNoSolo gli script di questa cartella
activebooleanoNotrue elenca solo gli script attivi
limit, cursornumero, stringaNoPaginazione
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La risposta è una pagina di oggetti script in data, con next_cursor. Senza creator_id l'API risponde 400.

Crea uno script #

POST /scripts · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringaSìLa creator
namestringaSìIl nome
stepsarraySìI passaggi, come nell'oggetto sopra (senza id)
goalstringaNoA cosa serve
folder_idstringaNoUna cartella della stessa creator
account_idsarray di stringheNoSolo questi account; omettilo per tutti
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"
}

La risposta è il nuovo script (201), attivo, non first, senza cartella. Un id media da Vault di un'altra creator è rifiutato (400).

Ottieni uno script #

GET /scripts/{id} · can_setup

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

La risposta è l'oggetto script con tutti i suoi passaggi.

Sostituisci uno script #

PUT /scripts/{id} · can_setup

Invia lo script completo: name, steps, folder_id e account_ids, come in Crea uno script. I passaggi omessi vengono rimossi.

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}}]}'

La risposta è lo script aggiornato. Un array account_ids vuoto risponde 400: usa null per tutti gli account.

Attiva, contrassegna first, sposta #

PATCH /scripts/{id} · can_setup

ParametroTipoObbligatorioDescrizione
activebooleanoNoAttiva o disattiva
firstbooleanoNotrue lo rende lo script delle nuove conversazioni
folder_idstringa o nullNoSpostalo; null è "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}'

La risposta è lo script aggiornato. Il precedente script first della creator perde il flag first.

Duplica uno script #

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)"

La risposta è la copia (201). La copia non è mai first.

Elimina uno script #

DELETE /scripts/{id} · can_setup

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

Cartelle #

Elenca le cartelle #

GET /scripts/folders · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringaSìLa creator
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Crea una cartella #

POST /scripts/folders · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringaSìLa creator
namestringaSìNome della cartella
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"}'

Rinomina una cartella #

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"}'

Elimina una cartella #

DELETE /scripts/folders/{id} · can_setup

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

Gli script della cartella vengono mantenuti e spostati in "No folder".

Esegui uno script su una conversazione #

POST /conversations/{id}/script · can_chat

Avvia uno script su una conversazione con un fan: lo state diventa script finché non termina. Corpo, esempio e regole sono in Conversations.

Le ultime novità su Lana su Telegram

Novità e inviti alla beta, prima di tutto nel canale.