Integração
API de WhatsApp para Dify
Conecte agentes de IA do Dify ao WhatsApp via Zapixo.
// Dify — nó HTTP Request (workflow ou chatflow)
URL: https://zapixo.com.br/api/v1/messages/text
Method: POST
Headers:
Authorization: Bearer SUA_CHAVE
Content-Type: application/json
Body (JSON), com as variáveis inseridas pelo seletor do nó:
{
"instance": "ia-bot",
"number": "<telefone>",
"text": "<resposta do modelo>"
}O Dify monta o agente: modelo, instruções, base de conhecimento. O Zapixo é o número de WhatsApp. Para o agente responder quem escreve, uma ponte recebe o webhook do Zapixo, pergunta ao Dify pela API de chat e devolve a resposta pelo Zapixo.
O caminho contrário também existe: dentro de um workflow do Dify, o nó HTTP Request chama o Zapixo para mandar uma mensagem — útil para aviso gerado pelo próprio agente.
O que dá para fazer com Dify e WhatsApp
Atendimento de primeiro nível
O agente responde dúvidas a partir da base de conhecimento e passa para uma pessoa quando não sabe.
Triagem
O agente entende o assunto da mensagem e encaminha para o setor certo.
Assistente da equipe
Quem trabalha na rua consulta procedimento, preço ou estoque pelo WhatsApp.
Aviso escrito pelo agente
Um workflow resume um documento ou um pedido e manda o resumo para quem precisa.
Enviar mensagens pelo Dify
Adicione o nó HTTP Request
No workflow ou chatflow do Dify, coloque um nó HTTP Request depois do nó que gera o texto. Method
POST, URLhttps://zapixo.com.br/api/v1/messages/text.Headers e corpo
Header
AuthorizationcomBearer zpx_...e corpo em JSON. As variáveis do fluxo entram pelo seletor do próprio nó:{ "instance": "ia-bot", "number": "<variável com o telefone>", "text": "<variável com a resposta do modelo>" }Guarde a chave fora do fluxo
App exportado ou compartilhado leva junto o que estiver escrito nos nós. Guarde a chave numa variável de ambiente do app, do tipo secreto, e use a variável no header.
Receber mensagens no Dify
Gere a chave de API do app
Na tela do app no Dify, em Acesso à API, gere a chave. Ela é do app, não da conta: cada app tem a sua.
A ponte chama a API de chat
A ponte recebe o
messages.upsertdo Zapixo, descartafromMee manda o texto ao Dify.useridentifica quem fala econversation_idmantém a memória da conversa. No Dify self-hosted, troqueapi.dify.aipelo endereço da sua instância:const r = await fetch("https://api.dify.ai/v1/chat-messages", { method: "POST", headers: { Authorization: `Bearer ${process.env.DIFY_APP_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ inputs: {}, query: texto, response_mode: "blocking", conversation_id: conversas.get(numero) ?? "", user: numero, }), }); const { answer, conversation_id } = await r.json(); conversas.set(numero, conversation_id); // em produção, guarde no bancoDevolva pelo Zapixo
Mande
answerpara o número com/api/v1/messages/text. Texto acima de 4.096 caracteres não passa na API: divida em partes antes de enviar.
Erros comuns e como resolver
- Agente sem memória
- Sem devolver o
conversation_id, cada mensagem abre uma conversa nova no Dify e o agente esquece o que acabou de ouvir. Guarde um por número. - Resposta em dobro
- Modelo leva segundos para responder. Se a ponte só devolver 2xx ao Zapixo depois do Dify, passa dos 10 segundos e o Zapixo tenta de novo — o agente responde duas vezes. Responda o webhook na hora, processe depois e ignore
data.key.idrepetido. - Mensagem longa recusada
- Acima de 4.096 caracteres a API responde
400comValidation failed. Divida o texto, ou peça ao modelo respostas curtas na instrução. - Formatação estranha no WhatsApp
- O WhatsApp não mostra título nem tabela em Markdown como o chat do Dify: vira símbolo solto. Peça texto corrido e curto na instrução do agente.
- Custo que dispara
- Cada mensagem recebida é uma chamada ao modelo. Descarte grupo (
@g.us) efromMeantes de chamar o Dify, e limite quantas mensagens um número pode mandar por hora.
Perguntas frequentes
O Dify tem integração nativa com WhatsApp pelo Zapixo?
Não. A ligação é uma ponte, no n8n ou no seu backend, entre o webhook do Zapixo e a API de chat do Dify.
Funciona com Dify self-hosted?
Funciona. Troque api.dify.ai pelo endereço da sua instância.
Dá para usar streaming?
No WhatsApp, use response_mode blocking: a mensagem só pode sair quando a resposta estiver completa.
Como passar a conversa para uma pessoa?
Combine no agente uma resposta de transferência. Quando ela aparecer, a ponte para de chamar o Dify para aquele número e avisa a equipe.
O trial tem limite de mensagens?
Tem. Ao atingir o limite, a API responde 402 com o link para assinar.
Leia também
- Como criar um chatbot de WhatsApp com IA em 2026
Arquitetura completa de um chatbot de WhatsApp com modelo de linguagem: webhook, memória de conversa, controle de custo, limites e transferência para humano.