WhatsApp API Web Service: Como Funciona, Integrar e Evitar Erros em 2026
Você chegou aqui com uma dúvida técnica objetiva: como o WhatsApp funciona como web service?
Antes de escrever qualquer linha de código, você quer entender a arquitetura, endpoints, webhooks, janelas de sessão, tipos de mensagem e onde as integrações costumam quebrar.
A boa notícia é que a WhatsApp Business Platform expõe uma API REST bem documentada.
A má notícia é que ela tem comportamentos que fogem do padrão de uma API convencional request-response, e quem descobre isso no meio da integração perde dias de trabalho.
Depois de apoiar muitas implementações de API oficial no Brasil, a Chatsac mapeou os pontos de travamento mais comuns (veja também nosso guia de integração) da configuração de webhook até os erros de código que aparecem em produção.
Este guia cobre a arquitetura real, o passo a passo técnico e o cálculo que a maioria das equipes faz antes de decidir entre construir do zero ou usar uma plataforma pronta.
WhatsApp API web service: arquitetura real antes de escrever uma linha de código
A Cloud API do WhatsApp é uma API REST hospedada pela Meta. Você não precisa gerenciar nenhum servidor para enviar mensagens, basta fazer um POST para o endpoint da Meta com seu token de acesso.
POST https://graph.facebook.com/v19.0/{phone-number-id}/messages
Authorization: Bearer TOKEN
Content-Type: application/json
Mas há uma diferença crítica em relação a APIs convencionais: o recebimento de mensagens não funciona por polling. Funciona por webhook.
Na prática, o fluxo é bidirecional assimétrico:
- Envio: você faz
POST https://graph.facebook.com/v19.0/{phone-number-id}/messages - Recebimento: a Meta faz
POSTno seu servidor a cada evento — mensagem recebida, status de entrega, erro de envio

