Autenticação e segurança
A API possui duas credenciais com alcances diferentes. Ambas são credenciais bearer: quem obtiver o valor recebe as permissões correspondentes.
Escolha antes de integrar
| Cenário | Credencial no navegador | Integração recomendada |
|---|---|---|
| Cliente administra somente a própria instância | token da instância | frontend chama a API da instância |
| Painel privado cujos usuários administram o servidor inteiro | admintoken, com exposição aceita explicitamente | frontend chama a API administrativa |
| SaaS multi-tenant ou painel entregue a clientes | Nenhuma credencial da API | frontend chama o backend; backend chama a API |
Tudo que chega ao navegador pode ser lido pelo usuário, DevTools, extensões e
scripts executados na página. Variáveis NEXT_PUBLIC_*, VITE_* e similares
não protegem segredos.
token da instância
O header token autoriza operações de uma única instância: conexão, mensagens, chats, grupos, contatos, webhooks e demais recursos associados àquele número.
token: INSTANCE_TOKEN
O token pode ser usado diretamente em um dashboard no navegador quando o usuário autenticado é o dono daquela instância e já pode executar todas as operações dela. O backend do seu SaaS deve validar o tenant antes de entregar o token; não confie apenas no estado da interface.
Prefira manter o token em memória durante a sessão. Não o coloque no bundle,
em código versionado, logs ou analytics. Persistir em localStorage aumenta o
impacto de XSS e extensões maliciosas.
admintoken
O header admintoken administra o servidor e todas as instâncias. Ele permite operações como criar/listar instâncias, atualizar campos administrativos e rotacionar credenciais.
admintoken: ADMIN_TOKEN
Por padrão, mantenha o admintoken no backend. Um painel administrativo pode
usá-lo diretamente no navegador somente quando todo usuário desse painel já
é administrador do servidor inteiro e a exposição do token é uma decisão
aceita explicitamente.
Nunca use esse modo em SaaS multi-tenant, painel entregue a clientes, dispositivo compartilhado ou aplicação com scripts de terceiros. Nesses casos, a interface chama o backend do SaaS, que valida usuário, tenant e permissão antes de usar a credencial.
SSE
O endpoint /sse aceita o token da instância na query string porque a API nativa EventSource não permite definir headers arbitrários:
/sse?token=INSTANCE_TOKEN&events=chats,messages
URLs podem aparecer em logs, histórico e ferramentas de observabilidade. Use HTTPS, evite registrar a query completa e prefira um proxy autenticado do seu backend quando o stream for aberto pelo navegador.
Armazenamento e rotação
- Armazene credenciais criptografadas ou em um secret manager.
- Não use
NEXT_PUBLIC_*,VITE_*ou equivalentes para tokens. - Redija
token,admintokene URLs SSE antes de registrar requests. - Rotacione o token de instância por
POST /instance/token/rotatequando houver exposição. - Rotacione o token administrativo por
POST /admin/token/rotateseguindo o intervalo aceito pela API. - Depois da rotação, atualize consumidores e invalide caches imediatamente.
Matriz rápida
| Operação | Credencial |
|---|---|
| Criar e listar instâncias | admintoken |
| Enviar mensagens | token |
| Consultar chats e contatos | token |
| Webhook por instância | token |
| Webhook global | admintoken |
| Administração do servidor | admintoken |
O OpenAPI é a fonte final para a segurança de cada rota; uma operação pode sobrescrever o requisito global.