API: scripts, etapas e pastas
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 #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /scripts | Listar scripts (creator_id= obrigatório, folder_id=, active=true) | can_setup | Planned |
| POST | /scripts | Criar um script com suas etapas | can_setup | Planned |
| GET | /scripts/{id} | Um script e suas etapas | can_setup | Planned |
| PUT | /scripts/{id} | Substituir um script (nome, etapas, pasta, contas) | can_setup | Planned |
| PATCH | /scripts/{id} | Ativar ou desativar, marcar como first, mover para uma pasta | can_setup | Planned |
| POST | /scripts/{id}/duplicate | Copiar um script (a cópia nunca é first) | can_setup | Planned |
| DELETE | /scripts/{id} | Deletar um script | can_setup | Planned |
| GET | /scripts/folders | Pastas de uma criadora (creator_id=) | can_setup | Planned |
| POST | /scripts/folders | Criar uma pasta | can_setup | Planned |
| PATCH | /scripts/folders/{id} | Renomear uma pasta | can_setup | Planned |
| DELETE | /scripts/folders/{id} | Deletar uma pasta; seus scripts vão para "No folder" | can_setup | Planned |
| POST | /conversations/{id}/script | Rodar um script em uma conversa (veja Conversations) | can_chat | Planned |
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"
}
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Começa com scr_ |
creator_id | string | A criadora cujos fãs recebem o script |
name | string | Nome no Console |
goal | string ou null | Para que serve o script, em suas palavras |
folder_id | string ou null | Pasta do script; null é "No folder" |
active | boolean | false significa que nunca roda |
first | boolean | true significa que roda em conversas novas |
account_ids | array ou null | null significa todas as contas Telegram da criadora; array significa só essas (pelo menos uma) |
steps | array | As etapas, em ordem (veja abaixo) |
created_at, updated_at | string | ISO 8601, UTC |
Cada etapa tem:
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Começa com st_ |
name | string | Nome no editor |
text | string | Mensagem que o fã recebe |
media | array de strings | IDs de mídia do Vault da criadora |
wait_minutes | number | Espera antes de enviar esta etapa |
pricing.mode | string | free, vault (cada mídia pelo preço do Vault) ou paid (um preço para toda a etapa) |
pricing.stars | number | Preço em Stars, quando mode é paid |
pricing.discount_stars | number | Preç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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
creator_id | string | Sim | A criadora |
folder_id | string | Não | Só os scripts desta pasta |
active | boolean | Não | true lista só scripts ativos |
limit, cursor | number, string | Não | Paginaçã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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
creator_id | string | Sim | A criadora |
name | string | Sim | Nome do script |
steps | array | Sim | Etapas, como no objeto acima (sem id) |
goal | string | Não | Para que serve |
folder_id | string | Não | Pasta da mesma criadora |
account_ids | array de strings | Não | Só 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
active | boolean | Não | Ativa ou desativa |
first | boolean | Não | true torna o script das conversas novas |
folder_id | string ou null | Não | Move 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
creator_id | string | Sim | A 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
creator_id | string | Sim | A criadora |
name | string | Sim | Nome 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.