LanaChat

API: AI Brains, bozze e il Playground

6 min di letturaAggiornato Markdown

Un AI Brain contiene come l'AI vende per una creator: le sue fasi di vendita, regole e impostazioni. Modifichi una bozza, la testi nel Playground, poi la pubblichi; il brain live cambia solo alla pubblicazione. Un brain è collegato a una sola creator e può essere riutilizzato dai suoi account.

Endpoints #

MethodPathDescrizionePermessoStato
GET/brainsElenca i brain (creator_id=)can_enginePlanned
POST/brainsCrea un brain per una creator, vuoto o copiato da un altro (copy_from)can_enginePlanned
GET/brains/{id}La versione live di un braincan_enginePlanned
PATCH/brains/{id}Rinomina o collega a un'altra creatorcan_enginePlanned
DELETE/brains/{id}Elimina un brain non usato da nessun accountcan_enginePlanned
GET/brains/{id}/draftLa bozza corrente e cosa differisce dal livecan_enginePlanned
PATCH/brains/{id}/draftModifica la bozza (fasi, regole, impostazioni)can_enginePlanned
DELETE/brains/{id}/draftElimina la bozzacan_enginePlanned
POST/brains/{id}/publishPubblica la bozza; diventa live su tutti gli account collegatican_publishPlanned
GET/brains/{id}/versionsVersioni pubblicate, dalla più recentecan_enginePlanned
POST/brains/{id}/versions/{version}/restoreCopia una vecchia versione nella bozzacan_enginePlanned
POST/playground/{brain_id}/messageInvia un messaggio di test alla bozza e ricevi la risposta AIcan_enginePlanned
DELETE/playground/{brain_id}/sessionRicomincia la conversazione di testcan_enginePlanned

L'oggetto brain #

{
  "id": "br_lea_main",
  "name": "Lea · main",
  "creator_id": "cr_lea",
  "version": 12,
  "published_at": "2026-10-04T21:10:00Z",
  "has_draft": true,
  "accounts": ["acc_1001", "acc_1004"],
  "phases": [
    { "key": "warm_up", "name": "Warm up", "enabled": true },
    { "key": "first_offer", "name": "First offer", "enabled": true }
  ]
}
CampoTipoDescrizione
idstringInizia con br_
namestringIl suo nome nella Console
creator_idstringLa creator a cui è collegato
versionnumberLa versione live; aumenta di uno a ogni pubblicazione
published_atstring o nullQuando la versione live è stata pubblicata, ISO 8601 UTC
has_draftbooleantrue se esiste una bozza diversa dalla versione live
accountsarray di stringheAccount Telegram che rispondono con questo brain
phasesarrayFasi di vendita: key, name e se ciascuna è enabled

Brain #

Elenca brain #

GET /brains · can_engine

ParametroTipoObbligatorioDescrizione
creator_idstringNoSolo i brain di questa creator
limit, cursornumber, stringNoPaginazione
curl "https://api.lanachat.ai/v1/brains?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
{
  "data": [
    { "id": "br_lea_main", "name": "Lea · main", "creator_id": "cr_lea", "version": 12, "published_at": "2026-10-04T21:10:00Z", "has_draft": true, "accounts": ["acc_1001", "acc_1004"], "phases": [ { "key": "warm_up", "name": "Warm up", "enabled": true }, { "key": "first_offer", "name": "First offer", "enabled": true } ] }
  ],
  "next_cursor": null
}

Crea un brain #

POST /brains · can_engine

ParametroTipoObbligatorioDescrizione
creator_idstringSìLa creator per cui è
namestringNoIl suo nome nella Console
copy_fromstringNoId di un brain da copiare; senza di esso il brain parte vuoto
curl -X POST https://api.lanachat.ai/v1/brains \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Lea · TikTok test", "copy_from": "br_lea_main"}'

La risposta è il nuovo brain (201). Un copy_from che non esiste in questo workspace risponde 404.

Ottieni un brain #

GET /brains/{id} · can_engine

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

La risposta è la versione live, come l'oggetto brain. La bozza si legge con GET /brains/{id}/draft.

Rinomina o ricollega un brain #

PATCH /brains/{id} · can_engine

ParametroTipoObbligatorioDescrizione
namestringNoNuovo nome
creator_idstringNoCollegalo a un'altra creator
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Lea · main FR"}'

La risposta è il brain aggiornato.

Elimina un brain #

DELETE /brains/{id} · can_engine

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

Un brain ancora usato da un account viene rifiutato (409): collega prima quegli account a un altro brain.

Bozze e pubblicazione #

Leggi la bozza #

GET /brains/{id}/draft · can_engine

curl https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La risposta è la bozza corrente (fasi, regole e impostazioni) e cosa differisce dalla versione live.

Modifica la bozza #

PATCH /brains/{id}/draft · can_engine

ParametroTipoObbligatorioDescrizione
phasesarrayNoFasi di vendita da modificare
rulesarrayNoRegole da modificare
settingsobjectNoImpostazioni da modificare, per esempio first_offer_after_messages o max_discount_percent
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"settings": {"first_offer_after_messages": 6, "max_discount_percent": 20}}'

Cambiano solo i campi che invii. Il brain live non si modifica finché non pubblichi.

Elimina la bozza #

DELETE /brains/{id}/draft · can_engine

curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_main/draft \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La bozza viene eliminata; la versione live resta com'è e has_draft diventa false.

Pubblica la bozza #

POST /brains/{id}/publish · can_publish

curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/publish \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{ "id": "br_lea_main", "version": 13, "published_at": "2026-10-06T14:20:03Z", "has_draft": false }

La bozza diventa live su ogni account collegato. Pubblicare senza bozza risponde 409. I profili AI avanzati richiedono permessi proprietario, come nella Console. Un webhook brain.published avvisa il tuo server.

Versioni #

Elenca versioni #

GET /brains/{id}/versions · can_engine

curl https://api.lanachat.ai/v1/brains/br_lea_main/versions \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La risposta elenca le versioni pubblicate, dalla più recente, paginata.

Ripristina una versione #

POST /brains/{id}/versions/{version}/restore · can_engine

curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/versions/11/restore \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

La vecchia versione viene copiata nella bozza. Per i fan non cambia nulla finché non pubblichi. Una versione sconosciuta risponde 404.

Playground #

Il Playground parla con la bozza, mai con un fan. Nulla viene inviato su Telegram e nulla viene venduto.

Invia un messaggio di test #

POST /playground/{brain_id}/message · can_engine

ParametroTipoObbligatorioDescrizione
textstringSìCosa scrive il fan di test
fanobjectNoIl fan di test: language (per esempio en) e is_new
curl -X POST https://api.lanachat.ai/v1/playground/br_lea_main/message \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"text": "hey, are you real?", "fan": {"language": "en", "is_new": true}}'
{
  "reply": { "text": "Haha very real, just slow at typing 🙈 where are you from?", "media": [] },
  "phase": "warm_up",
  "explain": "Phrase bank answer for \"Are you a bot?\", then a question to keep the fan talking."
}
  • reply è ciò che l'AI invierebbe: testo e media.
  • phase è la fase di vendita in cui si trova l'AI.
  • explain spiega in parole semplici perché ha risposto così.

Ogni chiamata continua la stessa conversazione di test.

Ricomincia la conversazione di test #

DELETE /playground/{brain_id}/session · can_engine

curl -X DELETE https://api.lanachat.ai/v1/playground/br_lea_main/session \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Il prossimo messaggio di test inizia una nuova conversazione, come un fan nuovo.

Le ultime novità su Lana su Telegram

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