LanaChat

API: membros da equipe, funções e tokens de acesso

Leitura de 6 minAtualizado Markdown

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 #

MethodPathDescriptionPermissionStatus
GET/membersListar membros (status=active,disabled, role_id=, q=)ownerPlanned
POST/membersAdicionar um membro com função e criadorasownerPlanned
GET/members/{id}Um membro, última atividade e sobrescritasownerPlanned
PATCH/members/{id}Alterar função, criadoras, sobrescritas; desabilitar ou habilitarownerPlanned
DELETE/members/{id}Excluir um membro (suas mensagens antigas mantêm o nome)ownerPlanned
POST/members/{id}/access-keyCriar uma chave de acesso pessoal (mostrada uma vez)ownerPlanned
POST/members/{id}/invitationEnviar por e-mail uma chave de acesso ao membroownerPlanned
DELETE/members/{id}/access-keyRevogar a chave do membro: ele é desconectadoownerPlanned
GET/rolesFunções padrão e personalizadas com sua tabela de permissõesownerPlanned
POST/rolesCriar uma função personalizadaownerPlanned
PATCH/roles/{id}Renomear uma função ou alterar suas permissõesownerPlanned
DELETE/roles/{id}Excluir uma função personalizada que nenhum membro tenhaownerPlanned
GET/tokensTokens de acesso API e MCP (include_revoked=true)ownerPlanned
POST/tokensCriar um token com suas permissões (mostrado uma vez)ownerPlanned
PATCH/tokens/{id}Renomear um token ou alterar suas permissõesownerPlanned
POST/tokens/{id}/rotateSubstituir o segredo; o antigo para imediatamenteownerPlanned
DELETE/tokens/{id}Revogar um tokenownerPlanned

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"
}
FieldTypeDescription
idstringComeça com mem_
namestringNome no Console
emailstring ou nullPara onde o convite é enviado
statusstringactive ou disabled
role_idstringFunção do membro
creator_idsarray de stringsAs criadoras em que trabalha
overridesobjectPermissões definidas só para este membro, além da função
access_keyobjectSe tem uma chave de acesso pessoal active e desde quando; nunca a chave em si
last_active_atstring 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
}
FieldTypeDescription
idstringA função
namestringNome da função
builtinbooleantrue para Owner, Manager e Chatter
permissionsobjectUma chave por linha da tabela de permissões, true ou false
membersintegerQuantos 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"
}
FieldTypeDescription
idstringComeça com tok_
namestringAté 100 caracteres, obrigatório
permissionsarray de stringsAs permissões que possui
statusstringAtivo, expirado ou revogado
created_at, expires_atstringISO 8601, UTC
tokenstringO segredo, só na resposta que cria ou rotaciona

Membros #

Listar membros #

GET /members · owner

ParameterTypeRequiredDescription
statusstringNãoactive ou disabled; ambos separados por vírgula
role_idstringNãoApenas membros com essa função
qstringNãoParte do nome
limit, cursornumber, stringNãoPaginaçã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

ParameterTypeRequiredDescription
namestringSimNome do membro
emailstringNãoNecessário para enviar convite
role_idstringSimFunção padrão ou personalizada
creator_idsarray de stringsNãoCriadoras 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

ParameterTypeRequiredDescription
role_idstringNãoNova função
creator_idsarray de stringsNãoSubstitui a lista de criadoras
overridesobjectNãoPermissões só para este membro
statusstringNãoactive 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

ParameterTypeRequiredDescription
namestringSimNome da função
permissionsobjectNãoLinhas 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

ParameterTypeRequiredDescription
namestringNãoNovo nome (só funções personalizadas)
permissionsobjectNãoLinhas 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

ParameterTypeRequiredDescription
include_revokedbooleanNãotrue 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

ParameterTypeRequiredDescription
namestringSimPara que serve, até 100 caracteres
permissionsarray de stringsSimAs permissões que terá
expires_in_daysintegerNãoQuando 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

ParameterTypeRequiredDescription
namestringNãoNovo nome
permissionsarray de stringsNãoSubstitui 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.

As últimas novidades da Lana no Telegram

Novidades e convites para o beta, primeiro no canal.