LanaChat

API: miembros del equipo, roles y tokens de acceso

6 min de lecturaActualizado Markdown

Tu equipo son las personas que trabajan en el espacio de trabajo. Cada miembro tiene un rol (integrado o personalizado) que define lo que puede hacer, las creadoras en las que trabaja y una clave de acceso personal para iniciar sesión. Los tokens de acceso son las llaves de la API y de la conexión MCP. Todos estos endpoints requieren un token de owner: en los ejemplos, $LANACHAT_TOKEN contiene uno.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/membersListar miembros (status=active,disabled, role_id=, q=)ownerPlanned
POST/membersAñadir un miembro con un rol y creadorasownerPlanned
GET/members/{id}Un miembro, última actividad y sobrescriturasownerPlanned
PATCH/members/{id}Cambiar rol, creadoras, sobrescrituras; deshabilitar o habilitarownerPlanned
DELETE/members/{id}Eliminar un miembro (sus mensajes pasados mantienen su nombre)ownerPlanned
POST/members/{id}/access-keyCrear una clave de acceso personal (se muestra una vez)ownerPlanned
POST/members/{id}/invitationEnviar por e-mail una clave de acceso al miembroownerPlanned
DELETE/members/{id}/access-keyRevocar la clave del miembro: se cierra su sesiónownerPlanned
GET/rolesRoles integrados y personalizados con su tabla de permisosownerPlanned
POST/rolesCrear un rol personalizadoownerPlanned
PATCH/roles/{id}Renombrar un rol o cambiar sus permisosownerPlanned
DELETE/roles/{id}Eliminar un rol personalizado que ningún miembro tengaownerPlanned
GET/tokensTokens de acceso API y MCP (include_revoked=true)ownerPlanned
POST/tokensCrear un token con sus permisos (se muestra una vez)ownerPlanned
PATCH/tokens/{id}Renombrar un token o cambiar sus permisosownerPlanned
POST/tokens/{id}/rotateReemplazar el secreto; el anterior se desactiva al instanteownerPlanned
DELETE/tokens/{id}Revocar un tokenownerPlanned

El objeto miembro #

{
  "id": "mem_4",
  "name": "Ana",
  "email": "[email protected]",
  "status": "active",
  "role_id": "role_chatter",
  "creator_ids": ["cr_lea", "cr_mia"],
  "overrides": { "billing.read": false, "fans.export": true },
  "access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" },
  "last_active_at": "2026-10-06T13:40:00Z"
}
FieldTypeDescription
idstringEmpieza con mem_
namestringSu nombre en la Console
emailstring o nullDonde se envía la invitación
statusstringactive o disabled
role_idstringSu rol
creator_idsarray de stringsLas creadoras en las que trabaja
overridesobjectPermisos establecidos solo para este miembro, encima del rol
access_keyobjectSi tiene una clave de acceso personal active y desde cuándo; nunca la clave en sí
last_active_atstring o nullSu última actividad

Un miembro deshabilitado no puede iniciar sesión y conserva su historial, rol y creadoras.

El objeto rol #

{
  "id": "role_chatter",
  "name": "Chatter",
  "builtin": true,
  "permissions": { "live.read": true, "live.reply": true, "fans.read": true, "fans.export": false, "billing.read": false },
  "members": 6
}
FieldTypeDescription
idstringEl rol
namestringSu nombre
builtinbooleantrue para Owner, Manager y Chatter
permissionsobjectUna clave por fila de la tabla de permisos, true o false
membersintegerCuántos miembros lo tienen

Las claves de permisos siguen las filas de la tabla de permisos en Team Management › Roles, agrupadas por área: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram y Employees. Owner siempre tiene todos los permisos y no puede editarse. Manager y Chatter son integrados: puedes cambiar sus permisos pero no renombrarlos ni eliminarlos.

El objeto token de acceso #

{
  "id": "tok_31",
  "name": "Reporting script",
  "permissions": ["can_fan_read", "can_sales_read"],
  "status": "active",
  "created_at": "2026-10-06T15:10:00Z",
  "expires_at": "2027-01-04T15:10:00Z"
}
FieldTypeDescription
idstringEmpieza con tok_
namestringHasta 100 caracteres, obligatorio
permissionsarray de stringsLos permisos que tiene
statusstringActivo, expirado o revocado
created_at, expires_atstringISO 8601, UTC
tokenstringEl secreto, solo en la respuesta que lo crea o rota

Miembros #

Listar miembros #

GET /members · owner

ParameterTypeRequiredDescription
statusstringNoactive o disabled; ambos separados por coma
role_idstringNoSolo miembros con este rol
qstringNoParte de un nombre
limit, cursornumber, stringNoPaginación
curl "https://api.lanachat.ai/v1/members?status=active&role_id=role_chatter" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
{
  "data": [
    { "id": "mem_4", "name": "Ana", "email": "[email protected]", "status": "active", "role_id": "role_chatter", "creator_ids": ["cr_lea", "cr_mia"], "overrides": {}, "access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" }, "last_active_at": "2026-10-06T13:40:00Z" }
  ],
  "next_cursor": null
}

Añadir un miembro #

POST /members · owner

ParameterTypeRequiredDescription
namestringSíSu nombre
emailstringNoNecesario para enviar invitación
role_idstringSíUn rol integrado o personalizado
creator_idsarray de stringsNoLas creadoras en las que trabaja
curl -X POST https://api.lanachat.ai/v1/members \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "Ana", "email": "[email protected]", "role_id": "role_chatter", "creator_ids": ["cr_lea"]}'

