Para devs procurando "API WhatsApp para desenvolvedores", aqui está um walkthrough pratico: três caminhos disponíveis, provedores oficiais vs bibliotecas não-oficiais, custos reais e setup com mínima fricção. Exemplos de código em TypeScript, Python e cURL ao longo do guia.
As 3 APIs do WhatsApp para devs
- Hospedada pela Meta, sem infra para rodar
- Você gerencia tokens, aprovação de template, assinatura de webhook
- Melhor quando: quer máximo controle e tem devops dedicado
2. Business API via BSP oficial (Zavu, Twilio, etc.)
- BSPs abstraem a complexidade da Meta
- SDK em multiplas linguagens
- Melhor para: 99% dos casos de uso
3. Bibliotecas não-oficiais (evite)
- Fazem reverse engineering do WhatsApp Web
- Risco de banimento permanente
- Melhor para: nada em produção
Quickstart via BSP oficial
bash
npm install @zavudev/sdk # ou: pip install zavudev
typescript
import Zavu from "@zavudev/sdk"
const zavu = new Zavu({ apiKey: process.env.ZAVU_API_KEY })
await zavu.messages.send({
to: "+5511999998888",
channel: "whatsapp",
text: "Olá da API!"
})
Pronto — primeira mensagem em < 30 segundos de código.
A janela de service de 24h
Regra crítica:
- Cliente te manda mensagem → janela 24h abre → manda qualquer coisa grátis
- 24h passam → só template
Desenhe seus fluxos em torno disso. Use templates para outbound proativo (confirmações de pedido, OTPs, lembretes), texto livre dentro da janela.
Tipos de mensagem
Texto
typescript
await zavu.messages.send({ to, channel: "whatsapp", text: "Oi" })
Template (fora da janela)
typescript
await zavu.messages.send({
to, channel: "whatsapp", messageType: "template",
content: { templateId: "tpl_pedido_confirmado", templateVariables: { "1": "João" } }
})
Mídia
typescript
await zavu.messages.send({
to, channel: "whatsapp", messageType: "image",
content: { mediaUrl: "https://..." }
})
Interativo (botões, listas)
typescript
await zavu.messages.send({
to, channel: "whatsapp", messageType: "buttons",
text: "Escolha opção",
content: { buttons: [{ id: "1", title: "Comprar" }, { id: "2", title: "Suporte" }] }
})
Webhooks para receber
typescript
export async function POST(req: Request) {
const event = await req.json()
if (event.type === "message.inbound") {
await zavu.messages.send({
to: event.message.from,
channel: "whatsapp",
text: "Recebido"
})
}
return new Response("ok")
}
Tipos de evento:
message.inbound — cliente mandoumessage.delivered — entreguemessage.read — lidomessage.failed — falhou (com razão)button.reply — cliente apertou botãotemplate.status_changed — template aprovado/rejeitado
Pitfalls comuns
Timeout de webhook: Meta retenta se você não responder 200 em 2 segundos. Reconheça rápido, processe async.
Ciclos de rejeição de template: Meta rejeita templates que parecem promocionais na categoria Utility. Leia as
guidelines de template.
Degradação de quality score: tasas altas de bloqueio limitam seu número. Verifique opt-ins, respeite STOP.
Rate limits: Meta enforce tiers de mensageria (250/dia → 1k → 10k → 100k). Verifique o business para aumentar.
Snapshot de preços (Brasil, 2026)
| Categoria | Custo por conversa 24h |
|---|
| Service (cliente inicia) | R$ 0 |
|---|
| Authentication | R$ 0.04 |
|---|
| Utility | R$ 0.07 |
|---|
| Marketing | R$ 0.18 |
|---|
Cálculo completo de preços.
Escolhendo BSP
| Provedor | Markup | Setup | Contrato | Melhor para |
|---|
| Zavu | 0% | R$ 0 | Mês a mês | Devs multi-canal |
|---|
| Twilio | 5-20% | R$ 0 | Mês a mês | Voz + SMS também |
|---|
| MessageBird | Variável | R$ 3.000 | 3 meses | Enterprise |
|---|
| Gupshup | 10-25% | R$ 0 | Mês a mês | India-focused |
|---|
Recursos relacionados
Conclusão
A API do WhatsApp em 2026 está madura e acessível. Escolha BSP sem markup ou contrato, use templates para outbound, texto livre dentro da janela de 24h, e instrumente com webhooks.
Zavu free tier cobre suas primeiras 2.000 mensagens — sem cartão.