Skip to main content
Escopos necessários: read:broadcasts, write:broadcasts e read:whatsapp_instances.

1. Escolha o número

Guarde o id de um número com status: "connected".
Esta resposta ainda não informa se o número é do WhatsApp Oficial ou por QR Code — e isso muda tudo: o Oficial exige modelo aprovado. Se você não souber, confira no painel ou olhe o campo channel em um disparo existente.

2. Estime antes de criar

Este passo não é opcional. É o que separa “mandei para 1.250 clientes” de “mandei para a base inteira”.
Os filtros ficam em audience.filters. Se você colocá-los na raiz de audience, a requisição é aceita e a estimativa volta com toda a base — esse é o sinal de que o aninhamento está errado.
Confira estimated_count e o detalhamento em skipped_by_reason antes de seguir.

3. Crie o rascunho

Os perfis são conservative, moderate e aggressive. Comece devagar em número novo.

4. Lance

O status vai para processingnão running, que não existe. Com scheduledFor no futuro, vai para scheduled e sai sozinho na hora marcada. Se um número estiver acima do limite de aquecimento, o lançamento é barrado com 422. Reenvie com confirmWarmupOverride: true só se você aceita o risco de bloqueio.

5. Acompanhe

Em vez de fazer polling, assine broadcast.completed e broadcast.failed nos webhooks. O payload traz o consolidado.

6. Ajuste sem recomeçar

Percebeu que está rápido demais? Não cancele:
Funciona com o disparo em sending ou paused.

7. Audite o resultado

O consolidado está em stats do próprio disparo — incluindo errorsByType, que agrupa as falhas por causa. Para o detalhe contato a contato:

Checklist

  • Estimativa conferida antes de criar
  • Filtros dentro de audience.filters
  • Perfil válido (conservative / moderate / aggressive)
  • Janela de envio respeitando horário comercial
  • Modelo aprovado, se o número for do WhatsApp Oficial
  • Polling por processing/sending, nunca por running
  • broadcast.completed e broadcast.failed assinados