Autenticacao

A NeoGo API usa autenticacao baseada em API keys via header HTTP. Existem dois niveis de acesso: administrador e instancia.

Visao Geral

Todas as requisicoes a API devem incluir o header apikey:

curl -H "apikey: SUA_CHAVE_AQUI" http://localhost:4000/endpoint
NivelHeaderAcessoRotas
Admin (Global) apikey: GLOBAL_API_KEY Gerenciamento de instancias /instance/create, /instance/all, /instance/delete, /admin/*
Instancia apikey: TOKEN_DA_INSTANCIA Operacoes da instancia /send/*, /message/*, /chat/*, /group/*, /user/*, etc.

Chave Admin (Global API Key)

A chave global e definida via variavel de ambiente GLOBAL_API_KEY no servidor. Ela concede acesso a rotas administrativas:

# Exemplo: listar todas as instancias
curl http://localhost:4000/instance/all \
  -H "apikey: SUA_CHAVE_GLOBAL"
Seguranca: A chave global concede acesso total ao servidor. Nunca exponha em codigo frontend, repositorios publicos ou logs. Use variaveis de ambiente.

Token de Instancia

Ao criar uma instancia, a API retorna um token unico. Esse token e usado para todas as operacoes especificas daquela instancia:

# Criar instancia e guardar o token
curl -X POST http://localhost:4000/instance/create \
  -H "apikey: SUA_CHAVE_GLOBAL" \
  -H "Content-Type: application/json" \
  -d '{"instanceName": "producao"}'

# Resposta:
# {
#   "instanceId": "abc-123",
#   "token": "9f4e2d1a8b7c6e5f4d3a2b1c...",
#   ...
# }

# Usar o token para enviar mensagem
curl -X POST http://localhost:4000/send/text \
  -H "apikey: 9f4e2d1a8b7c6e5f4d3a2b1c..." \
  -H "Content-Type: application/json" \
  -d '{"number": "5511999999999", "text": "Ola!"}'

Rotacao de Token

Por seguranca, voce pode rotacionar o token de uma instancia a qualquer momento. O token antigo continua funcionando por um periodo de graca configuravel.

# Rotacionar token (requer chave admin)
curl -X POST http://localhost:4000/instance/rotate-token/INSTANCE_ID \
  -H "apikey: SUA_CHAVE_GLOBAL"

# Resposta:
# {
#   "newToken": "novo-token-gerado...",
#   "oldTokenValidUntil": "2026-05-06T10:00:00Z"
# }

Como funciona a rotacao

  1. Um novo token e gerado e passa a ser o token primario
  2. O token antigo e armazenado em hash SHA-256 na tabela TokenHistory
  3. Durante o periodo de graca, ambos os tokens sao aceitos
  4. Apos o periodo de graca, o token antigo e invalidado
Dica: Rotacione tokens periodicamente em ambiente de producao. Use o periodo de graca para atualizar suas integracoes sem downtime.

Protecoes de Seguranca

O middleware de autenticacao inclui diversas protecoes:

ProtecaoDescricao
Validacao de formatoTokens muito curtos ou com formato invalido sao rejeitados antes de consultar o banco (prevencao contra DoS)
Rate limitingLimites por IP e por API key, com sliding window. Suporta Redis para limites distribuidos
Request IDCada requisicao recebe um UUID unico via header X-Request-ID para rastreamento
JID ValidationNumeros de telefone sao normalizados automaticamente para formato WhatsApp JID
CORSConfiguravel via CORS_ORIGIN (padrao: *)

Autenticacao JWT (Manager UI)

Alem da autenticacao por API key, o Manager UI utiliza autenticacao JWT para sessoes de usuario. Isso e usado internamente pela interface web e nao e necessario para integracoes via API REST.

EndpointDescricao
POST /auth/registerRegistrar novo usuario
POST /auth/loginLogin (retorna JWT)
POST /auth/refreshRenovar token JWT
GET /auth/meDados do usuario autenticado
PATCH /auth/meAtualizar perfil
POST /auth/me/passwordAlterar senha

Erros de Autenticacao

Respostas comuns quando a autenticacao falha:

# 401 Unauthorized - Token invalido ou ausente
{
  "error": "invalid api key"
}

# 401 Unauthorized - Token expirado (apos rotacao)
{
  "error": "token expired, please use the new token"
}

# 429 Too Many Requests - Rate limit excedido
{
  "error": "rate limit exceeded",
  "retryAfter": 60
}

Boas Praticas