Skip to main content

Broadcasts

Broadcasts (campaigns) send one message to a segment, a retargeted audience or a class. channel picks how it goes out: WhatsApp (an approved template), Telegram, SMS or email.

  • scheduleDateTime is in UTC (ISO 8601).
  • A broadcast can be changed or deleted until it starts. Create it as DRAFT to finish it in the app.
  • Test sends the saved broadcast to one phone number or email address first. Stop ends a sending broadcast; resume restarts an email campaign the system paused.
  • Logs show each recipient's delivery status.
API regionapi.whautomate.com

List broadcasts​

GET /v1/broadcasts

Lists broadcasts, newest first.

Headers
x-api-keystringrequired
Your Whautomate API key.
Query parameters
channelstring
One of whatsapp, telegram, sms, email.
statusstring
Status to filter by.
typestring
Audience type.
limitinteger
Results per page (default 10, max 100).
endDatestring
End of the date range (YYYY-MM-DD, account timezone).
locationIdstring
Location (workspace) id. Get ids from GET /v1/locations.
pageinteger
Page number, from 1 (default 1).
startDatestring
Start of the date range (YYYY-MM-DD, account timezone).
searchTextstring
Text to search for.
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X GET "https://api.whautomate.com/v1/broadcasts?locationId=Le6dWjQF9K&channel=whatsapp&limit=2" \
-H "x-api-key: YOUR_API_KEY"
Response 200
[
{
"id": "s68KOQibdB",
"name": "Christmas wellness vouchers",
"channel": "whatsapp",
"status": "DRAFT",
"type": "contact",
"segments": [
{
"id": "utCANi8Ahu",
"name": "All WhatsApp contacts"
}
],
"scheduleDateTime": "2026-11-08T11:43:27.226Z",
"template": {
"name": "birthday_wishes",
"language": "en"
},
"headerTextParameters": [],
"bodyTextParameters": [
"there"
],
"processedStats": {},
"deliveryStats": {},
"location": {
"id": "Le6dWjQF9K",
"title": "Serene Wellness Studio"
},
"createdAt": "2026-10-29T11:43:27.227Z",
"updatedAt": "2026-10-29T11:43:27.227Z"
},
{
"id": "VQVEUVtGZ5",
"name": "New Pilates timetable",
"channel": "whatsapp",
"status": "COMPLETED",
"type": "client",
"segments": [
{
"id": "AJN0CrjpPv",
"name": "VIP clients"
}
],
"scheduleDateTime": "2026-10-26T11:43:27.193Z",
"completedAt": "2026-10-26T12:43:27.207Z",
"template": {
"name": "birthday_wishes",
"language": "en"
},
"headerTextParameters": [],
"bodyTextParameters": [
"there"
],
"processedStats": {
"totalCount": 12,
"successCount": 11
},
"deliveryStats": {
"sentCount": 11,
"deliveredCount": 11,
"failedCount": 1,
"readCount": 9,
"repliedCount": 3
},
"location": {
"id": "Le6dWjQF9K",
"title": "Serene Wellness Studio"
},
"createdAt": "2026-10-29T11:43:27.195Z",
"updatedAt": "2026-10-29T11:43:29.001Z"
}
]

Create a broadcast​

POST /v1/broadcasts

Creates and schedules a broadcast (or saves it as a draft).

Headers
x-api-keystringrequired
Your Whautomate API key.
Body
namestringrequired
channelstring (enum)
whatsapp (default), email (email campaigns, CRM Suite), telegram (Telegram campaigns from the location's bot) or sms (SMS campaigns through the location's SMS provider, text only). Cannot change after create. One of: whatsapp, email, telegram, sms.
statusstring (enum)
DRAFT saves for later (only name, location and type are needed, and it never sends); PENDING schedules it (default on create): it must be complete and, for email, email sending must be set up. One of: DRAFT, PENDING.
typestring (enum)required
Audience. WhatsApp and Telegram: client, contact, class, retarget. Email: client, class, retarget (no contact segments). SMS: client, contact (SMS contact segments), class, retarget. One of: client, contact, class, retarget.
segmentsobject[]