Se o seu servidor não responder 200 OK em até 20 segundos, a Meta tenta reenviar com backoff exponencial por até 7 dias.
Isso significa que sua URL de webhook precisa ser estável, com SSL válido e tempo de resposta rápido, caso contrário, você processa eventos duplicados ou fora de ordem.
A Cloud API do WhatsApp é uma API REST hospedada pela Meta. Se você ainda está avaliando se a WhatsApp Business API é o caminho certo para o seu negócio, temos um guia completo sobre isso.
REST + Webhooks: por que é diferente de uma API request-response comum
Em APIs convencionais, você pergunta e o servidor responde na mesma conexão HTTP. No WhatsApp, você envia por uma conexão e recebe por outra, iniciada pelo servidor da Meta. Isso exige que sua infraestrutura:
- Exponha um endpoint público com SSL válido (HTTP sem TLS é rejeitado pela Meta)
- Processe payloads JSON de forma idempotente — o mesmo evento pode chegar mais de uma vez
- Retorne
200 OKimediatamente e processe o evento de forma assíncrona em background
Ignorar qualquer um desses três pontos é a causa raiz da grande maioria dos problemas que vemos em integrações novas.
Os 4 tipos de mensagem e como afetam o billing
A Meta categoriza cada mensagem em uma das quatro categorias abaixo. Cada uma tem regras de janela e custo diferentes, e confundir as categorias é a causa direta do erro 131047 em produção:
| Categoria | Quando usar | Janela de envio | Template obrigatório? |
|---|---|---|---|
| Service | Resposta a mensagem iniciada pelo usuário | 24h após última msg do contato | ❌ Não |
| Utility | Confirmações, atualizações, alertas transacionais | Qualquer momento | ✅ Sim |
| Authentication | OTP, verificação em 2 etapas | Qualquer momento | ✅ Sim |
| Marketing | Promoções, campanhas, newsletters | Qualquer momento | ✅ Sim |
Como a Meta cobra (modelo vigente desde 1º de julho de 2025): a cobrança é por template entregue, segmentada por categoria — e não mais por conversa. Mensagens de Service (respostas ao cliente dentro da janela de 24h) não são cobradas.
| Categoria | Quem inicia | Custo |
|---|---|---|
| Service | Cliente | Gratuito |
| Utility | Empresa | Por template — gratuito se enviado dentro da janela de 24h aberta pelo cliente |
| Authentication | Empresa | Por template — valores variam por país |
| Marketing | Empresa | Por template — categoria mais cara, use com estratégia |
Os valores exatos por categoria e região estão na tabela oficial de pricing da Meta, que é atualizada periodicamente.
Mensagens fora da janela de 24h obrigatoriamente usam templates aprovados na Meta Business Manager. Tentar enviar texto livre fora da janela retorna erro imediatamente.
Pré-requisitos técnicos e de conta antes de ativar o endpoint
A maioria dos atrasos em integração não acontece no código — acontece na burocracia da Meta. Antes de qualquer chamada à API, você precisa ter:
- Conta no Meta Business Manager verificada com CNPJ
- Número de telefone dedicado — não pode estar ativo no WhatsApp pessoal ou Business App (exceto com o recurso Coexistence, detalhado abaixo)
- App criado no Meta for Developers com as permissões
whatsapp_business_messagingewhatsapp_business_management - Nome de exibição do número aprovado pela Meta
Meta Business Manager, número dedicado e verificação empresarial
A verificação empresarial na Meta pode levar de 2 a 10 dias úteis dependendo do CNPJ e dos documentos enviados. O ponto de travamento mais comum é o nome de exibição do número: ele precisa ser consistente com o nome da empresa verificada.
Nomes genéricos como “Atendimento” ou “Suporte” são frequentemente reprovados na primeira tentativa.
Outro erro comum: usar um número que já teve histórico no WhatsApp pessoal.
A Meta rastreia o histórico do número e pode exigir que ele fique inativo por um período antes de ser registrado na API.
Se você ainda está na etapa de configuração inicial da conta, preparamos um passo a passo detalhado sobre como ativar a API oficial do WhatsApp — incluindo os documentos exigidos e os erros mais comuns na verificação empresarial.
Cloud API vs BSP: qual arquitetura escolher
Com a Cloud API direta, você se autentica com um token do Meta for Developers e faz chamadas diretamente nos servidores da Meta — sem intermediário. Você gerencia token, webhook, logs e atualizações de versão da API.
Com um BSP (Business Solution Provider) como a Chatsac, a API já está pré-configurada, os webhooks gerenciados, e você acessa tudo por uma interface com CRM, multiusuário e automação integrados.
A escolha entre os dois modelos costuma depender de um único fator: se sua equipe tem capacidade e interesse em manter infraestrutura de API indefinidamente — não apenas na fase de build.
💡 Coexistence — recurso lançado em 2025 A Meta lançou o recurso Coexistence, que permite usar a API oficial e o WhatsApp Business App no mesmo número simultaneamente. Isso eliminou o maior obstáculo de migração para empresas que não queriam perder o acesso pelo celular durante a transição.
Prefere não gerenciar infraestrutura de API? Conheça a API oficial pré-configurada da Chatsac — sem servidor, webhook ou token para gerenciar. CRM e multiusuário inclusos →
Passo a passo da integração: da credencial ao primeiro webhook
Com os pré-requisitos resolvidos, a integração técnica segue três etapas principais.
O erro mais comum aqui é tentar testar em produção antes de validar em sandbox, o que contamina o histórico de qualidade do número e pode resultar em limite de envio reduzido pela Meta.
1. Gerar token via System User, configurar App e registrar número
No Meta for Developers, crie um App do tipo Business, adicione o produto WhatsApp e associe seu número ao App.
Para o token de acesso, não use o token de usuário gerado automaticamente no painel — ele expira em 60 dias e é a causa do erro 190 em produção.
O caminho correto é:
- No Meta Business Manager, acesse Configurações → Usuários do sistema
- Crie um System User com função de administrador
- Atribua o App e o número ao System User
- Gere um token de acesso sem expiração para esse System User
Esse token nunca expira a menos que seja revogado manualmente — o que elimina a principal causa de interrupção em produção.
2. Configurar Webhook URL, Verify Token e assinar eventos
Na aba Webhooks do seu App no Meta for Developers, informe sua URL pública e um verify_token de sua escolha (qualquer string segura). A Meta fará um GET na sua URL com três parâmetros:
hub.mode=subscribe
hub.verify_token=SEU_TOKEN
hub.challenge=VALOR_ALEATORIO
Seu servidor deve verificar se o hub.verify_token bate com o seu e retornar exatamente o valor de hub.challenge com status 200.
app.get('/webhook', (req, res) => {
const mode = req.query['hub.mode'];
const token = req.query['hub.verify_token'];
const challenge = req.query['hub.challenge'];
if (mode === 'subscribe' && token === process.env.VERIFY_TOKEN) {
res.status(200).send(challenge);
} else {
res.sendStatus(403);
}
});
ℹ️ Armazene o
VERIFY_TOKENcomo variável de ambiente — nunca no código-fonte. Retorne exatamente o valor dehub.challengecom status 200 para confirmar o endpoint.
Após a verificação, assine os campos messages e message_status_updates para receber eventos de mensagens recebidas e atualizações de status de entrega.

