Integrar o WhatsApp a um sistema significa, na prática, conectar dois mundos que normalmente não se falam: o seu software — um ERP, um CRM, uma loja, um app interno — e o aplicativo de mensagens onde os seus clientes realmente respondem. Essa ponte tem sempre duas direções. De um lado, o seu sistema precisa enviar mensagens disparadas por eventos: um pedido pago, um chamado aberto, um cadastro novo, um vencimento próximo. Do outro, ele precisa receber de volta o que o cliente respondeu, para registrar, decidir e reagir. O zapon entrega as duas pontas com uma API REST simples para o envio e Webhooks para o recebimento — sem SDK obrigatório, sem você ter de manter a sessão do WhatsApp por conta própria.
Esta é uma página guarda-chuva: ela cobre o conceito de integração de WhatsApp via API de forma genérica, sem amarrar você a uma plataforma específica. Tudo o que está aqui vale igual se você programa em Python, Node, PHP, Go, Java ou C#, e vale igual se você usa uma ferramenta no-code como n8n ou Make. A ideia é mostrar o caminho completo — do número conectado até um fluxo de duas vias funcionando — usando os endpoints, headers e payloads reais da plataforma.
O que você vai construir
O que significa integrar o WhatsApp a um sistema?
Significa montar uma integração de duas vias: o seu sistema envia mensagens de WhatsApp por uma chamada HTTP à API do zapon e recebe cada mensagem ou evento do número conectado por um webhook. Com isso você cria notificações, confirmações, lembretes, chatbots e atendimento sem precisar de SDK e sem manter a sessão do WhatsApp você mesmo.
Ao final deste guia você terá em mente — e poderá implementar em qualquer linguagem — os dois blocos que formam praticamente toda integração de WhatsApp:
- Um fluxo de saída, em que o seu código dispara mensagens de WhatsApp a partir de qualquer evento do sistema: um webhook de pagamento, uma rotina agendada, um clique de botão, uma mudança de status no banco.
- Um fluxo de entrada, acionado toda vez que o número conectado recebe uma mensagem, permitindo que o seu sistema responda automaticamente, registre a conversa ou encaminhe o atendimento para um humano.
- A combinação dos dois, que vira um chatbot ou um atendimento assistido: o webhook ouve, a sua lógica decide, e uma chamada à API responde.
Tudo isso roda sobre um número de WhatsApp comum — não há fila de aprovação da Meta, não há templates obrigatórios, não há custo por mensagem. O número se conecta por QR Code, exatamente como o WhatsApp Web, e passa a ser pilotado pela API. O seu sistema nunca precisa saber como o WhatsApp funciona por baixo: ele só faz requisições HTTP e recebe POSTs de volta.
O que dá para integrar
O que eu consigo conectar à API de WhatsApp do zapon?
Qualquer software que faça requisições HTTP. Sistemas próprios em qualquer linguagem (Python, Node, PHP, Go, Java, C#), plataformas no-code como n8n e Make, planilhas, formulários, backends de e-commerce, CRMs, ERPs e chatbots. Como é uma API REST padrão, não existe um sistema "incompatível" — se ele consegue chamar uma URL, ele integra.
A beleza de uma API REST é a universalidade: não há um conector proprietário que precise existir para cada ferramenta. Se o seu sistema consegue abrir uma conexão HTTP, ele consegue conversar com o zapon. Na prática, isso cobre praticamente tudo:
- Sistemas próprios em qualquer linguagem — qualquer back-end que faça uma requisição HTTP envia WhatsApp pela API.
- Plataformas no-code como n8n e Make, que têm nós e módulos genéricos de HTTP e de Webhook prontos para usar.
- Planilhas, formulários e backends de e-commerce, para confirmar pedidos, avisar sobre frete e recuperar carrinhos.
- CRMs e ERPs, para disparar follow-ups por etapa do funil ou notificar sobre notas, faturas e entregas.
- Chatbots e fluxos de atendimento, em que o webhook alimenta o seu motor de conversa e a API devolve as respostas.
Não importa se o seu stack é antigo ou moderno, monolítico ou serverless: a integração se resume a montar um JSON e fazer um POST. Esse é o motivo de uma API REST ser a base mais segura para construir sobre — ela envelhece bem e não te prende a um fornecedor de conector.
Passo 1 — Conecte um número e pegue o token
Como conectar um número de WhatsApp e obter o token?
No painel do zapon, crie uma conexão e leia o QR Code com o WhatsApp do número (ou use o código de pareamento). Assim que a conexão ficar online, copie o token dela — é esse token que autentica todas as chamadas de API que o seu sistema fará. Cada número tem o seu próprio token.
Antes de qualquer linha de código, o número precisa estar conectado e a conexão precisa ter um token. Esse token é a chave que o seu sistema vai usar para falar com a API — pense nele como a credencial daquele número específico.
Crie a conexão e copie o token
Dentro do painel do zapon, crie uma nova conexão. Cada conexão representa um número de WhatsApp e tem o seu próprio token — uma string única que autentica as requisições daquele número. Copie esse token e guarde-o com cuidado: nas chamadas HTTP ele entra como um header chamado token (não é Authorization, não é Bearer). Trate-o como uma senha, porque quem tem o token consegue enviar mensagens em nome do seu número.
Se você vai automatizar vários números, crie uma conexão para cada um. Cada token corresponde a um número específico, então o seu sistema escolhe de qual número a mensagem sai simplesmente trocando o valor do header — voltaremos a isso na seção de multi-número.
Conecte por QR Code ou código
Com a conexão criada, falta colocá-la online. Há dois caminhos:
- QR Code: o painel exibe um QR Code. No celular do número, abra o WhatsApp → Aparelhos conectados → Conectar um aparelho → e aponte a câmera para o QR Code. É o mesmo fluxo do WhatsApp Web.
- Código de pareamento: em vez do QR, o zapon gera um código de oito dígitos que você digita no WhatsApp do número (em Conectar um aparelho → Conectar com número de telefone). Útil quando não dá para escanear a tela.
Assim que o WhatsApp confirma, a conexão muda para o status online no painel. A partir daí, o zapon mantém a sessão por você: você não precisa armazenar credenciais do WhatsApp, gerenciar reconexões ou lidar com a complexidade do protocolo. O seu sistema só consome a API.
Passo 2 — Enviar por HTTP
Como enviar uma mensagem de WhatsApp pela API?
Faça um POST para https://api.zapon.dev/chat/send/text com o header token da sua conexão e um body JSON contendo Phone (o número de destino) e Body (o texto). A API entrega a mensagem e devolve um JSON com success: true e o id da mensagem.
Este é o coração de qualquer fluxo de saída — e é deliberadamente simples. Não há SDK obrigatório, não há ritual de autenticação em duas etapas: uma única chamada HTTP envia a mensagem.
O endpoint de envio de texto
Para mandar uma mensagem de texto, você faz um POST para https://api.zapon.dev/chat/send/text. A autenticação é um único header chamado token, cujo valor é o token da conexão que você copiou no Passo 1. O corpo da requisição é um JSON com dois campos: Phone, o número de destino no formato internacional (só dígitos, com DDI e DDD, por exemplo 5511999999999), e Body, o texto da mensagem.
Veja a chamada completa em curl — é o jeito mais rápido de testar a integração direto do terminal, antes mesmo de escrever uma linha no seu sistema:
enviar texto — curl
curl -X POST https://api.zapon.dev/chat/send/text \
-H "token: SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Phone": "5511999999999",
"Body": "Olá! Mensagem da integração."
}'
Ao executar, a API responde com um JSON confirmando o envio e trazendo o identificador da mensagem:
resposta da API
{
"success": true,
"data": {
"id": "3EB0…"
}
}
Esse id é útil: salve-o no seu banco ou log para rastrear cada envio e implementar idempotência — isto é, evitar mandar a mesma mensagem duas vezes se a sua rotina rodar de novo. Pronto: com essa única requisição, o fluxo de saída está completo. Daqui para a frente, o que muda entre um curl de teste e a sua aplicação é só a linguagem que monta o mesmo POST.
Passo 3 — Receber eventos por webhook
Como receber mensagens de WhatsApp no meu sistema?
Crie um endpoint HTTP público no seu sistema, copie a URL dele e cadastre-a no painel do zapon, na seção Webhook da sua conexão, marcando os eventos desejados. A partir daí, cada mensagem ou evento do número chega ao seu endpoint como um POST em tempo real — sem você precisar ficar consultando a API.
Para o fluxo de entrada, a lógica se inverte: agora é o WhatsApp que avisa o seu sistema. Isso é feito por webhook — o zapon entrega cada evento (mensagem recebida, status de entrega, etc.) via POST na URL que você indicar. A grande vantagem é que você recebe em tempo real, sem polling: nada de um loop perguntando "chegou mensagem nova?" a cada poucos segundos.
Exponha um endpoint no seu sistema
No seu back-end, crie uma rota que aceite requisições POST — por exemplo, /webhooks/zapon. Essa rota precisa estar acessível pela internet para que o zapon consiga entregar os eventos. Em produção, é a URL pública do seu servidor; em desenvolvimento, um túnel (como ngrok) resolve. O importante é que o endpoint responda rápido: registre o evento, devolva um 200 e processe o resto de forma assíncrona se houver trabalho pesado.
Logo na entrada, é comum filtrar apenas os eventos que interessam — por exemplo, processar somente mensagens recebidas de outras pessoas e ignorar as que o próprio número enviou. O payload do evento traz os dados da mensagem (remetente, texto, tipo) para o seu sistema roteirizar o que fazer.
Configure o webhook no painel do zapon
De volta ao painel do zapon, abra a sua conexão e localize a seção Webhook. Lá você:
- Informa a URL do endpoint que o seu sistema expõe.
- Marca quais eventos deseja receber — tipicamente "mensagem recebida", mas também há status de entrega e leitura, conforme a sua necessidade.
- Salva. A partir desse momento, o WhatsApp do número passa a entregar os eventos como POST na URL configurada.
Feito isso, mande uma mensagem de teste para o número conectado: o seu endpoint é acionado na hora, com os dados da mensagem no corpo do POST. É assim que se recebe WhatsApp no seu sistema sem polling e sem gambiarra — o evento chega quando acontece.
Exemplos por linguagem
Em qual linguagem dá para usar a API?
Em qualquer uma. Como é HTTP/REST puro, Python, Node, PHP, Go, Java e C# fazem a mesma chamada com seus clientes HTTP nativos. Não há SDK obrigatório: o que muda de uma linguagem para outra é só a sintaxe de montar o POST com o header token e o body JSON.
O envio é sempre o mesmo POST que você já viu em curl — só muda a forma de escrevê-lo. Abaixo, o mesmo envio em Node e em Python, para você ver como a tradução é direta. Em qualquer outra linguagem (PHP, Go, Java, C#), o padrão é idêntico: cliente HTTP, header token, body JSON.
Node (fetch)
enviar texto — Node
await fetch("https://api.zapon.dev/chat/send/text", {
method: "POST",
headers: {
"token": "SEU_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
Phone: "5511999999999",
Body: "Olá! Mensagem da integração."
})
});
Python (requests)
enviar texto — Python
import requests
requests.post(
"https://api.zapon.dev/chat/send/text",
headers={"token": "SEU_TOKEN"},
json={
"Phone": "5511999999999",
"Body": "Olá! Mensagem da integração."
}
)
Repare que nenhum dos dois exemplos importa um pacote do zapon — eles usam o cliente HTTP que a linguagem já oferece. Esse é o ponto da abordagem sem SDK obrigatório: você não fica refém de uma biblioteca específica nem de atualizações dela. Se amanhã você trocar de framework ou de linguagem, a integração continua sendo o mesmo POST.
Multi-número e tempo real
Como uso vários números e recebo eventos em tempo real?
Conecte vários números na mesma conta, cada um com seu próprio token, e escolha de qual número enviar trocando o header token na chamada. Para o recebimento, use webhooks: o zapon entrega cada evento por POST no instante em que ele acontece, sem você precisar consultar a API repetidamente (polling).
Dois recursos tornam a integração escalável de verdade: o suporte a múltiplos números e a entrega de eventos em tempo real.
Multi-número por token
Cada conexão tem o seu próprio token, e o token é o que determina de qual número a mensagem sai. Isso significa que, para operar vários números na mesma conta, o seu sistema só precisa guardar um token por número e escolher qual usar na hora do envio — trocando o valor do header token. Na prática, dá para direcionar a mensagem para sair do número do vendedor responsável, do setor de cobrança ou da central de suporte, tudo a partir do mesmo código. No recebimento, o webhook de cada conexão aponta para o seu endpoint, e o payload identifica de qual número o evento veio.
Tempo real sem polling
Sistemas mal projetados ficam perguntando à API, de tempos em tempos, se há algo novo — o famoso polling. Além de desperdiçar requisições, ele introduz atraso: a mensagem do cliente fica esperando o próximo ciclo de consulta. Com webhooks, isso desaparece. O zapon empurra o evento para o seu endpoint no instante em que a mensagem chega, então o seu sistema reage na hora. Para atendimento e chatbots, essa diferença entre "saber agora" e "saber daqui a 30 segundos" é o que separa uma conversa fluida de uma experiência travada.
Boas práticas e limites
Quais os cuidados e limites ao integrar o WhatsApp pela API?
O zapon não usa a API oficial da Meta: o número conectado é um WhatsApp comum, então a saúde dele depende de você. Evite disparos em massa para quem não espera mensagem, mantenha listas com opt-in e conteúdo relevante, proteja o token como senha e implemente idempotência. O preço é R$ 27 por número, com mensagens ilimitadas.
Alguns pontos para a integração durar e funcionar bem em produção:
- Preço previsível: R$ 27 por número por mês, com mensagens ilimitadas. Sem custo por mensagem, fluxos de alto volume — lembretes diários, notificações em massa de eventos — ficam financeiramente tranquilos.
- Saúde do número: como é um WhatsApp comum sendo pilotado por API, o número está sujeito às regras de uso normais do WhatsApp. Disparar muitas mensagens para gente que não te conhece é o caminho mais rápido para um bloqueio. Mantenha listas com opt-in, conteúdo relevante e um ritmo natural de envio.
- Sem API oficial da Meta: isso é uma vantagem (sem fila de aprovação, sem templates, sem custo por mensagem) e também a contrapartida (a responsabilidade pela boa conduta do número é sua, sem o "selo" oficial). Para muitos casos de integração, atendimento e notificação, é o melhor custo-benefício.
- Idempotência: em fluxos disparados por eventos, proteja-se contra reenvios. Salve o
id retornado pela API e evite mandar a mesma mensagem duas vezes caso a sua rotina execute novamente.
- Segurança do token: trate o
token como uma senha. Guarde-o em variável de ambiente ou cofre de segredos, nunca embutido no código-fonte versionado nem exposto no front-end.
- Endpoint resiliente: faça o seu webhook responder rápido e de forma idempotente. Devolva 200 cedo e processe o trabalho pesado de modo assíncrono, para não perder eventos em picos de mensagens.
Perguntas frequentes
Em qual linguagem consigo usar a API?
Qualquer uma. É HTTP/REST puro — Python, Node, PHP, Go, Java, C#, todas conseguem fazer a chamada com o cliente HTTP nativo. Não há SDK obrigatório: o que muda é só a sintaxe de montar o POST.
Preciso de algum SDK do zapon?
Não. Como a API é REST padrão, basta o cliente HTTP que a sua linguagem já oferece. Você não fica preso a uma biblioteca específica nem a atualizações dela.
Preciso manter a sessão do WhatsApp eu mesmo?
Não. A conexão e a sessão são mantidas pelo zapon. Você conecta o número uma vez por QR Code e depois só consome a API; não precisa armazenar credenciais do WhatsApp nem gerenciar reconexões.
Qual a URL e o corpo para enviar uma mensagem?
A URL é https://api.zapon.dev/chat/send/text, método POST, com o header token e um body JSON contendo Phone (número de destino, só dígitos, com DDI e DDD) e Body (o texto). A resposta traz success true e o id da mensagem.
Como faço para receber mensagens no meu sistema?
Exponha um endpoint HTTP público que aceite POST e cadastre a URL dele na seção Webhook da sua conexão, no painel do zapon, marcando os eventos desejados. Cada mensagem recebida vira um POST que chega ao seu endpoint em tempo real.
Dá para usar vários números na mesma conta?
Sim. Cada conexão é um número com seu próprio token. Para enviar de um número específico, basta usar o token correspondente no header; para receber, o webhook de cada conexão aponta para o seu endpoint e o payload identifica a origem.
Preciso da API oficial da Meta ou de uma conta WhatsApp Business?
Não. O zapon conecta um número de WhatsApp comum por QR Code ou código de pareamento. Não há fila de aprovação da Meta, templates obrigatórios nem custo por mensagem.
Tem como testar antes de pagar?
Sim, 14 dias grátis sem cartão, com acesso completo à API. Dá para conectar um número, fazer os primeiros envios e receber eventos por webhook antes de assinar. Depois, são R$ 27 por número por mês, com mensagens ilimitadas.