client and contact broadcasts: segments of the location, of the broadcast type.

targetClassobject

class broadcasts: a class at the location.

targetClassStatusstring (enum)
class broadcasts: participants with this status (ALL = every participant, the default). One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject

retarget broadcasts: an earlier campaign of the location on the same channel.

retargetEngagementTypestring (enum)
retarget broadcasts. WhatsApp: sent, delivered, read, replied, not-replied, failed. Email: sent, delivered, opened, clicked, bounced, failed. Telegram: sent, replied, not-replied, failed. SMS: sent, delivered, replied, not-replied, failed. One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
WhatsApp, Telegram and SMS retarget on replied: only replies matching this text or /regex/.
scheduleDateTimestring
ISO 8601 date and time; left out (or in the past) it sends as soon as it is scheduled.
locationobjectrequired
templateobject

WhatsApp only: a template of the location (required to schedule).

headerMediaUrlstring
WhatsApp only: http(s) link to the header image, video or document (required to schedule when the template has a media header).
headerTextParametersstring[]
WhatsApp only.
bodyTextParametersstring[]
WhatsApp only.
buttonUrlParametersstring[]
WhatsApp only.
locationParametersobject
WhatsApp only, location header templates: { name, address, latitude, longitude }.
flowParametersobject
WhatsApp only, flow templates: { flowToken, flowData }.
cardParametersobject[]

WhatsApp only, carousel templates: one card per template card.

emailSubjectstring
Email only (required to schedule).
emailPreheaderTextstring
Email only: inbox preview text.
messageTextstring
Telegram and SMS: the message text, at most 4096 characters (Telegram) or 1600 (SMS); merge tags are filled per recipient. Required to schedule an SMS campaign; a Telegram one needs messageText or headerMediaUrl.
messageButtonsobject[]

Telegram only: up to 3 buttons, one per row. web_url { title, url }, postback { title, payload } (the reply arrives as a message), web_app { title, miniApp, miniAppLang, miniAppScope } opens the booking site inside Telegram (needs an https booking site; miniAppLang and miniAppScope optional).

emailBodystring
Email only: the HTML that is sent (required to schedule). Merge tags such as {{firstName}} are filled per recipient. Sent alone it opens in the simple editor in the app.
emailBodyJsonobject
Email only: the drag and drop editor design ({ blocks: [...] }) the emailBody was rendered from, so the app reopens it in that editor. Needs emailBody in the same request.
emailBodyTextstring
Email only: plain text version.
emailSenderIdstring
Email only: an email sender of the account (account-wide, or of this location). Left unset, the location default (else the account default) sends.
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X POST "https://api.whautomate.com/v1/broadcasts" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "November massage offer",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "gn7T7DreYQ"
}
],
"location": {
"id": "Le6dWjQF9K"
},
"template": {
"name": "monthly_offer",
"language": "en"
},
"bodyTextParameters": [
"there"
],
"scheduleDateTime": "2026-11-12T02:00:00.000Z"
}'
Response 200
{
"id": "H9rojuDPFi",
"name": "November massage offer",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "gn7T7DreYQ",
"name": "Massage lovers"
}
],
"scheduleDateTime": "2026-11-12T02:00:00.000Z",
"template": {
"name": "monthly_offer",
"language": "en"
},
"bodyTextParameters": [
"there"
],
"processedStats": {},
"deliveryStats": {},
"location": {
"id": "Le6dWjQF9K",
"title": "Serene Wellness Studio"
},
"createdAt": "2026-10-29T12:40:21.369Z",
"updatedAt": "2026-10-29T12:40:21.369Z"
}

Get a broadcast​

GET /v1/broadcasts/{broadcastId}

