LanaChat

API: scripts, etapas e pastas

Leitura de 5 minAtualizado Markdown

Um script é uma sequência fixa de etapas para uma criadora: cada etapa é um texto, mídia opcional do Vault, um preço em Stars e uma espera antes da próxima. Scripts ficam em pastas. Um script por criadora pode ser marcado como first: ele roda em conversas novas.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/scriptsListar scripts (creator_id= obrigatório, folder_id=, active=true)can_setupPlanned
POST/scriptsCriar um script com suas etapascan_setupPlanned
GET/scripts/{id}Um script e suas etapascan_setupPlanned
PUT/scripts/{id}Substituir um script (nome, etapas, pasta, contas)can_setupPlanned
PATCH/scripts/{id}Ativar ou desativar, marcar como first, mover para uma pastacan_setupPlanned
POST/scripts/{id}/duplicateCopiar um script (a cópia nunca é first)can_setupPlanned
DELETE/scripts/{id}Deletar um scriptcan_setupPlanned
GET/scripts/foldersPastas de uma criadora (creator_id=)can_setupPlanned
POST/scripts/foldersCriar uma pastacan_setupPlanned
PATCH/scripts/folders/{id}Renomear uma pastacan_setupPlanned
DELETE/scripts/folders/{id}Deletar uma pasta; seus scripts vão para "No folder"can_setupPlanned
POST/conversations/{id}/scriptRodar um script em uma conversa (veja Conversations)can_chatPlanned

O objeto 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"
}
CampoTipoDescrição
idstringComeça com scr_
creator_idstringA criadora cujos fãs recebem o script
namestringNome no Console
goalstring ou nullPara que serve o script, em suas palavras
folder_idstring ou nullPasta do script; null é "No folder"
activebooleanfalse significa que nunca roda
firstbooleantrue significa que roda em conversas novas
account_idsarray ou nullnull significa todas as contas Telegram da criadora; array significa só essas (pelo menos uma)
stepsarrayAs etapas, em ordem (veja abaixo)
created_at, updated_atstringISO 8601, UTC

Cada etapa tem:

CampoTipoDescrição
idstringComeça com st_
namestringNome no editor
textstringMensagem que o fã recebe
mediaarray de stringsIDs de mídia do Vault da criadora
wait_minutesnumberEspera antes de enviar esta etapa
pricing.modestringfree, vault (cada mídia pelo preço do Vault) ou paid (um preço para toda a etapa)
pricing.starsnumberPreço em Stars, quando mode é paid
pricing.discount_starsnumberPreço opcional menor em Stars

Definir first: true em um script remove essa marca dos outros scripts da criadora.

Scripts #

Listar scripts #

GET /scripts · can_setup

ParâmetroTipoObrigatórioDescrição
creator_idstringSimA criadora
folder_idstringNãoSó os scripts desta pasta
activebooleanNãotrue lista só scripts ativos
limit, cursornumber, stringNãoPaginação
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

A resposta é uma página de objetos script em data, com next_cursor. Sem creator_id a API responde 400.

Criar um script #

POST /scripts · can_setup

ParâmetroTipoObrigatórioDescrição
creator_idstringSimA criadora
namestringSimNome do script
stepsarraySimEtapas, como no objeto acima (sem id)
goalstringNãoPara que serve
folder_idstringNãoPasta da mesma criadora
account_idsarray de stringsNãoSó essas contas; omita para todas
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"
}

A resposta é o script novo (201), ativo, não first, sem pasta. Um id de mídia do Vault de outra criadora é recusado (400).

Obter um script #

GET /scripts/{id} · can_setup

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

A resposta é o objeto script com todas as suas etapas.

Substituir um script #

PUT /scripts/{id} · can_setup

Envie o script completo: name, steps, folder_id e account_ids, como em Criar um script. Etapas omitidas são removidas.

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

A resposta é o script atualizado. Um array vazio em account_ids responde 400: use null para todas as contas.

Ativar, marcar first, mover #

PATCH /scripts/{id} · can_setup

ParâmetroTipoObrigatórioDescrição
activebooleanNãoAtiva ou desativa
firstbooleanNãotrue torna o script das conversas novas
folder_idstring ou nullNãoMove o script; 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}'

A resposta é o script atualizado. O script first anterior da criadora perde a marcação first.

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

A resposta é a cópia (201). A cópia nunca é first.

Deletar um script #

DELETE /scripts/{id} · can_setup

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

Pastas #

Listar pastas #

GET /scripts/folders · can_setup

ParâmetroTipoObrigatórioDescrição
creator_idstringSimA criadora
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Criar uma pasta #

POST /scripts/folders · can_setup

ParâmetroTipoObrigatórioDescrição
creator_idstringSimA criadora
namestringSimNome da pasta
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"}'

Renomear uma pasta #

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

Deletar uma pasta #

DELETE /scripts/folders/{id} · can_setup

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

Seus scripts são mantidos e movidos para "No folder".

Rodar um script em uma conversa #

POST /conversations/{id}/script · can_chat

Inicia um script em uma conversa com um fã: state vira script até o fim. Corpo, exemplo e regras estão em Conversations.

As últimas novidades da Lana no Telegram

Novidades e convites para o beta, primeiro no canal.