API: membros da equipe, funções e tokens de acesso
Sua equipe é o grupo de pessoas que trabalham no workspace. Cada membro tem uma função (padrão ou personalizada) que define o que ele pode fazer, as criadoras em que trabalha e uma chave de acesso pessoal para entrar. Tokens de acesso são as chaves da API e da conexão MCP. Todos esses endpoints precisam de um token de owner: nos exemplos, $LANACHAT_TOKEN contém um.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /members | Listar membros (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Adicionar um membro com função e criadoras | owner | Planned |
| GET | /members/{id} | Um membro, última atividade e sobrescritas | owner | Planned |
| PATCH | /members/{id} | Alterar função, criadoras, sobrescritas; desabilitar ou habilitar | owner | Planned |
| DELETE | /members/{id} | Excluir um membro (suas mensagens antigas mantêm o nome) | owner | Planned |
| POST | /members/{id}/access-key | Criar uma chave de acesso pessoal (mostrada uma vez) | owner | Planned |
| POST | /members/{id}/invitation | Enviar por e-mail uma chave de acesso ao membro | owner | Planned |
| DELETE | /members/{id}/access-key | Revogar a chave do membro: ele é desconectado | owner | Planned |
| GET | /roles | Funções padrão e personalizadas com sua tabela de permissões | owner | Planned |
| POST | /roles | Criar uma função personalizada | owner | Planned |
| PATCH | /roles/{id} | Renomear uma função ou alterar suas permissões | owner | Planned |
| DELETE | /roles/{id} | Excluir uma função personalizada que nenhum membro tenha | owner | Planned |
| GET | /tokens | Tokens de acesso API e MCP (include_revoked=true) | owner | Planned |
| POST | /tokens | Criar um token com suas permissões (mostrado uma vez) | owner | Planned |
| PATCH | /tokens/{id} | Renomear um token ou alterar suas permissões | owner | Planned |
| POST | /tokens/{id}/rotate | Substituir o segredo; o antigo para imediatamente | owner | Planned |
| DELETE | /tokens/{id} | Revogar um token | owner | Planned |
O objeto membro #
{
"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"
}
| Field | Type | Description |
|---|---|---|
id | string | Começa com mem_ |
name | string | Nome no Console |
email | string ou null | Para onde o convite é enviado |
status | string | active ou disabled |
role_id | string | Função do membro |
creator_ids | array de strings | As criadoras em que trabalha |
overrides | object | Permissões definidas só para este membro, além da função |
access_key | object | Se tem uma chave de acesso pessoal active e desde quando; nunca a chave em si |
last_active_at | string ou null | Última atividade |
Um membro desabilitado não pode entrar e mantém seu histórico, função e criadoras.
O objeto função #
{
"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
}
| Field | Type | Description |
|---|---|---|
id | string | A função |
name | string | Nome da função |
builtin | boolean | true para Owner, Manager e Chatter |
permissions | object | Uma chave por linha da tabela de permissões, true ou false |
members | integer | Quantos membros a possuem |
As chaves de permissão seguem as linhas da tabela em Team Management › Roles, agrupadas por área: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram e Employees. Owner sempre tem todas as permissões e não pode ser editado. Manager e Chatter são padrões: você pode alterar suas permissões, mas não renomear ou excluir.
O objeto token de acesso #
{
"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"
}
| Field | Type | Description |
|---|---|---|
id | string | Começa com tok_ |
name | string | Até 100 caracteres, obrigatório |
permissions | array de strings | As permissões que possui |
status | string | Ativo, expirado ou revogado |
created_at, expires_at | string | ISO 8601, UTC |
token | string | O segredo, só na resposta que cria ou rotaciona |
Membros #
Listar membros #
GET /members · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | Não | active ou disabled; ambos separados por vírgula |
role_id | string | Não | Apenas membros com essa função |
q | string | Não | Parte do nome |
limit, cursor | number, string | Não | Paginação |
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
}
Adicionar um membro #
POST /members · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Sim | Nome do membro |
email | string | Não | Necessário para enviar convite |
role_id | string | Sim | Função padrão ou personalizada |
creator_ids | array de strings | Não | Criadoras em que trabalha |
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"]}'
A resposta é o novo membro (201), ativo, sem chave de acesso ainda.
Obter um membro #
GET /members/{id} · owner
curl https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
A resposta é o objeto membro. Um id desconhecido responde 404.
Atualizar um membro #
PATCH /members/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
role_id | string | Não | Nova função |
creator_ids | array de strings | Não | Substitui a lista de criadoras |
overrides | object | Não | Permissões só para este membro |
status | string | Não | active ou 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}}'
A resposta é o membro atualizado. status: "disabled" corta o acesso imediatamente; função e criadoras são mantidas.
Excluir um membro #
DELETE /members/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
O membro é removido e suas criadoras são desassociadas. As mensagens antigas mantêm o nome dele. Para manter o membro para depois, desabilite-o em vez de excluir.
Chaves de acesso pessoais #
Membros da equipe não usam senha: entram com uma chave de acesso pessoal. As chaves começam com emp_.
Criar uma chave de acesso #
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 }
Envie o endereço de login e a chave para a pessoa por um canal confiável. Um membro desabilitado responde 409: habilite-o primeiro.
Enviar por e-mail uma chave de acesso #
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)"
A chave é enviada para o e-mail cadastrado. Um membro sem e-mail ou desabilitado responde 409.
Revogar uma chave de acesso #
DELETE /members/{id}/access-key · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN"
A chave para imediatamente e o membro é desconectado. Crie uma nova chave para permitir o acesso novamente.
Funções #
Listar funções #
GET /roles · owner
curl https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Uma lista de objetos função: Owner, Manager, Chatter e suas funções personalizadas.
Criar uma função personalizada #
POST /roles · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Sim | Nome da função |
permissions | object | Não | Linhas para ativar; as outras ficam desativadas |
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}}'
A resposta é a nova função (201) com builtin: false.
Atualizar uma função #
PATCH /roles/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Não | Novo nome (só funções personalizadas) |
permissions | object | Não | Linhas para alterar; as outras são mantidas |
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}}'
A alteração vale para todos os membros com essa função, exceto suas próprias sobrescritas. Editar Owner, ou renomear Manager ou Chatter, responde 409.
Excluir uma função personalizada #
DELETE /roles/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Excluir uma função que membros ainda têm responde 409: atribua outra função antes. Funções padrão não podem ser excluídas.
Tokens de acesso #
Listar tokens #
GET /tokens · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
include_revoked | boolean | Não | true também lista tokens revogados |
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Uma lista de objetos token de acesso, sem seus segredos.
Criar um token #
POST /tokens · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Sim | Para que serve, até 100 caracteres |
permissions | array de strings | Sim | As permissões que terá |
expires_in_days | integer | Não | Quando 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á só nesta resposta. Um token nunca pode ter mais permissões que o token owner que o criou. Nome ausente responde 400.
Atualizar um token #
PATCH /tokens/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Não | Novo nome |
permissions | array de strings | Não | Substitui as permissões |
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"]}'
A resposta é o token, sem o segredo. Desligar can_engine também remove permissões de publicação, Advanced AI e relatório de experimentos. Token revogado responde 409.
Rotacionar um 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)"
A resposta é o token com um novo segredo token, mostrado uma vez. O segredo antigo para imediatamente, atualize seu script logo após. Token revogado responde 409.
Revogar um token #
DELETE /tokens/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
O token para imediatamente. Token já revogado responde 409.
Aviso Um token funciona como uma senha. Revogue-o assim que parar de usar ou suspeitar que vazou.