Gets one broadcast with its stats.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X GET "https://api.whautomate.com/v1/broadcasts/H9rojuDPFi" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"id": "H9rojuDPFi",
"name": "November massage offer",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "gn7T7DreYQ",
"name": "Massage lovers"
}
],
"scheduleDateTime": "2026-11-12T02:00:00.000Z",
"template": {
"name": "monthly_offer",
"language": "en"
},
"bodyTextParameters": [
"there"
],
"processedStats": {},
"deliveryStats": {},
"location": {
"id": "Le6dWjQF9K",
"title": "Serene Wellness Studio"
},
"createdAt": "2026-10-29T12:40:21.369Z",
"updatedAt": "2026-10-29T12:40:21.369Z"
}

Update a broadcast​

PUT /v1/broadcasts/{broadcastId}

Updates a broadcast that has not started. Partial: a field left out keeps its stored value; null, an empty string or [] clears the send parameters (header media, header / body / button parameters, location and flow parameters). name, type, template, location, scheduleDateTime and the audience the type needs cannot be cleared (400). Template, segments, retarget broadcast and class are checked at the (new or stored) location (404). A broadcast that has started or whose schedule has passed answers 401.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Body
namestring
Cannot be cleared.
channelstring (enum)
Set on create; cannot change (400). One of: whatsapp, email, telegram, sms.
statusstring (enum)
DRAFT saves for later (only name, location and type are needed, and it never sends); PENDING schedules it (default on create): it must be complete and, for email, email sending must be set up. One of: DRAFT, PENDING.
typestring (enum)
Audience. WhatsApp, Telegram and SMS: client, contact, class, retarget (SMS contact = SMS contact segments). Email: client, class, retarget (no contact segments). Cannot be cleared. One of: client, contact, class, retarget.
segmentsobject[]
List of { id } segments of the location, of the broadcast type (client or contact). Left out keeps it; null or an empty value clears it.
targetClassobject
{ id } of a class at the location (class broadcasts). Left out keeps it; null or an empty value clears it.
targetClassStatusstring (enum)
class broadcasts: participants with this status (ALL = every participant, the default). One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
{ id } of an earlier campaign of the location on the same channel (retarget broadcasts). Left out keeps it; null or an empty value clears it.
retargetEngagementTypestring (enum)
retarget broadcasts. WhatsApp: sent, delivered, read, replied, not-replied, failed. Email: sent, delivered, opened, clicked, bounced, failed. Telegram: sent, replied, not-replied, failed. SMS: sent, delivered, replied, not-replied, failed. One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
WhatsApp, Telegram and SMS retarget on replied: only replies matching this text or /regex/. Left out keeps it; null or an empty value clears it.
scheduleDateTimestring
ISO 8601 date and time. Cannot be cleared unless the campaign is a DRAFT.
locationobject
{ id } of a location of the account. Cannot be cleared. A new location checks the stored template, segments, class, retarget source and email sender again.
templateobject

WhatsApp only: a template of the location (required to schedule). Cannot be cleared.