La respuesta es el nuevo miembro (201), activo, sin clave de acceso aún.

Obtener un miembro #

GET /members/{id} · owner

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

La respuesta es el objeto miembro. Un id desconocido responde 404.

Actualizar un miembro #

PATCH /members/{id} · owner

ParameterTypeRequiredDescription
role_idstringNoNuevo rol
creator_idsarray de stringsNoReemplaza su lista de creadoras
overridesobjectNoPermisos solo para este miembro
statusstringNoactive o disabled
curl -X PATCH https://api.lanachat.ai/v1/members/mem_4 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"creator_ids": ["cr_lea", "cr_mia"], "overrides": {"fans.export": true}}'

La respuesta es el miembro actualizado. status: "disabled" corta el acceso al instante; se mantienen el rol y las creadoras.

Eliminar un miembro #

DELETE /members/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

El miembro se elimina y sus creadoras quedan sin asignar. Sus mensajes pasados mantienen su nombre. Para conservarlos para más tarde, deshabilítalo en vez de eliminarlo.

Claves de acceso personales #

Los miembros del equipo no usan contraseña: inician sesión con una clave de acceso personal. Las claves empiezan con emp_.

Crear una clave de acceso #

POST /members/{id}/access-key · owner

curl -X POST https://api.lanachat.ai/v1/members/mem_4/access-key \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{ "member_id": "mem_4", "sign_in_url": "https://app.lanachat.ai/login/?mode=employee", "access_key": "emp_6Yq2…", "shown_once": true }

Envía tanto la dirección para iniciar sesión como la clave a la persona por un canal que confíes. Un miembro deshabilitado responde 409: habilítalo primero.

Enviar por e-mail una clave de acceso #

POST /members/{id}/invitation · owner

curl -X POST https://api.lanachat.ai/v1/members/mem_4/invitation \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

La clave se envía por e-mail a la dirección en su ficha. Un miembro sin e-mail, o deshabilitado, responde 409.

Revocar una clave de acceso #

DELETE /members/{id}/access-key · owner

curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La clave se desactiva al instante y el miembro se cierra sesión. Crea una nueva clave para que pueda volver a entrar.

Roles #

Listar roles #

GET /roles · owner

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

Una lista de objetos rol: Owner, Manager, Chatter y tus roles personalizados.

Crear un rol personalizado #

POST /roles · owner

ParameterTypeRequiredDescription
namestringSíNombre del rol
permissionsobjectNoLas filas a activar; las demás quedan desactivadas
curl -X POST https://api.lanachat.ai/v1/roles \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "Night chatter", "permissions": {"live.read": true, "live.reply": true, "fans.read": true}}'

La respuesta es el nuevo rol (201) con builtin: false.

Actualizar un rol #

PATCH /roles/{id} · owner

ParameterTypeRequiredDescription
namestringNoNuevo nombre (solo roles personalizados)
permissionsobjectNoLas filas a cambiar; las demás se mantienen
curl -X PATCH https://api.lanachat.ai/v1/roles/role_chatter \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"permissions": {"fans.export": false}}'

El cambio se aplica al instante a todos los miembros con ese rol, excepto sus sobrescrituras propias. Editar Owner, o renombrar Manager o Chatter, responde 409.

Eliminar un rol personalizado #

DELETE /roles/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Eliminar un rol que todavía tienen miembros responde 409: asígnales otro rol primero. Los roles integrados no pueden eliminarse.

Tokens de acceso #

Listar tokens #

GET /tokens · owner

ParameterTypeRequiredDescription
include_revokedbooleanNotrue también lista tokens revocados
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Una lista de objetos token de acceso, sin su secreto.

Crear un token #

POST /tokens · owner

ParameterTypeRequiredDescription
namestringSíPara qué sirve, hasta 100 caracteres
permissionsarray de stringsSíLos permisos que obtiene
expires_in_daysintegerNoCuándo expira
curl -X POST https://api.lanachat.ai/v1/tokens \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "Reporting script", "permissions": ["can_fan_read", "can_sales_read"], "expires_in_days": 90}'
{ "id": "tok_31", "name": "Reporting script", "token": "lc_live_8f2c1d0e9b7a4c6f", "permissions": ["can_fan_read", "can_sales_read"], "expires_at": "2027-01-04T15:10:00Z" }

token está solo en esta respuesta. Un token nunca puede otorgar más permisos que el token owner que lo creó. Un nombre faltante responde 400.

Actualizar un token #

PATCH /tokens/{id} · owner

ParameterTypeRequiredDescription
namestringNoNuevo nombre
permissionsarray de stringsNoReemplaza sus permisos
curl -X PATCH https://api.lanachat.ai/v1/tokens/tok_31 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"permissions": ["can_sales_read"]}'

La respuesta es el token, sin su secreto. Desactivar can_engine también elimina permisos de publicación, Advanced AI y reportes de experimentos. Un token revocado responde 409.

Rotar un token #

POST /tokens/{id}/rotate · owner

curl -X POST https://api.lanachat.ai/v1/tokens/tok_31/rotate \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

La respuesta es el token con un nuevo secreto token, mostrado una vez. El secreto antiguo se desactiva al instante, así que actualiza tu script justo después. Un token revocado responde 409.

Revocar un token #

DELETE /tokens/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

El token se desactiva al instante. Un token ya revocado responde 409.

Advertencia Un token funciona como una contraseña. Revócalo tan pronto dejes de usarlo o sospeches que se filtró.

Las últimas novedades de Lana en Telegram

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