Gerenciar campanhas
Lista campanhas, consulta o andamento, dispara o envio e cancela.
Depois de criada, uma campanha segue um ciclo curto. O envio não é instantâneo: um processo em segundo plano pega as campanhas em envio (respeitando scheduled_at) e as despeja numa fila de mensagens, que a plataforma esvazia no ritmo permitido pela Meta. Por isso sent_count sobe aos poucos.
Listar campanhas
Devolve uma página de campanhas com os contadores de cada uma.
/api/v1/admin/whatsapp/broadcastsAdminLista as campanhas, as mais novas primeiro
Parâmetros de consulta
statusstringRPADR, P, A ou D. Os nomes por extenso (draft, sending...) não funcionam: devolvem lista vazia.pageintegerpadrão: 1per_pageintegerpadrão: 25Exemplo de requisição (Listar campanhas)
curl "$BASE_URL/api/v1/admin/whatsapp/broadcasts?status=P" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar campanhas)
{
"broadcasts": [
{
"id": "f0fb5296-bc6b-46a8-a772-f5d5a78627fd",
"name": "Black Friday VIP",
"template_name": "black_friday_vip",
"template_language": "pt_BR",
"template_params": {
"1": "30%",
"2": "30/11"
},
"status": "P",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"started_at": "2026-10-11T22:00:00Z",
"total_recipients": 820,
"sent_count": 400,
"delivered_count": 380,
"read_count": 210,
"failed_count": 5,
"skipped_count": 130,
"audience": {
"type": "filters",
"filters": {
"last_purchase_within_days": 90
}
},
"created_at": "2026-10-11T21:50:00Z",
"updated_at": "2026-10-11T22:05:00Z"
}
],
"total": 1,
"page": 1,
"per_page": 25,
"total_pages": 1
}Campos da resposta
broadcastsarrayCampanhas da página.
idstringnamestringtemplate_namestringtemplate_languagestringpt_BR.template_paramsobjectstatusstringRPADR rascunho, P enviando (também usada para enfileirada), A concluída, D cancelada.created_bystringscheduled_atstringstarted_atstringfinished_atstringtotal_recipientsintegersent_countintegerdelivered_countintegerread_countintegerfailed_countintegerskipped_countintegeraudienceobjectcreated_atstringupdated_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros (Listar campanhas)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Consultar uma campanha
Os campos da campanha vêm na raiz, e recipient_counts resume os destinatários por situação.
/api/v1/admin/whatsapp/broadcasts/{id}AdminDevolve a campanha com a contagem de destinatários por situação
Parâmetros de caminho
idstringobrigatórioExemplo de requisição (Consultar uma campanha)
curl "$BASE_URL/api/v1/admin/whatsapp/broadcasts/f0fb5296-bc6b-46a8-a772-f5d5a78627fd" \
-H "Authorization: Bearer $TOKEN"Resposta (Consultar uma campanha)
{
"id": "f0fb5296-bc6b-46a8-a772-f5d5a78627fd",
"name": "Black Friday VIP",
"template_name": "black_friday_vip",
"template_language": "pt_BR",
"template_params": {
"1": "30%",
"2": "30/11"
},
"status": "P",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"started_at": "2026-10-11T22:00:00Z",
"total_recipients": 820,
"sent_count": 400,
"delivered_count": 380,
"read_count": 210,
"failed_count": 5,
"skipped_count": 130,
"audience": {
"type": "filters",
"filters": {
"last_purchase_within_days": 90
}
},
"created_at": "2026-10-11T21:50:00Z",
"updated_at": "2026-10-11T22:05:00Z",
"recipient_counts": {
"pending": 420,
"queued": 0,
"sent": 400,
"delivered": 0,
"read": 0,
"failed": 5,
"skipped": 0
}
}Campos da resposta
(...)objectrecipient_countsobjectDestinatários por situação.
pendingintegerqueuedintegersentintegerdeliveredintegerreadintegerfailedintegerskippedintegerErros (Consultar uma campanha)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 404 | Campanha inexistente. | {"error":"broadcast not found"} |
Enviar a campanha
Passa um rascunho para envio. O processo em segundo plano assume a partir daí. É idempotente: chamar de novo numa campanha que já está enviando devolve sucesso sem fazer nada. Concluída ou cancelada não pode ser enviada. Sem corpo.
/api/v1/admin/whatsapp/broadcasts/{id}/sendAdminColoca a campanha em envio
Parâmetros de caminho
idstringobrigatórioExemplo de requisição (Enviar a campanha)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/broadcasts/f0fb5296-bc6b-46a8-a772-f5d5a78627fd/send" \
-H "Authorization: Bearer $TOKEN"Resposta (Enviar a campanha)
{
"success": true
}Campos da resposta
successbooleantrue.Erros (Enviar a campanha)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Campanha inexistente, ou em estado que não permite envio (concluída ou cancelada). | {"error":"Failed to send broadcast: whatsapp broadcast: cannot send in status \"A\""} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Cancelar a campanha
Vale para rascunho e campanha em envio. O que já foi enviado não volta; os destinatários ainda pendentes deixam de ser processados. Sem corpo.
/api/v1/admin/whatsapp/broadcasts/{id}/cancelAdminCancela uma campanha que ainda não terminou
Parâmetros de caminho
idstringobrigatórioExemplo de requisição (Cancelar a campanha)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/broadcasts/f0fb5296-bc6b-46a8-a772-f5d5a78627fd/cancel" \
-H "Authorization: Bearer $TOKEN"Resposta (Cancelar a campanha)
{
"success": true
}Campos da resposta
successbooleantrue.Erros (Cancelar a campanha)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Campanha inexistente ou já concluída/cancelada. | {"error":"Failed to cancel broadcast: whatsapp broadcast: not cancellable in current state"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |