API: AI Brains, rascunhos e o Playground
Um AI Brain guarda como a IA vende para uma criadora: suas fases de venda, regras e configurações. Você altera um rascunho, testa no Playground e então publica; o brain ativo só muda ao publicar. Um brain está vinculado a uma criadora e pode ser reutilizado pelas contas dela.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /brains | Listar brains (creator_id=) | can_engine | Planned |
| POST | /brains | Criar um brain para uma criadora, vazio ou copiado de outro (copy_from) | can_engine | Planned |
| GET | /brains/{id} | A versão ativa de um brain | can_engine | Planned |
| PATCH | /brains/{id} | Renomear ou vincular a outra criadora | can_engine | Planned |
| DELETE | /brains/{id} | Apagar um brain que nenhuma conta usa | can_engine | Planned |
| GET | /brains/{id}/draft | O rascunho atual e o que difere do ativo | can_engine | Planned |
| PATCH | /brains/{id}/draft | Alterar o rascunho (fases, regras, configurações) | can_engine | Planned |
| DELETE | /brains/{id}/draft | Descartar o rascunho | can_engine | Planned |
| POST | /brains/{id}/publish | Publicar o rascunho; vira ativo em todas as contas vinculadas | can_publish | Planned |
| GET | /brains/{id}/versions | Versões publicadas, da mais nova para a mais antiga | can_engine | Planned |
| POST | /brains/{id}/versions/{version}/restore | Copiar uma versão antiga para o rascunho | can_engine | Planned |
| POST | /playground/{brain_id}/message | Enviar mensagem de teste para o rascunho e receber resposta da IA | can_engine | Planned |
| DELETE | /playground/{brain_id}/session | Reiniciar a conversa de teste | can_engine | Planned |
O objeto 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 }
]
}
| Field | Type | Description |
|---|---|---|
id | string | Começa com br_ |
name | string | Nome no Console |
creator_id | string | Criadora a que está vinculado |
version | number | Versão ativa; incrementa em 1 a cada publicação |
published_at | string ou null | Quando a versão ativa foi publicada, ISO 8601 UTC |
has_draft | boolean | true quando o rascunho difere da versão ativa |
accounts | array de strings | Contas Telegram que respondem com este brain |
phases | array | Fases de venda: key, name e se cada uma está enabled |
Brains #
Listar brains #
GET /brains · can_engine
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Não | Apenas brains desta criadora |
limit, cursor | number, string | Não | Paginação |
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
}
Criar um brain #
POST /brains · can_engine
| Parameter | Type | Required | Description |
|---|---|---|---|
creator_id | string | Sim | A criadora para quem é |
name | string | Não | Nome no Console |
copy_from | string | Não | Id de um brain para copiar; sem ele o brain começa vazio |
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"}'
A resposta é o brain novo (201). Um copy_from que não existe neste workspace responde 404.
Obter um brain #
GET /brains/{id} · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main \
-H "Authorization: Bearer $LANACHAT_TOKEN"
A resposta é a versão ativa, como o objeto brain. O rascunho é lido com GET /brains/{id}/draft.
Renomear ou vincular um brain #
PATCH /brains/{id} · can_engine
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Não | Novo nome |
creator_id | string | Não | Vincular a outra criadora |
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"}'
A resposta é o brain atualizado.
Apagar um brain #
DELETE /brains/{id} · can_engine
curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_old \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Um brain que ainda é usado por alguma conta é recusado (409): vincule essas contas a outro brain primeiro.
Rascunhos e publicação #
Ler o rascunho #
GET /brains/{id}/draft · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main/draft \
-H "Authorization: Bearer $LANACHAT_TOKEN"
A resposta é o rascunho atual (fases, regras e configurações) e o que difere da versão ativa.
Alterar o rascunho #
PATCH /brains/{id}/draft · can_engine
| Parameter | Type | Required | Description |
|---|---|---|---|
phases | array | Não | Fases de venda para alterar |
rules | array | Não | Regras para alterar |
settings | object | Não | Configurações para alterar, por exemplo first_offer_after_messages ou 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}}'
Só os campos enviados são alterados. O brain ativo não muda até você publicar.
Descartar o rascunho #
DELETE /brains/{id}/draft · can_engine
curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_main/draft \
-H "Authorization: Bearer $LANACHAT_TOKEN"
O rascunho é apagado; a versão ativa permanece e has_draft vira false.
Publicar o rascunho #
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 }
O rascunho vira ativo em todas as contas vinculadas. Publicar sem rascunho responde 409. Perfis avançados de IA precisam de permissões próprias do dono, como no Console. Um webhook brain.published avisa seu servidor.
Versões #
Listar versões #
GET /brains/{id}/versions · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main/versions \
-H "Authorization: Bearer $LANACHAT_TOKEN"
A resposta lista as versões publicadas, da mais nova para a mais antiga, paginadas.
Restaurar uma versão #
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)"
A versão antiga é copiada para o rascunho. Nada muda para os fãs até você publicar. Uma versão desconhecida responde 404.
Playground #
O Playground conversa com o rascunho, nunca com um fã. Nada é enviado no Telegram e nada é vendido.
Enviar mensagem de teste #
POST /playground/{brain_id}/message · can_engine
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Sim | O que o fã de teste escreve |
fan | object | Não | O fã de teste: language (por exemplo 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é o que a IA enviaria: texto e mídia.phaseé a fase de venda em que a IA está.explainexplica em inglês simples por que respondeu assim.
Cada chamada continua a mesma conversa de teste.
Reiniciar a conversa de teste #
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"
A próxima mensagem de teste inicia uma conversa nova, como um fã novo.