LanaChat

API: AI Brains, borradores y el Playground

6 min de lecturaActualizado Markdown

Un AI Brain contiene cómo la IA vende para una creadora: sus fases de venta, reglas y configuraciones. Cambias un borrador, lo pruebas en el Playground, luego lo publicas; el brain en vivo solo cambia al publicar. Un brain está vinculado a una creadora y puede ser reutilizado por sus cuentas.

Endpoints #

MétodoRutaDescripciónPermisoEstado
GET/brainsListar brains (creator_id=)can_enginePlanned
POST/brainsCrear un brain para una creadora, vacío o copiado de otro (copy_from)can_enginePlanned
GET/brains/{id}La versión en vivo de un braincan_enginePlanned
PATCH/brains/{id}Renombrar o vincular a otra creadoracan_enginePlanned
DELETE/brains/{id}Eliminar un brain que ninguna cuenta usecan_enginePlanned
GET/brains/{id}/draftEl borrador actual y qué difiere del vivocan_enginePlanned
PATCH/brains/{id}/draftCambiar el borrador (fases, reglas, configuraciones)can_enginePlanned
DELETE/brains/{id}/draftDesechar el borradorcan_enginePlanned
POST/brains/{id}/publishPublicar el borrador; se vuelve vivo en todas las cuentas vinculadascan_publishPlanned
GET/brains/{id}/versionsVersiones publicadas, la más nueva primerocan_enginePlanned
POST/brains/{id}/versions/{version}/restoreCopiar una versión antigua al borradorcan_enginePlanned
POST/playground/{brain_id}/messageEnviar un mensaje de prueba al borrador y obtener la respuesta de la IAcan_enginePlanned
DELETE/playground/{brain_id}/sessionReiniciar la conversación de pruebacan_enginePlanned

El 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 }
  ]
}
CampoTipoDescripción
idstringEmpieza con br_
namestringSu nombre en la Console
creator_idstringLa creadora a la que está vinculado
versionnumberLa versión en vivo; aumenta en uno con cada publicación
published_atstring o nullCuándo se publicó la versión en vivo, ISO 8601 UTC
has_draftbooleantrue cuando un borrador difiere de la versión en vivo
accountsarray de stringsCuentas de Telegram que responden con este brain
phasesarrayFases de venta: key, name y si cada una está enabled

Brains #

Listar brains #

GET /brains · can_engine

ParámetroTipoRequeridoDescripción
creator_idstringNoSolo los brains de esta creadora
limit, cursornumber, stringNoPaginación
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
}

Crear un brain #

POST /brains · can_engine

ParámetroTipoRequeridoDescripción
creator_idstringSíLa creadora para quien es
namestringNoSu nombre en la Console
copy_fromstringNoId de un brain para copiar; sin él el brain empieza vacío
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 respuesta es el brain nuevo (201). Un copy_from que no exista en este workspace responde 404.

Obtener un brain #

GET /brains/{id} · can_engine

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

La respuesta es la versión en vivo, como el objeto brain. El borrador se lee con GET /brains/{id}/draft.

Renombrar o vincular un brain #

PATCH /brains/{id} · can_engine

ParámetroTipoRequeridoDescripción
namestringNoNuevo nombre
creator_idstringNoVincularlo a otra creadora
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 respuesta es el brain actualizado.

Eliminar 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 que una cuenta aún usa es rechazado (409): vincula esas cuentas a otro brain primero.

Borradores y publicación #

Leer el borrador #

GET /brains/{id}/draft · can_engine

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

La respuesta es el borrador actual (fases, reglas y configuraciones) y qué difiere de la versión en vivo.

Cambiar el borrador #

PATCH /brains/{id}/draft · can_engine

ParámetroTipoRequeridoDescripción
phasesarrayNoFases de venta a cambiar
rulesarrayNoReglas a cambiar
settingsobjectNoConfiguraciones a cambiar, por ejemplo 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}}'

Solo cambian los campos que envíes. El brain en vivo no cambia hasta que publiques.

Desechar el borrador #

DELETE /brains/{id}/draft · can_engine

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

El borrador se elimina; la versión en vivo queda igual y has_draft pasa a false.

Publicar el borrador #

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 }

El borrador se vuelve vivo en todas las cuentas vinculadas. Publicar sin borrador responde 409. Los perfiles avanzados de IA necesitan permisos propios de propietario, como en la Console. Un webhook brain.published avisa a tu servidor.

Versiones #

Listar versiones #

GET /brains/{id}/versions · can_engine

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

La respuesta lista las versiones publicadas, la más nueva primero, paginadas.

Restaurar una versión #

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 versión antigua se copia al borrador. Nada cambia para los fans hasta que publiques. Una versión desconocida responde 404.

Playground #

El Playground habla con el borrador, nunca con un fan. No se envía nada a Telegram y no se vende nada.

Enviar un mensaje de prueba #

POST /playground/{brain_id}/message · can_engine

ParámetroTipoRequeridoDescripción
textstringSíLo que escribe el fan de prueba
fanobjectNoEl fan de prueba: language (por ejemplo en) y 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 es lo que la IA enviaría: texto y medios.
  • phase es la fase de venta en la que está la IA.
  • explain explica en inglés simple por qué respondió así.

Cada llamada continúa la misma conversación de prueba.

Reiniciar la conversación de prueba #

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"

El siguiente mensaje de prueba inicia una conversación nueva, como un fan nuevo.

Las últimas novedades de Lana en Telegram

Novedades e invitaciones a la beta, primero en el canal.