OAuth2 / n8n

Autenticação via OAuth2 client_credentials para automações com n8n, Zapier, Make ou scripts próprios.

Quando usar OAuth2 em vez de API Key

A API Externa v2 (/api/external/v2/**) usa OAuth2 client_credentials com escopos granulares. Cada cliente OAuth2 recebe apenas os escopos que precisa — útil para limitar o que cada automação pode fazer sem entregar a credencial mestre da aplicação.

A API Key + Secret (v2 clássica, em /api/external/**) continua disponível para integrações simples. OAuth2 é recomendado quando você precisa de escopos granulares por automação ou quando integra via n8n/Zapier.

Obtenção do Token

POST

/oauth2/token

Content-Type: application/x-www-form-urlencoded

ParâmetroTipoDescrição
grant_typestringSempre client_credentials
client_idstringIdentificador do cliente OAuth2 (fornecido pelo painel admin)
client_secretstringSegredo do cliente OAuth2 (exibido uma única vez na criação)
scopestringEscopos solicitados, separados por espaço (ver tabela abaixo)

Exemplo (curl)

curl -X POST https://api.avizuai.com.br/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=app-minha-empresa-scheduler" \ -d "client_secret=<secret>" \ -d "scope=mensagens:enviar atendimentos:read"

Resposta de Sucesso

{ "access_token": "eyJhbGciOiJSUzI1NiIs...", "token_type": "Bearer", "expires_in": 3600, "scope": "mensagens:enviar atendimentos:read" }

O access_token é um JWT RS256 com o claim aplicacao_id — o servidor identifica automaticamente a aplicação destino a partir dele.

Escopos disponíveis

EscopoPermiteEndpoints (exemplos)
mensagens:enviarEnviar mensagens WhatsAppPOST /api/external/v2/mensagens
atendimentos:readListar fila e atendimentos em andamentoGET /api/external/v2/atendimentos/fila
GET /api/external/v2/atendimentos/em-andamento
atendimentos:escalarForçar escalação de sessão para humanoPOST /api/external/v2/atendimentos/{id}/escalar
agendamentos:readConsultar agendamentos de saúdeGET /api/external/v2/agendamentos
agendamentos:writeCriar e atualizar agendamentosPOST /api/external/v2/agendamentos
PATCH /api/external/v2/agendamentos/{id}
pacientes:readConsultar cadastro de pacientesGET /api/external/v2/pacientes
pacientes:writeCriar e atualizar pacientesPOST /api/external/v2/pacientes
Solicite no scope apenas os escopos que sua automação realmente usa. O cliente OAuth2 só recebe o que foi autorizado durante o cadastro no painel admin.

Uso do Token

Inclua o token retornado no header Authorization das chamadas à API:

curl -X POST https://api.avizuai.com.br/api/external/v2/mensagens \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..." \ -H "Content-Type: application/json" \ -d '{"telefone":"+5511999998888","mensagem":"Oi"}'

Integração com n8n

No n8n, configure um nó HTTP Request com autenticação OAuth2:

O n8n cuida automaticamente da renovação do token quando ele expira.

Erros comuns

StatusCausa típica
400 invalid_requestParâmetros faltando ou mal formados na chamada a /oauth2/token
401 invalid_clientclient_id ou client_secret inválidos
400 invalid_scopeEscopo solicitado não foi autorizado para este cliente
401 invalid_tokenToken expirado ou inválido na chamada à API
403 insufficient_scopeToken válido, mas sem escopo para o endpoint chamado

Próximos Passos