Integrações & Segurança
Configure integrações externas, proteja suas credenciais e entenda como o Dexter mantém seus dados seguros.
Visão geral
O Dexter se integra com vários serviços para ampliar as capacidades dos seus assistentes. Esta página cobre como configurar cada integração e boas práticas de segurança.
Todas as integrações são configuradas pela tela Configurações → Integrações no dashboard, com credenciais armazenadas de forma segura no servidor.
API Keys
O que são
API Keys são chaves de autenticação que permitem que sistemas
externos acessem a API REST e o servidor MCP do Dexter em nome da sua instância.
Cada chave é gerada com o prefixo dx_live_ e está vinculada
a uma única instância.
Como gerar
Vá em Configurações → Integrações e localize a seção API Key.
Clique em Gerar nova API Key. A chave será exibida uma única vez — copie e armazene em local seguro.
Como usar
Envie a chave no header Authorization de cada requisição:
Authorization: Bearer YOUR_API_KEY
Boas práticas
- Armazene a chave em variáveis de ambiente do servidor, nunca no código-fonte.
- Não exponha a chave em aplicações frontend ou mobile.
- Rotacione a chave periodicamente — gere uma nova e descarte a antiga.
- Use permissões mínimas (veja Permissões MCP e API).
Integrações disponíveis
OpenAI
A API Key da OpenAI alimenta os modelos de IA que dão inteligência aos seus assistentes. Sem ela, o assistente não consegue gerar respostas.
Z-API
Provedor externo de conexão WhatsApp. Você precisará de três credenciais da sua conta Z-API: Instance ID, Token e Client Token.
Evolution API
Com a Evolution API, o Dexter provisiona a instância WhatsApp automaticamente. Basta seguir o assistente de conexão no dashboard — nenhuma configuração externa é necessária.
Google Calendar
Integração via OAuth que permite ao assistente consultar agenda, verificar horários livres e agendar reuniões diretamente pelo WhatsApp. Disponível nos planos Professional e Scale.
Firecrawl / Apify
Serviços de enriquecimento de dados usados pelo Dexter Data Intelligence (DDI) para pesquisar informações públicas sobre leads e alimentar a base de contatos.
Validador WhatsApp
Verifica se um número de telefone possui WhatsApp ativo antes de enviar mensagens, reduzindo falhas de entrega e melhorando a qualidade da base de contatos.
Resumo
| Integração | Credenciais necessárias | Planos disponíveis |
|---|---|---|
| OpenAI | API Key | Todos |
| Z-API | Instance ID, Token, Client Token | Todos |
| Evolution API | Provisionamento automático | Todos |
| Google Calendar | OAuth (autorização no dashboard) | Professional, Scale |
| Firecrawl / Apify | API Key do serviço | Todos (DDI) |
| Validador WhatsApp | Configurado automaticamente | Todos |
Configurar integrações
No dashboard, vá em Configurações → Integrações.
Insira as chaves e tokens da integração desejada nos campos correspondentes. Para a OpenAI, cole a API Key. Para a Z-API, preencha Instance ID, Token e Client Token.
Clique em Testar ao lado da integração. O Dexter verificará se as credenciais estão corretas e se a conexão funciona.
Após o teste bem-sucedido, clique em Salvar. A integração estará ativa imediatamente.
Webhooks
O Dexter pode enviar notificações HTTP (webhooks) para uma URL configurada por você sempre que eventos relevantes ocorrem na sua instância.
Eventos disponíveis
| Evento | Header X-Dexter-Event |
Descrição |
|---|---|---|
| Mensagem recebida | message.received |
Disparado quando uma mensagem inbound chega no WhatsApp |
Como configurar
No dashboard, vá em Configurações → Integrações e localize a seção Webhook de Notificação.
Insira a URL do seu endpoint e um webhook secret para validar a autenticidade das chamadas.
Marque o webhook como ativo e clique em Salvar.
Formato do payload
O Dexter envia um POST com corpo JSON para a URL configurada:
{
"event": "message.received",
"phone": "5511999999999",
"name": "Nome do contato",
"isGroup": false,
"type": "ReceivedCallback",
"text": "Conteudo da mensagem",
"messageId": "ABCDEF123456",
"timestamp": 1719500000
}
Headers da requisição
| Header | Descrição |
|---|---|
Content-Type |
application/json |
User-Agent |
Dexter-Webhooks/1.0 |
X-Dexter-Event |
Nome do evento (ex.: message.received) |
X-Dexter-Signature |
Assinatura HMAC-SHA256 do body, prefixada com sha256= |
Validando a assinatura
Para garantir que a chamada veio do Dexter, valide o header
X-Dexter-Signature comparando com o HMAC-SHA256 do body
usando seu webhook secret:
# Python
import hmac, hashlib
def verify_signature(body: bytes, secret: str, signature: str) -> bool:
expected = "sha256=" + hmac.new(
secret.encode("utf-8"), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
401.
Permissões MCP e API
O Dexter usa um sistema de três níveis de permissão para controlar o que cada API Key pode fazer via MCP e API REST.
| Nível | Acesso | Exemplos de operações |
|---|---|---|
| Read | Somente leitura | Listar contatos, consultar campanhas, ver métricas, ler histórico de conversas |
| Write | Leitura + escrita de dados | Criar/atualizar contatos, adicionar/remover tags |
| Send | Leitura + escrita + envio de mensagens | Enviar mensagens WhatsApp via API ou MCP |
Como configurar
No dashboard, vá em Configurações → Integrações. Na seção MCP, ative o endpoint e configure os níveis desejados.
Ative Read (habilitado automaticamente com o MCP), Write e/ou Send conforme a necessidade.
Rate limits
O Dexter aplica limites de taxa automáticos para proteger sua conta e garantir a estabilidade do serviço. Esses limites previnem envios acidentais em massa e protegem contra uso indevido da API.
Limites de envio de mensagens
- Gap mínimo entre envios para o mesmo número de telefone.
- Proteção contra envio da mesma mensagem para o mesmo número em intervalo curto.
- Limites de requisições por minuto nos endpoints da API.
Resposta quando excedido
Se o limite for excedido, a API retorna HTTP 429 (Too Many Requests)
com um campo retryAfterSec indicando quantos segundos aguardar:
{
"ok": false,
"error": "rate_limited",
"retryAfterSec": 30
}
429, aguarde o tempo indicado
em retryAfterSec antes de tentar novamente.
Allowlist de envio
O Dexter oferece um modo de segurança que restringe o envio de mensagens apenas para números previamente autorizados em uma allowlist.
Quando usar
- Ambientes de teste e staging, para evitar envios acidentais a números reais.
- Fase de validação, antes de liberar o envio para toda a base de contatos.
- Operações críticas onde o envio precisa ser controlado manualmente.
Como funciona
Quando ativo, qualquer tentativa de envio para um número fora da allowlist
é bloqueada com status 403. Isso vale para todos os canais
de envio: assistente, campanha, API REST e MCP.
Segurança de dados
Dados em trânsito
Todas as comunicações entre o seu navegador, a API e o servidor do Dexter são protegidas por HTTPS (TLS).
Credenciais
Tokens, API Keys e segredos de integração são armazenados de forma segura no servidor. Credenciais sensíveis nunca são retornadas em chamadas de API — campos protegidos são mascarados na interface.
Isolamento de dados
Cada instância (tenant) opera de forma isolada. Dados de contatos, conversas, campanhas e configurações de uma instância não são acessíveis por outra.
Sem acesso por terceiros
O Dexter não compartilha mensagens ou dados de contato com terceiros. As mensagens trafegam entre o provedor WhatsApp (Z-API ou Evolution) e o servidor do Dexter, sem intermediários.
Conformidade LGPD
Os dados dos seus clientes ficam sob controle do tenant (sua empresa). Você é o controlador dos dados e pode excluir contatos e histórico a qualquer momento pelo dashboard.
Erros comuns
| Código | Mensagem | Causa provável | Solução |
|---|---|---|---|
401 |
Unauthorized | API Key inválida, expirada ou ausente | Verifique se a chave está correta e inclua o header Authorization: Bearer YOUR_API_KEY |
403 |
Forbidden | Permissão insuficiente para a operação | Ative a permissão necessária (Write ou Send) na tela de Integrações |
429 |
Too Many Requests | Rate limit excedido | Aguarde o tempo indicado em retryAfterSec e tente novamente |
403 |
send_api_disabled | Envio via API não está habilitado | Ative API de envio em Configurações → Integrações |
403 |
BLOCKED by allowlist | Número não está na allowlist de envio | Adicione o número à allowlist ou desative o modo allowlist |