headerMediaUrlstring
WhatsApp only: http(s) link to the header image, video or document (required to schedule when the template has a media header). Left out keeps it; null or an empty value clears it.
headerTextParametersstring[]
WhatsApp only: list of header parameters. Left out keeps it; null or an empty value clears it.
bodyTextParametersstring[]
WhatsApp only: list of body parameters. Left out keeps it; null or an empty value clears it.
buttonUrlParametersstring[]
WhatsApp only: list of button URL parameters. Left out keeps it; null or an empty value clears it.
locationParametersobject
WhatsApp only, location header templates: { name, address, latitude, longitude }. Left out keeps it; null or an empty value clears it.
flowParametersobject
WhatsApp only, flow templates: { flowToken, flowData }. Left out keeps it; null or an empty value clears it.
cardParametersobject[]
WhatsApp only, carousel templates: one card per template card (see BroadcastCard); a card without media keeps its stored file. Left out keeps it; null or an empty value clears it.
emailSubjectstring
Email only (required to schedule). Left out keeps it; null or an empty value clears it.
emailPreheaderTextstring
Email only: inbox preview text. Left out keeps it; null or an empty value clears it.
messageTextstring
Telegram and SMS: the message text. Left out keeps it; null or an empty value clears it.
messageButtonsobject[]
Telegram only: up to 3 buttons (web_url, postback, web_app); replace the stored ones. Left out keeps them; null or [] removes them.
emailBodystring
Email only: the HTML that is sent (required to schedule). Merge tags such as {{firstName}} are filled per recipient. Sent alone it opens in the simple editor in the app. Left out keeps it; null or an empty value clears it.
emailBodyJsonobject
Email only: the drag and drop editor design ({ blocks: [...] }) the emailBody was rendered from, so the app reopens it in that editor. Needs emailBody in the same request. Left out keeps it; null or an empty value clears it.
emailBodyTextstring
Email only: plain text version. Left out keeps it; null or an empty value clears it.
emailSenderIdstring
Email only: an email sender of the account (account-wide, or of this location). Left unset, the location default (else the account default) sends. Left out keeps it; null or an empty value clears it.
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X PUT "https://api.whautomate.com/v1/broadcasts/H9rojuDPFi" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "November massage offer (members)",
"scheduleDateTime": "2026-11-13T02:00:00.000Z"
}'
Response 200
{
"id": "H9rojuDPFi",
"name": "November massage offer (members)",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "gn7T7DreYQ",
"name": "Massage lovers"
}
],
"scheduleDateTime": "2026-11-13T02:00:00.000Z",
"template": {
"name": "monthly_offer",
"language": "en"
},
"bodyTextParameters": [
"there"
],
"processedStats": {},
"deliveryStats": {},
"location": {
"id": "Le6dWjQF9K",
"title": "Serene Wellness Studio"
},
"createdAt": "2026-10-29T12:40:21.369Z",
"updatedAt": "2026-10-29T12:40:21.512Z"
}

Delete a broadcast​

DEL /v1/broadcasts/{broadcastId}

Deletes a broadcast that has not started.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Response 200
successboolean
Request
curl -X DELETE "https://api.whautomate.com/v1/broadcasts/H9rojuDPFi" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"success": true
}

Send a test​

POST /v1/broadcasts/{broadcastId}/test
Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Body
phonestring
emailstring
contactIdstring
Response 200
sentboolean
idstring
namestring
channelstring
tostring
Request
curl -X POST "https://api.whautomate.com/v1/broadcasts/H9rojuDPFi/test" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+6596628413"
}'
Response 200
{
"sent": true,
"id": "H9rojuDPFi",
"name": "November massage offer (members)",
"channel": "whatsapp",
"to": "+6596628413"
}

Stop a broadcast​

POST /v1/broadcasts/{broadcastId}/stop
Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X POST "https://api.whautomate.com/v1/broadcasts/{broadcastId}/stop" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"id": "string",
"name": "string",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "string",
"name": "string"
}
],
"targetClass": {
"id": "string"
},
"targetClassStatus": "ALL",
"retargetBroadcast": {
"id": "string",
"name": "string"
},
"retargetEngagementType": "sent",
"retargetReplyFilter": "string",
"scheduleDateTime": "string",
"startedAt": "string",
"completedAt": "string",
"pausedAt": "string",
"pauseReason": "string",
"error": "string",
"template": {
"name": "string",
"language": "string"
},
"headerMediaUrl": "string",
"headerTextParameters": [
"string"
],
"bodyTextParameters": [
"string"
],
"buttonUrlParameters": [
"string"
],
"locationParameters": {},
"flowParameters": {},
"cardParameters": [
{
"parameters": [
"string"
],
"buttonUrlParameters": [
"string"
],
"media": {
"base64": "string",
"type": "image/png",
"name": "string",
"url": "string"
}
}
],
"emailSubject": "string",
"emailPreheaderText": "string",
"messageText": "string",
"messageButtons": [
{
"type": "web_url",
"title": "string",
"url": "string",
"payload": "string",
"miniApp": "appointments",
"miniAppLang": "en",
"miniAppScope": "location"
}
],
"mediaUrl": "string",
"emailEditorType": "string",
"emailSender": {
"id": "string",
"email": "string",
"fromName": "string"
},
"emailFromAddress": "string",
"emailSenderName": "string",
"emailBody": "string",
"emailBodyJson": {},
"emailBodyText": "string",
"pending": 0,
"requeued": 0,
"location": {
"id": "string",
"title": "string"
},
"processedStats": {
"totalCount": 0,
"successCount": 0,
"failureCount": 0,
"skippedAtCapCount": 0
},
"deliveryStats": {
"sentCount": 0,
"deliveredCount": 0,
"readCount": 0,
"failedCount": 0,
"repliedCount": 0,
"openedCount": 0,
"clickedCount": 0,
"bouncedCount": 0,
"complainedCount": 0,
"unsubscribedCount": 0
},
"createdAt": "string",
"updatedAt": "string"
}
Response 400
{
"error": "The broadcast cannot be stopped because its current status is 'DRAFT'.\n Only broadcasts with the status 'RUNNING', 'SENDING', or 'QUEUED' can be stopped."
}