3. Sandbox e testes sem impactar produção
O Meta for Developers fornece um número de teste gratuito para validar a integração antes de usar um número real.
Esse número tem limitações, só envia para números pré-autorizados no painel, mas é suficiente para validar o fluxo completo de envio e recebimento via webhook.
Para testar webhooks localmente sem expor sua máquina, use ngrok ou Cloudflare Tunnel para criar uma URL pública temporária que aponta para seu localhost.
Checklist de integração — marque conforme avança:
- Conta no Meta Business Manager verificada com CNPJ
- Número de telefone dedicado registrado
- App criado no Meta for Developers (tipo Business)
- System User criado com token sem expiração
- Webhook URL configurada com SSL válido
- Verify Token validado e
hub.challengerespondendo 200 - Eventos
messagesemessage_status_updatesassinados - Fluxo completo validado em sandbox antes de produção
Erros comuns na integração e como resolver cada um
Esses são os erros que mais aparecem nas primeiras semanas após o go-live.
A maioria tem causa conhecida e solução objetiva, o problema é que a documentação da Meta descreve o código do erro, mas não explica o contexto real em que ele ocorre.
Erros de código: 190, 131026 e 131047
Os três erros mais frequentes em integrações novas têm causas distintas e soluções diretas:
| Código | Causa mais comum | Solução | Como prevenir |
|---|---|---|---|
190 | Token de usuário expirado (60 dias) | Migrar para token de System User | Usar System User desde o início |
131026 | Template não encontrado ou em revisão | Verificar nome exato no Business Manager | Aguardar aprovação antes de usar em produção |
131047 | Mensagem livre fora da janela de 24h | Usar template Utility ou Marketing | Verificar timestamp da última msg antes de enviar |
100 | Campo obrigatório ausente no payload | Validar payload contra documentação oficial | Adicionar validação de schema antes do POST |
368 | Muitas msgs com feedback negativo | Revisar conteúdo e aguardar desbloqueio | Monitorar taxa de bloqueio no Business Manager |
Webhook não recebe mensagens: as 3 causas mais comuns
Quando o webhook está configurado mas os eventos não chegam, o problema geralmente é um desses três:
- SSL inválido ou autoassinado: a Meta rejeita URLs com certificados que não são de uma CA reconhecida. Certificado Let’s Encrypt resolve, mas precisa estar configurado corretamente no servidor
- Timeout acima de 20 segundos: se seu endpoint demora mais de 20s para responder, a Meta considera a entrega como falha. A solução é retornar
200imediatamente e processar o payload em uma fila assíncrona (Redis, SQS, etc.) - URL não acessível externamente: comum em ambientes de desenvolvimento. O endpoint precisa ser acessível pela internet pública — não funciona em
localhostnem em redes privadas sem tunelamento
Sua integração trava em algum desses pontos? O time técnico da Chatsac já resolveu esses erros muitas vezes. Fale com a Chatsac — API oficial pré-configurada, sem servidor nem gestão de token →
Boas práticas de segurança, logs e auditoria em produção
Uma integração que funciona no go-live pode virar um problema de segurança seis meses depois se não tiver governança, esses são os três pontos que mais negligenciamos em revisões de implementações existentes.
Rotação de tokens, credenciais e proteção do webhook
- Nunca armazene o token de acesso no código-fonte — use variáveis de ambiente ou um serviço de secrets como AWS Secrets Manager ou HashiCorp Vault
- Valide a assinatura do webhook: a Meta assina cada payload com HMAC-SHA256 usando o App Secret. Valide o header
X-Hub-Signature-256antes de processar qualquer evento — isso evita que payloads falsos sejam injetados no seu sistema - Restrinja o IP do webhook se possível: a Meta publica os ranges de IP que usa para enviar webhooks — adicione uma allowlist no seu firewall
O que logar, por quanto tempo guardar e como auditar (LGPD)
Toda mensagem trafegada pela API contém dados pessoais de usuários: nome, número de telefone, conteúdo da conversa.
Pela LGPD, você precisa ter uma política clara de retenção e ser capaz de atender solicitações de exclusão de dados.
Na prática, isso significa:
- Logar eventos de webhook com timestamp, tipo de evento e ID da mensagem — sem logar o conteúdo completo da mensagem em sistemas de log de terceiros
- Definir um período de retenção (recomendamos 90 dias para logs operacionais)
- Ter um mecanismo de exclusão de dados por número de telefone para atender requisições de titulares
⚠️ Atenção: APIs não oficiais (Evolution API, Waha, Uazapi, Z-API) funcionam via automação do WhatsApp Web e violam diretamente os Termos de Serviço da Meta. Desde 2025, a Meta intensificou os banimentos em escala — incluindo números com histórico de anos. Se você ou seu cliente está avaliando essas opções para reduzir custo, leia antes: os riscos reais da API não oficial do WhatsApp.
Como identificar se sua operação roda em uma API não oficial
No mercado, o termo “WhatsApp Web API” também é usado para vender automação não oficial — sistemas que simulam uma sessão do WhatsApp Web em um servidor de terceiros. Os sinais são objetivos:
- A conexão é feita escaneando um QR Code, como no WhatsApp Web
- O sistema exige que o celular fique sempre online para funcionar
- Não há templates aprovados pela Meta nem categorias de mensagem (Service, Utility, Marketing)
- Não existe acesso ao Meta Business Manager nem verificação oficial da conta
Nesse modelo, as mensagens trafegam por infraestrutura que a Meta não reconhece: além do risco de banimento permanente do número — que leva junto a base de contatos e o histórico —, não há garantia de criptografia de ponta a ponta no trecho intermediado e o compliance com a LGPD fica comprometido. A Cloud API oficial, o web service documentado neste guia, é o único caminho de integração programática suportado pela Meta.
Build vs Buy: o cálculo que equipes técnicas fazem antes de decidir
Chegar até aqui significa que você entende a arquitetura. A pergunta real agora é: vale construir e manter essa integração internamente, ou usar uma plataforma que já fez isso?
Não existe resposta universal, existe o cálculo certo para o seu contexto.
Custo real de manter integração própria
A fase de build é a parte mais visível, o que a maioria das equipes subestima é o custo de manutenção contínua, que existe independentemente de o sistema estar funcionando bem:
- Atualizações de versão da API: a Meta depreca versões da Graph API periodicamente. Cada deprecação exige revisão e atualização do código em produção
- Gestão de token: mesmo com System User, tokens precisam de monitoramento. Uma rotação mal executada derruba o envio de mensagens sem alerta visível
- Erros silenciosos de webhook: payloads que chegam fora de ordem ou duplicados precisam de lógica de idempotência — que precisa ser testada e mantida
- Mudanças nas políticas da Meta: regras de template, janelas de billing e limites de envio mudam com frequência. Alguém precisa monitorar e adaptar
Na prática, manter uma integração própria saudável exige entre 4 a 8 horas mensais de atenção técnica, mesmo sem nenhum incidente.
Quando a plataforma ganha do código próprio — e quando não ganha
Uma plataforma como a Chatsac faz sentido quando o objetivo é operar WhatsApp em escala com o menor custo total, não apenas o menor custo de implementação inicial:
- ✅ API oficial pré-homologada pela Meta — sem processo de verificação independente
- ✅ Webhooks gerenciados, com fila de reprocessamento automático
- ✅ CRM multiusuário, automação e relatórios integrados no mesmo painel
- ✅ Atualizações de versão da API feitas pela plataforma, transparentes para o cliente
- ✅ Suporte técnico especializado em WhatsApp Business Platform
A integração própria ainda ganha quando você precisa de customização profunda que uma plataforma não permite, como integração com sistemas legados muito específicos, lógicas de roteamento proprietárias ou requisitos de compliance que exigem que os dados nunca saiam da sua infraestrutura.
Depois de muitas implementações, o padrão que identificamos é: equipes que escolhem build geralmente migram para plataforma em 12 a 18 meses, quando o custo de manutenção começa a superar o custo da plataforma.
Limites de envio por tier (messaging limits):
| Tier | Conversas / 24h | Como avançar |
|---|---|---|
| Tier 1 | 250 | Número recém-registrado (padrão) |
| Tier 2 | 1.000 | Iniciar 500 conversas em 7 dias |
| Tier 3 | 10.000 | Iniciar 2.000 conversas em 7 dias |
| Tier 4 | 100.000 | Iniciar 10.000 conversas em 7 dias |
| Ilimitado | Sem limite | Iniciar 100.000 conversas em 7 dias |
A progressão é automática se a qualidade do número estiver “Connected” (verde). Rebaixamento ocorre se a qualidade cair para “Flagged” ou “Restricted”.
Está avaliando build vs buy? Traga seu cenário técnico — a Chatsac mostra o delta de custo em uma demo de 15 minutos. API oficial + CRM + multiusuário + automação em um único painel, sem servidor próprio, sem gestão de token e sem surpresa de billing.
Perguntas frequentes
Quer ver isso funcionando na sua operação?
Conheça a plataforma de atendimento e CRM da Chatsac para WhatsApp.
Agendar demonstração