WhatsApp Business API — oficial, e sem te prender num BSP.
Webhook normalizado, templates HSM aprovados pelo Meta, exemplos em curl, node e python. Três caminhos de conexão — Baileys pra começar rápido, Gupshup e Zenvia pra quem já tem contrato, Cloud API direto quando a gente liberar. Você troca de caminho sem reescrever integração.
- OpenAPI aberto
- 14 dias pra testar
- Sem cartão pra emitir token
curl -X POST https://api.interaflow.com.br/v1/messages \
-H "Authorization: Bearer $IF_TOKEN" \
-H "Idempotency-Key: 9f2b-4821" \
-d '{
"to": "+5511998887777",
"channel": "whatsapp",
"template": "order_update",
"vars": { "nome": "Ana", "pedido": "#4821" }
}'
# → 201 Created { "id": "wamsg_01HN...", "status": "queued", "bsp": "gupshup" }WhatsApp · Oficial
via Gupshup / Zenvia · GA
Webhook normalizado
mesmo payload pros 3 caminhos
Cloud API direto
needs-release-flag
O que é a WhatsApp Business API
A WhatsApp Business API é a superfície programática do WhatsApp Business que permite a empresas enviar e receber mensagens em volume, com atendimento multi-agente, automação via chatbot e envio proativo via templates HSM aprovados pelo Meta. É diferente do aplicativo WhatsApp Business (que é pra uma pessoa só, num celular) — a API é pensada pra produto, integração e escala.
Na prática, a API do WhatsApp Business tem duas formas de envio definidas pelo Meta:
- Sessão livre — durante a janela de 24h após uma mensagem recebida do cliente, a empresa pode responder com qualquer conteúdo (texto, mídia, botões) sem custo de template.
- Template (HSM) — fora da janela de 24h, a empresa só envia mensagens a partir de templates pré-aprovados pelo Meta, com variáveis dinâmicas. É o caminho pra notificação transacional (confirmação de pedido, alerta de entrega, lembrete de agendamento) e pra engajar cliente que não escreveu recentemente.
Cloud API, On-Premises API e o caminho via BSP
O Meta oferece a API em duas arquiteturas — Cloud API (hospedada pela própria Meta, padrão atual) e On-Premises API (descontinuada gradualmente). Na prática, a maioria das empresas acessa a API via um BSP (Business Solution Provider) — um parceiro homologado pelo Meta que intermedia onboarding, billing e suporte. Gupshup e Zenvia são BSPs. Dá também pra conectar direto no Cloud API sem BSP, mas aí o cliente assume o onboarding e o Business Verification sozinho.
O que a Interaflow faz por cima
A Interaflow normaliza esses caminhos atrás de um único webhook e uma única superfície de envio. Você escreve o código uma vez — POST /v1/messages pra enviar, webhook na sua URL pra receber — e o roteador por baixo fala com quem estiver configurado: Baileys (não-oficial, bom pra validar), Gupshup, Zenvia ou Cloud API direto (needs-release-flag). Quando você muda de BSP, muda só credencial no painel — o código não mexe. É o oposto da opção "aprenda a API do BSP, amarre seu produto nela, reescreva quando migrar". Também dá pra subir integração direto pela nossa API pública.
Quickstart
Hello, WhatsApp
Mesma chamada — enviar um template HSM "order_update" — em três linguagens. npm/pip opcional: todos os exemplos rodam com a biblioteca HTTP padrão da linguagem. Troque o $IF_TOKEN pela sua API key do painel.
curl -X POST https://api.interaflow.com.br/v1/messages \
-H "Authorization: Bearer $IF_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9f2b-4821" \
-d '{
"to": "+5511998887777",
"channel": "whatsapp",
"template": "order_update",
"vars": { "nome": "Ana", "pedido": "#4821" }
}'const res = await fetch("https://api.interaflow.com.br/v1/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.IF_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": "9f2b-4821",
},
body: JSON.stringify({
to: "+5511998887777",
channel: "whatsapp",
template: "order_update",
vars: { nome: "Ana", pedido: "#4821" },
}),
});
const data = await res.json();
// { id: "wamsg_01HN...", status: "queued", bsp: "gupshup" }import os, httpx
resp = httpx.post(
"https://api.interaflow.com.br/v1/messages",
headers={
"Authorization": f"Bearer {os.environ['IF_TOKEN']}",
"Idempotency-Key": "9f2b-4821",
},
json={
"to": "+5511998887777",
"channel": "whatsapp",
"template": "order_update",
"vars": {"nome": "Ana", "pedido": "#4821"},
},
)
print(resp.json())
# {'id': 'wamsg_01HN...', 'status': 'queued', 'bsp': 'gupshup'}Os três exemplos produzem exatamente a mesma chamada. A API é a verdade canônica, não o SDK. Ver todos os endpoints de WhatsApp → · Baixar OpenAPI →
Superfícies
Quatro superfícies. Um WhatsApp.
Não existe "uma API do WhatsApp" — existe uma composição de 4 superfícies que cobre o ciclo de vida da mensagem. A Interaflow expõe todas no mesmo formato, independente do caminho (Baileys, Gupshup, Zenvia, Cloud API).
- GA
Send (outbound)
POST /v1/messages
Você chama a Interaflow pra enviar mensagem — sessão livre ou template HSM.
Quando usar
Envio transacional, resposta de chatbot, disparo ativo com template fora da janela.
Atenção
Fora da janela de 24h, só via template aprovado pelo Meta. Sessão livre dá 403.
- GA · HMAC
Webhook inbound
evento message.received
A Interaflow chama o seu endpoint quando chega mensagem do cliente (texto, mídia, botão, reação).
Quando usar
Receber mensagem, disparar chatbot, abrir conversa no seu sistema.
Atenção
Seu endpoint precisa ser idempotente — retransmitimos em falha (retry + DLQ). Valide HMAC.
- GA · retry + DLQ
Delivery callback
eventos sent / delivered / read / failed
A Interaflow chama o seu endpoint com o status de cada envio — enfileirado, entregue, lido, falhou.
Quando usar
Monitorar taxa de entrega e leitura, alertar em template com baixa conversão, auditar campanha.
Atenção
Meta não garante ordem — sua lógica tem que tolerar read chegando antes de delivered.
- UI + sync via BSP · CRUD API needs-release-flag
Template (HSM)
approval externa + evento template.updated
CRUD de templates HSM — criar, editar, submeter pra aprovação do Meta, consultar status.
Quando usar
Preparar notificação proativa. Cada template é aprovado pelo Meta antes de poder ser enviado.
Atenção
Aprovação é do Meta, não da Interaflow — rejeição volta com motivo (ex: 'too promotional').
Recursos
O que a API do WhatsApp entrega, além do send
Disparar mensagem é commodity. O que diferencia é o que tem em volta: webhook com entrega garantida, normalização entre BSPs, template auditável, rate limit previsível.
Webhook inbound normalizado em tempo real
Quando chega mensagem do cliente (texto, mídia, botão, reação), a Interaflow normaliza o payload — mesmo formato, mesmas chaves, mesma semântica — e chama o seu endpoint via HTTP POST com assinatura HMAC no header X-Interaflow-Signature. Funciona igual pra Baileys, Gupshup e Zenvia: seu código não sabe qual BSP está por baixo, só consome o evento. Entrega em tempo real (latência típica < 2s do recebimento no Meta até o seu endpoint — needs-data pro número exato por plano) com retry + DLQ em caso de falha do seu lado.
POST /seus-hooks/whatsapp
X-Interaflow-Signature: sha256=a2b4c6...
{
"event": "message.received",
"channel": "whatsapp",
"bsp": "gupshup",
"from": "+5511998887777",
"text": "Cheguei no endereço errado",
"received_at": "2026-04-20T14:02:11Z"
}Mesmo payload entre Baileys, Gupshup e Zenvia.
Sandbox pra testar em dias, não semanas
Conecta via Baileys (QR code) em minutos — sem onboarding de BSP e sem Business Verification no Meta. Mesma API, mesmo webhook, mesmos eventos. É não-oficial (ponte Node.js via bibliotecas abertas) — não use em produção pra volume alto, mas é o ambiente mais rápido pra subir um POST /v1/messages de verdade. Pra produção, troca credencial no painel (Gupshup/Zenvia) — o código não mexe. needs-release-flag pro sandbox oficial da API do Meta.
- QR code (Baileys)10 min
- BSP oficial (Gupshup/Zenvia)2–3 dias
- Cloud API direto3–5 dias + Business Verification
Três caminhos, um webhook — go-live típico.
Exemplos prontos em curl, node e python
Exemplos oficiais em curl (pra quem quer ver o que vai pela rede), node (fetch) e python (httpx). Todos copiáveis direto da documentação em /docs/whatsapp. Como a API é descrita em OpenAPI 3.1 servido em /openapi.json, você gera cliente tipado pra qualquer linguagem (Java, Go, Ruby, C#, Rust, Kotlin, Swift) com um comando. SDK oficial @interaflow/node e interaflow-python: needs-release-flag.
npx @openapitools/openapi-generator-cli generate \
-i https://api.interaflow.com.br/openapi.json -g typescript-fetchTemplates HSM gerenciados no painel, enviados via API
Templates são aprovados pelo Meta — independente de qual BSP você usa. No painel Interaflow você escreve o template, submete, acompanha o status. Depois que o Meta aprovar, dispara via API com template: "nome" e vars — a Interaflow preenche as variáveis, chama o BSP e normaliza o callback de delivery. CRUD completo via API (criar, editar, deletar, re-submeter) está no roadmap — needs-release-flag.
- order_update (PT-BR)Aprovado pelo Meta
- appointment_reminder_v2Em revisão há 6h
- promo_april_26Rejeitado — marketing
Aprovação e status visíveis no painel, disparo via API.
Rate limit composto e transparente
Rate limit em WhatsApp Business API é composto por camadas: (1) tier do Meta por número (250 / 1.000 / 10.000 / 100k / ilimitado conversas/24h), (2) rate limit do BSP intermediário (Gupshup/Zenvia publicam tabelas), (3) rate limit da Interaflow por plano. O painel mostra os 3 ao mesmo tempo — você sabe qual teto bate primeiro no seu caso. Respostas incluem headers X-RateLimit-Remaining, X-Interaflow-Meta-Tier e X-Interaflow-BSP. Números específicos por plano Interaflow: needs-data — consulte /docs/whatsapp pro estado atual.
- Meta · 10k conv/24h
- Tier 3
- BSP · Gupshup
- 80 msg/s
- Interaflow · por plano
- —
Painel mostra quem bate primeiro.
Matriz de decisão
Por onde começar a integração no WhatsApp?
Três caminhos que cobrem a maioria dos casos. O quarto recorte fica no CTA do fim da página — pra quem já tem contrato fechado com BSP específico.
Validar a ideia — Baileys em minutos
Go-live em ~10 min com QR code. Zero onboarding.
Você está validando caso de uso (chatbot novo, notificação nova, integração com CRM) e não quer gastar 3 dias em Business Verification. Conecta via Baileys (escaneia QR code, sobe o bridge), mandaPOST /v1/messagescom o mesmo contrato de produção, consome webhook no seu endpoint. Migração pra BSP oficial depois é troca de credencial no painel — seu código não muda.Produção com BSP — Gupshup ou Zenvia
Go-live típico em 2–3 dias. Template HSM aprovado pelo Meta.
Volume real, Business Verification aprovada, tier do Meta definido. Escolhe o BSP (a Interaflow integra com os dois sem preferência), o BSP faz o onboarding no Meta, você sobe templates HSM no painel e dispara via API. O Outbox garante retry e DLQ no callback de delivery. Bom encaixe com CRM e integrações nativas (HubSpot, Salesforce).Cloud API direto — sem BSP intermediário
3–5 dias com Business Verification. needs-release-flag.
Meta Cloud API conectada direto, sem Gupshup/Zenvia no meio. Você tem engenharia pra cuidar do onboarding (Business Manager, Business Verification, WABA, registro do número) e prefere remover o BSP como elo. A superfície de API da Interaflow é a mesma — o que muda é quem fatura as conversas (Meta direto). needs-release-flag — Cloud API direto é roadmap. Ver pillar /whatsapp.
Documentação
A documentação do WhatsApp é o próximo clique
Swagger UI em /docs/whatsapp, ReDoc em /redoc, OpenAPI cru em /openapi.json. Você vê o endpoint, testa com a sua API key direto no navegador, copia o curl. Sem cadastro pra ver a estrutura.
needs-asset · docs-swagger-whatsapp
Swagger UI em /docs/whatsapp
POST /v1/messages · POST /v1/whatsapp/templates
- endpoints no namespace whatsapp(needs-data)
- —
- BSPs suportados (Baileys, Gupshup, Zenvia)
- 3
- três formas de ler
- /docs · /redoc · /openapi.json
Sem login pra navegar. API key só pra rodar request real.
FAQ
Perguntas que o time de engenharia faz sobre o WhatsApp API
14 dias
pra testar a API do WhatsApp sem cartão
Pega uma API key. Conecta um QR. Dispara um template.
Conecta Baileys em minutos, envia template HSM via API, configura webhook no seu endpoint, valida delivery callback. Se a cobertura não for a que a gente promete, você sai sem fricção. Se for, migra pra BSP oficial sem reescrever código.
14 dias. Sem cartão. OpenAPI aberto pra você auditar antes.