Groupilot Docs

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 against GET /v1/communities. An unknown id is a 400.
  • type: text, image, video, voice, document or poll, with text, media_url or poll. media_url accepts 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_at is an ISO date-time with offset; scheduled_at_local is 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) with status pending or sending.
  • When the list of communities of the number cannot be fetched at that moment, the call answers 503 with code channel_unavailable and a Retry-After header: wait and retry with a new Idempotency-Key if 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}/cancel

Only 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.

On this page