LanaChat

API: AI Brains, rascunhos e o Playground

Leitura de 6 minAtualizado Markdown

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 #

MethodPathDescriptionPermissionStatus
GET/brainsListar brains (creator_id=)can_enginePlanned
POST/brainsCriar um brain para uma criadora, vazio ou copiado de outro (copy_from)can_enginePlanned
GET/brains/{id}A versão ativa de um braincan_enginePlanned
PATCH/brains/{id}Renomear ou vincular a outra criadoracan_enginePlanned
DELETE/brains/{id}Apagar um brain que nenhuma conta usacan_enginePlanned
GET/brains/{id}/draftO rascunho atual e o que difere do ativocan_enginePlanned
PATCH/brains/{id}/draftAlterar o rascunho (fases, regras, configurações)can_enginePlanned
DELETE/brains/{id}/draftDescartar o rascunhocan_enginePlanned
POST/brains/{id}/publishPublicar o rascunho; vira ativo em todas as contas vinculadascan_publishPlanned
GET/brains/{id}/versionsVersões publicadas, da mais nova para a mais antigacan_enginePlanned
POST/brains/{id}/versions/{version}/restoreCopiar uma versão antiga para o rascunhocan_enginePlanned
POST/playground/{brain_id}/messageEnviar mensagem de teste para o rascunho e receber resposta da IAcan_enginePlanned
DELETE/playground/{brain_id}/sessionReiniciar a conversa de testecan_enginePlanned

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 }
  ]
}
FieldTypeDescription
idstringComeça com br_
namestringNome no Console
creator_idstringCriadora a que está vinculado
versionnumberVersão ativa; incrementa em 1 a cada publicação
published_atstring ou nullQuando a versão ativa foi publicada, ISO 8601 UTC
has_draftbooleantrue quando o rascunho difere da versão ativa
accountsarray de stringsContas Telegram que respondem com este brain
phasesarrayFases de venda: key, name e se cada uma está enabled

Brains #

Listar brains #

GET /brains · can_engine

ParameterTypeRequiredDescription
creator_idstringNãoApenas brains desta criadora
limit, cursornumber, stringNãoPaginaçã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

ParameterTypeRequiredDescription
creator_idstringSimA criadora para quem é
namestringNãoNome no Console
copy_fromstringNãoId 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

ParameterTypeRequiredDescription
namestringNãoNovo nome
creator_idstringNãoVincular 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

ParameterTypeRequiredDescription
phasesarrayNãoFases de venda para alterar
rulesarrayNãoRegras para alterar
settingsobjectNãoConfiguraçõ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

ParameterTypeRequiredDescription
textstringSimO que o fã de teste escreve
fanobjectNãoO 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á.
  • explain explica 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.

As últimas novidades da Lana no Telegram

Novidades e convites para o beta, primeiro no canal.