Interaflow
WhatsAppCanal · WhatsApp Business API

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
Hello, WhatsApp · curlPOST /v1/messages
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:

  1. 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.
  2. 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.

curlbash
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" }
  }'
node (fetch nativo, Node 18+)javascript
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" }
python (httpx)python
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.

Payload recebido no seu endpointjson
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.

Cliente tipado em 1 comandobash
npx @openapitools/openapi-generator-cli generate \
  -i https://api.interaflow.com.br/openapi.json -g typescript-fetch

Templates 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), manda POST /v1/messages com 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.

Swagger UI em /docs/whatsapp — endpoints expandidos.
endpoints no namespace whatsapp(needs-data)
BSPs suportados (Baileys, Gupshup, Zenvia)
3
três formas de ler
/docs · /redoc · /openapi.json
Abrir a documentação do WhatsApp

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.