Resume an email broadcast​

POST /v1/broadcasts/{broadcastId}/resume
Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Response 200
idstring
namestring
channelstring (enum)
One of: whatsapp, email, telegram, sms.
statusstring (enum)
One of: DRAFT, PENDING, RUNNING, MESSAGES QUEUED, SENDING, STOPPING, PAUSED, COMPLETED, FAILED.
typestring (enum)
One of: client, contact, class, retarget.
segmentsobject[]
targetClassobject
targetClassStatusstring (enum)
One of: ALL, WAITLISTED, BOOKED, VISITED, RESCHEDULED, NO_SHOW, CANCELLED.
retargetBroadcastobject
retargetEngagementTypestring (enum)
One of: sent, delivered, read, replied, not-replied, opened, clicked, bounced, failed.
retargetReplyFilterstring
scheduleDateTimestring
startedAtstring
completedAtstring
pausedAtstring
Email campaigns the system paused.
pauseReasonstring
errorstring
Why a campaign failed, or why a completed one sent nothing.
templateobject
headerMediaUrlstring
headerTextParametersstring[]
bodyTextParametersstring[]
buttonUrlParametersstring[]
locationParametersobject
flowParametersobject
cardParametersobject[]
emailSubjectstring
emailPreheaderTextstring
messageTextstring
Telegram and SMS: the message text.
messageButtonsobject[]

Telegram only: up to 3 buttons.

mediaUrlstring
Telegram only: the stored file.
emailEditorTypestring
Which app editor opens the body: dragdrop or simple.
emailSenderobject
emailFromAddressstring
The address it sent from (set when it starts).
emailSenderNamestring
emailBodystring
Single campaign responses only (left out of lists).
emailBodyJsonobject
Single campaign responses only.
emailBodyTextstring
Single campaign responses only.
pendingnumber
Resume only: recipients still to send.
requeuednumber
Resume only: recipients queued again.
locationobject
processedStatsobject
deliveryStatsobject

WhatsApp: sent, delivered, read, replied, failed. Email: sent, delivered, opened, clicked, bounced, complained, unsubscribed, failed.

