Broadcasts
Send one message to several WhatsApp communities now or at a given time, cancel a scheduled broadcast, read the results per community.
Needs the send scope. Reference: Broadcasts.
Pick the targets
GET /v1/communities lists the communities created by Groupilot plus the external ones the connected number administers, with source (groupilot or external), member_count, occurrence_id and scheduled_at. The whatsapp_id of each one is the target to use. The external part is cached for 5 minutes; external_unreachable: true means only Groupilot communities could be listed.
Create a broadcast
POST /v1/broadcasts
Idempotency-Key: <uuid>
{
"community_whatsapp_ids": ["1203630…@g.us", "1203631…@g.us"],
"type": "text",
"text": "New webinar on Sunday at 8 pm, register here: https://…",
"scheduled_at_local": "2026-11-18T12:00"
}community_whatsapp_ids: 1 to 200 ids, each checked againstGET /v1/communities. An unknown id is a400.type:text,image,video,voice,documentorpoll, withtext,media_urlorpoll.media_urlaccepts any URL the WhatsApp provider can fetch. Uploading first through Media is recommended: format and size are checked there, whereas a bad external file only surfaces at send time.- Omit the schedule to send now.
scheduled_atis an ISO date-time with offset;scheduled_at_localis a local time in the account's timezone. Either, not both. It must be in the future. - Groupilot spaces the sends between communities so that they never leave in a burst.
- 8 per day per account. The response is the
Broadcast(201) withstatuspendingorsending. - When the list of communities of the number cannot be fetched at that moment, the call answers
503with codechannel_unavailableand aRetry-Afterheader: wait and retry with a newIdempotency-Keyif you set one, nothing was created.
Follow it
GET /v1/broadcasts/{id} returns status (pending, sending, completed, failed, canceled), community_count, counts (success, failure, uncertain), scheduled_at, sent_at. GET /v1/broadcasts/{id}/recipients lists each community with its status (sent, failed, skipped, pending, sending, requires_review), 50 per page.
uncertain or requires_review means WhatsApp did not confirm: Groupilot never resends those on its own.
Cancel
POST /v1/broadcasts/{id}/cancelOnly before the sending starts. The response is { "status": "canceled", "changed": true }; changed: false if it was already canceled. Once sending has started, the broadcast runs to the end.