API: AI Brains, borradores y el Playground
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étodo | Ruta | Descripción | Permiso | Estado |
|---|---|---|---|---|
| GET | /brains | Listar brains (creator_id=) | can_engine | Planned |
| POST | /brains | Crear un brain para una creadora, vacío o copiado de otro (copy_from) | can_engine | Planned |
| GET | /brains/{id} | La versión en vivo de un brain | can_engine | Planned |
| PATCH | /brains/{id} | Renombrar o vincular a otra creadora | can_engine | Planned |
| DELETE | /brains/{id} | Eliminar un brain que ninguna cuenta use | can_engine | Planned |
| GET | /brains/{id}/draft | El borrador actual y qué difiere del vivo | can_engine | Planned |
| PATCH | /brains/{id}/draft | Cambiar el borrador (fases, reglas, configuraciones) | can_engine | Planned |
| DELETE | /brains/{id}/draft | Desechar el borrador | can_engine | Planned |
| POST | /brains/{id}/publish | Publicar el borrador; se vuelve vivo en todas las cuentas vinculadas | can_publish | Planned |
| GET | /brains/{id}/versions | Versiones publicadas, la más nueva primero | can_engine | Planned |
| POST | /brains/{id}/versions/{version}/restore | Copiar una versión antigua al borrador | can_engine | Planned |
| POST | /playground/{brain_id}/message | Enviar un mensaje de prueba al borrador y obtener la respuesta de la IA | can_engine | Planned |
| DELETE | /playground/{brain_id}/session | Reiniciar la conversación de prueba | can_engine | Planned |
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 }
]
}
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Empieza con br_ |
name | string | Su nombre en la Console |
creator_id | string | La creadora a la que está vinculado |
version | number | La versión en vivo; aumenta en uno con cada publicación |
published_at | string o null | Cuándo se publicó la versión en vivo, ISO 8601 UTC |
has_draft | boolean | true cuando un borrador difiere de la versión en vivo |
accounts | array de strings | Cuentas de Telegram que responden con este brain |
phases | array | Fases de venta: key, name y si cada una está enabled |
Brains #
Listar brains #
GET /brains · can_engine
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
creator_id | string | No | Solo los brains de esta creadora |
limit, cursor | number, string | No | Paginació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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
creator_id | string | Sí | La creadora para quien es |
name | string | No | Su nombre en la Console |
copy_from | string | No | Id 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | No | Nuevo nombre |
creator_id | string | No | Vincularlo 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
phases | array | No | Fases de venta a cambiar |
rules | array | No | Reglas a cambiar |
settings | object | No | Configuraciones 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
text | string | Sí | Lo que escribe el fan de prueba |
fan | object | No | El 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."
}
replyes lo que la IA enviaría: texto y medios.phasees la fase de venta en la que está la IA.explainexplica 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.