createdAtstring
updatedAtstring
Request
curl -X POST "https://api.whautomate.com/v1/broadcasts/{broadcastId}/resume" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"id": "string",
"name": "string",
"channel": "whatsapp",
"status": "DRAFT",
"type": "client",
"segments": [
{
"id": "string",
"name": "string"
}
],
"targetClass": {
"id": "string"
},
"targetClassStatus": "ALL",
"retargetBroadcast": {
"id": "string",
"name": "string"
},
"retargetEngagementType": "sent",
"retargetReplyFilter": "string",
"scheduleDateTime": "string",
"startedAt": "string",
"completedAt": "string",
"pausedAt": "string",
"pauseReason": "string",
"error": "string",
"template": {
"name": "string",
"language": "string"
},
"headerMediaUrl": "string",
"headerTextParameters": [
"string"
],
"bodyTextParameters": [
"string"
],
"buttonUrlParameters": [
"string"
],
"locationParameters": {},
"flowParameters": {},
"cardParameters": [
{
"parameters": [
"string"
],
"buttonUrlParameters": [
"string"
],
"media": {
"base64": "string",
"type": "image/png",
"name": "string",
"url": "string"
}
}
],
"emailSubject": "string",
"emailPreheaderText": "string",
"messageText": "string",
"messageButtons": [
{
"type": "web_url",
"title": "string",
"url": "string",
"payload": "string",
"miniApp": "appointments",
"miniAppLang": "en",
"miniAppScope": "location"
}
],
"mediaUrl": "string",
"emailEditorType": "string",
"emailSender": {
"id": "string",
"email": "string",
"fromName": "string"
},
"emailFromAddress": "string",
"emailSenderName": "string",
"emailBody": "string",
"emailBodyJson": {},
"emailBodyText": "string",
"pending": 0,
"requeued": 0,
"location": {
"id": "string",
"title": "string"
},
"processedStats": {
"totalCount": 0,
"successCount": 0,
"failureCount": 0,
"skippedAtCapCount": 0
},
"deliveryStats": {
"sentCount": 0,
"deliveredCount": 0,
"readCount": 0,
"failedCount": 0,
"repliedCount": 0,
"openedCount": 0,
"clickedCount": 0,
"bouncedCount": 0,
"complainedCount": 0,
"unsubscribedCount": 0
},
"createdAt": "string",
"updatedAt": "string"
}
Response 400
{
"error": "Only email campaigns can be resumed. Use stop for other channels."
}

Get broadcast logs​

GET /v1/broadcasts/{broadcastId}/logs

Lists the recipients of a broadcast with their delivery status.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
broadcastIdstringrequired
Query parameters
statusstring
Status to filter by.
limitinteger
Results per page (default 10, max 100).
pageinteger
Page number, from 1 (default 1).
Response 200
idstring
broadcastobject
recepientNamestring
countryCodestring
phonestring
clientIdstring
contactIdstring
processingStatusstring
PENDING, COMPLETED, FAILED, CANCELLED (stopped) or SKIPPED_CAP.
deliveryStatusstring
SMS: the provider's latest receipt (queued, sent, delivered, undelivered, failed). Undelivered or failed after a send counts in failedCount.
skipReasonstring
Telegram and SMS: why a recipient was not sent to (e.g. OPTED_OUT, NO_PHONE, BOT_BLOCKED, PROVIDER_ERROR).
statusstring
WhatsApp: message status (sent, delivered, read, failed).
errorstring
WhatsApp: why the message failed.
replystring
WhatsApp: the first reply.
emailstring
Email: the address it went to.
emailStatusstring (enum)
Email: the send result. One of: PENDING, SENT, FAILED, SKIPPED.
emailErrorstring
Email: why it failed or was skipped.
sentAtstring
emailEventsstring (enum)[]
Email: what happened after the send.
createdAtstring
updatedAtstring
Request
curl -X GET "https://api.whautomate.com/v1/broadcasts/VQVEUVtGZ5/logs?limit=2" \
-H "x-api-key: YOUR_API_KEY"
Response 200
[
{
"id": "DC4JZUNy5p",
"broadcast": {
"id": "VQVEUVtGZ5",
"name": "New Pilates timetable"
},
"recepientName": "Kenji Sato",
"countryCode": "+65",
"phone": "91290566",
"clientId": "C06pEvnhxM",
"status": "delivered",
"createdAt": "2026-10-29T11:43:28.992Z",
"updatedAt": "2026-10-29T11:43:28.992Z"
},
{
"id": "6nNcRxoSZi",
"broadcast": {
"id": "VQVEUVtGZ5",
"name": "New Pilates timetable"
},
"recepientName": "Sarah Pereira",
"countryCode": "+65",
"phone": "91282647",
"clientId": "CsoHjs4Wkh",
"status": "read",
"reply": "Thanks!",
"createdAt": "2026-10-29T11:43:28.977Z",
"updatedAt": "2026-10-29T11:43:28.977Z"
}
]