Broadcasts

Launch a template broadcast to a list of recipients.

POST/api/v1/broadcastsscope: broadcasts:send

The broadcast and its recipient rows are persisted immediately and the sends fan out in the background, so the call returns fast — poll GET /api/v1/broadcasts/{id} for progress.

Launch
curl -X POST https://app.vyaparping.com/api/v1/broadcasts \
  -H "Authorization: Bearer vp_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
        "name": "July promo",
        "template_name": "promo_july",
        "template_language": "en_US",
        "recipients": [
          { "to": "+14155550123", "params": ["Jane"] },
          { "to": "+14155550124" }
        ]
      }'
Recipients are capped at 1,000 per request — split larger sends across multiple calls. Invalid phone numbers are dropped and counted as rejected.
202 Accepted
{
  "data": {
    "broadcast_id": "…",
    "status": "sending",
    "total_recipients": 2,
    "accepted": 2,
    "rejected": 0
  }
}

Checking status

GET/api/v1/broadcasts/{id}scope: broadcasts:send

status moves sending → sent; the delivered/read counts keep climbing as WhatsApp delivery receipts arrive. Returns 404 for another account's broadcast.