Skip to content

Broadcast API

MethodEndpointDescription
GET/broadcast/List broadcasts
POST/broadcast/Create broadcast
GET/broadcast/{id}/Get broadcast details
PUT/broadcast/{id}/Update broadcast
DELETE/broadcast/{id}/Delete broadcast
GET/broadcast/messages/List broadcast messages
GET/broadcast/dashboard/Campaign analytics dashboard
GET/broadcast/url-tracking/URL click tracking
Terminal window
curl -X POST http://localhost:8000/broadcast/ \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Sale Campaign",
"platform": "WHATSAPP",
"template_name": "summer_sale",
"recipients": ["contact-uuid-1", "contact-uuid-2"],
"scheduled_at": "2024-07-01T10:00:00Z"
}'
DRAFT → SCHEDULED → QUEUED → SENDING → SENT
→ PARTIALLY_SENT
→ FAILED
→ CANCELLED
Internal StatusUI Display
DRAFTDraft
SCHEDULEDScheduled
QUEUED, SENDINGOngoing
SENT, PARTIALLY_SENTCompleted
FAILEDFailed
CANCELLEDCancelled
PlatformTemplate RequiredBatching
WHATSAPPYesYes
TELEGRAMNo (free text)Yes
SMSNo (free text)Yes
RCSNo (free text)Yes

Broadcasts are sent in batches to respect rate limits:

SettingDefaultDescription
BROADCAST_BATCH_SIZE50Contacts per batch
BROADCAST_BATCH_DELAY5 secondsDelay between batches
BROADCAST_MAX_RETRIES3Retries per failed message

URLs in broadcast messages can be automatically wrapped for click tracking:

Terminal window
# Get tracking analytics
curl http://localhost:8000/broadcast/url-tracking/ \
-H "Authorization: Bearer <token>"

Tracked URLs redirect through https://your-domain.com/r/{code}/ and record click events.

Terminal window
# Get campaign analytics
curl http://localhost:8000/broadcast/dashboard/ \
-H "Authorization: Bearer <token>"

Returns delivery stats: sent, delivered, read, failed counts per broadcast.

Each recipient in a broadcast gets an individual BroadcastMessage record tracking their delivery status:

MethodEndpointDescription
GET/broadcast/messages/List individual message deliveries
GET/broadcast/messages/{id}/Get message delivery details

Each broadcast deducts credits from the tenant’s wallet based on:

  • Number of recipients
  • Per-message pricing from TenantWAApp config
  • Successful delivery count (credits refunded for failures)