Skip to Content
API ReferenceBroadcasts

Broadcasts

DM Broadcasts let you send a message to a segmented list of contacts across supported social platforms. Broadcasts are queued and delivered asynchronously in batches.

Agency plan required. Broadcasts use the dm_broadcasts feature flag, which is only available on Agency plan. Requests on lower-tier plans return 403 with error code PLAN_UPGRADE_REQUIRED and message “DM Broadcasts require an Agency plan”.

Base URL

https://api.voxburst.io/v1/broadcasts

Broadcast Statuses

StatusDescription
DRAFTCreated but not yet sent or scheduled
SCHEDULEDScheduled to send at a future time
SENDINGCurrently being delivered to contacts
SENTAll deliveries enqueued
PAUSEDPaused mid-delivery
FAILEDDelivery failed unrecoverably

Broadcast Object

{ "id": "bc_abc123", "workspaceId": "ws_01hwxyz", "name": "May Newsletter", "messageTemplate": "Hi there! Check out our latest update.", "platforms": ["TWITTER"], "segmentRules": { "tags": ["newsletter"], "platforms": ["TWITTER"], "hasInteraction": true }, "status": "DRAFT", "totalContacts": 0, "scheduledFor": null, "sentAt": null, "createdAt": "2026-05-01T10:00:00Z", "updatedAt": "2026-05-01T10:00:00Z" }

Broadcast Fields

FieldTypeDescription
idstringBroadcast ID
workspaceIdstringWorkspace this broadcast belongs to
namestringHuman-readable name
messageTemplatestringMessage text (max 1,000 chars)
platformsstring[]Platform constants to send on
segmentRulesobjectAudience filtering rules — see Segment Rules
statusstringCurrent broadcast status
totalContactsintegerTotal contacts targeted (populated at send time)
scheduledForstring | nullISO 8601 scheduled send time
sentAtstring | nullISO 8601 timestamp when sending started
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 last-updated timestamp

Segment Rules

The segmentRules object filters which contacts receive the broadcast. All conditions are ANDed together.

FieldTypeDescription
tagsstring[]Only include contacts with ALL of these tags
platformsstring[]Only include contacts on these platforms
hasInteractionbooleanIf true, only contacts with a recorded interaction (lastSeenAt is not null)

Only contacts with lastSeenAt set (i.e., contacts who have previously interacted) are eligible for broadcast delivery, regardless of segmentRules. This is enforced server-side as an opt-in safeguard.


List Broadcasts

GET /v1/broadcasts

List broadcasts with optional status filter. Uses page/limit pagination.

Query Parameters

ParameterTypeDescription
statusstringFilter by status: DRAFT, SCHEDULED, SENDING, SENT, PAUSED, FAILED
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
curl "https://api.voxburst.io/v1/broadcasts?status=DRAFT&limit=20" \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "broadcasts": [ { ... } ], "pagination": { "page": 1, "limit": 20, "total": 5, "totalPages": 1 } }

Get Broadcast

GET /v1/broadcasts/:id

Retrieve a single broadcast with delivery statistics.

curl https://api.voxburst.io/v1/broadcasts/bc_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "broadcast": { ... }, "deliveryStats": { "PENDING": 12, "SENT": 88, "FAILED": 2 } }

Create Broadcast

POST /v1/broadcasts

Create a new broadcast in DRAFT status.

Request Body

FieldTypeRequiredDescription
namestringYesHuman-readable name (1–255 chars)
messageTemplatestringYesMessage text (1–1,000 chars)
platformsstring[]YesAt least one platform constant
segmentRulesobjectNoAudience filtering — see Segment Rules
scheduledForstringNoISO 8601 datetime to automatically send
curl -X POST https://api.voxburst.io/v1/broadcasts \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "May Newsletter", "messageTemplate": "Hi! Check out our latest update.", "platforms": ["TWITTER"], "segmentRules": { "tags": ["newsletter"] } }'

Response (201)

{ "broadcast": { ... } }

Update Broadcast

PATCH /v1/broadcasts/:id

Update a broadcast. Only DRAFT or SCHEDULED broadcasts can be updated.

Request Body

All fields are optional.

FieldTypeDescription
namestringNew name
messageTemplatestringNew message template
platformsstring[]Replacement platform list
segmentRulesobjectReplacement segment rules
scheduledForstring | nullNew scheduled time, or null to remove
curl -X PATCH https://api.voxburst.io/v1/broadcasts/bc_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "Updated Newsletter" }'

Response

{ "broadcast": { ... } }

Send Broadcast

POST /v1/broadcasts/:id/send

Enqueue a DRAFT or SCHEDULED broadcast for immediate delivery. Contacts matching the segment rules are resolved and queued for DM delivery.

curl -X POST https://api.voxburst.io/v1/broadcasts/bc_abc123/send \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "broadcast": { "status": "SENDING", ... }, "enqueuedContacts": 102, "batches": 3 }

enqueuedContacts is the number of contacts that were matched by segment rules and enqueued. batches is the number of SQS message batches created.


List Deliveries

GET /v1/broadcasts/:id/deliveries

List individual delivery records for a broadcast.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
limitintegerResults per page (default: 50, max: 100)
curl "https://api.voxburst.io/v1/broadcasts/bc_abc123/deliveries?page=1&limit=50" \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "deliveries": [ { "id": "del_xyz789", "broadcastId": "bc_abc123", "contactId": "contact_abc123", "platform": "TWITTER", "status": "SENT", "contact": { "id": "contact_abc123", "displayName": "Alice Example", "username": "alice", "platform": "TWITTER" } } ], "pagination": { "page": 1, "limit": 50, "total": 102, "totalPages": 3 } }

Delete Broadcast

DELETE /v1/broadcasts/:id

Delete a broadcast. Only DRAFT status broadcasts can be deleted.

curl -X DELETE https://api.voxburst.io/v1/broadcasts/bc_abc123 \ -H "Authorization: Bearer vb_live_xxxxxxxxxxxxx"

Response

{ "success": true }
Last updated on