Create broadcast
Create a new broadcast campaign. Add contacts after creation, then send.
Authorization
AuthorizationheaderrequiredBearer YOUR_API_KEY. Create a key in the dashboard.
Body
application/json
namestringrequiredName of the broadcast campaign.
channelstringrequiredBroadcast delivery channel. Use 'smart' for per-contact intelligent routing.
One ofsmartsmssms_onewaywhatsapptelegramemailmessageTypestringType of message for broadcast.
One oftextimagevideoaudiodocumenttemplateDefaulttexttextstringText content or caption. Supports template variables: {{name}}, {{1}}, etc.
contentobjectContent for non-text broadcast message types.
8 properties
mediaUrlstringURL of the media file.
mediaIdstringMedia ID if already uploaded.
mimeTypestringMIME type of the media.
filenamestringFilename for documents.
templateIdstringTemplate ID for template messages.
templateVariablesobjectDefault body variables (can be overridden per contact). Key them to match the template body: by position (
1,2, ...) for positional templates, or by name (e.g.customer_name) for named templates. Zavu detects the template's format and sends the correct payload to Meta. Do not mix positional and named keys.1 properties
{key}string
templateButtonVariablesobjectDefault button variables for dynamic URL/OTP buttons. Keys are the button index (0, 1, 2). Per-contact values override these.
1 properties
{key}string
templateHeaderVariablesobjectDefault value for a text-header variable, keyed by
1(can be overridden per contact). If omitted, Zavu resolves the header fromtemplateVariablesby the header placeholder's name.1 properties
{key}string
senderIdstringSender profile ID. Uses default sender if omitted.
emailSubjectstringEmail subject line. Required for email broadcasts.
emailHtmlBodystringHTML body for email broadcasts.
scheduledAtstring<date-time>Schedule the broadcast for future delivery.
metadataobject1 properties
{key}string
idempotencyKeystringIdempotency key to prevent duplicate broadcasts.
Responses
201Broadcast created.
broadcastobjectrequired26 properties
idstringrequirednamestringrequiredstatusstringrequiredCurrent status of the broadcast.
pending_review: in the automated content review.pending_admin_review: the automated review passed and it waits for a person, which is where every channel but a WhatsApp broadcast on an approved template goes.rejected: the review refused it; edit it and retry the review, or escalate.scheduledandsendingfollow approval.One ofdraftpending_reviewpending_admin_reviewapprovedrejectedescalatedrejected_finalscheduledsendingpausedcompletedcancelledfailedchannelstringrequiredBroadcast delivery channel. Use 'smart' for per-contact intelligent routing.
One ofsmartsmssms_onewaywhatsapptelegramemailmessageTypestringrequiredType of message for broadcast.
One oftextimagevideoaudiodocumenttemplatetextstringcontentobjectContent for non-text broadcast message types.
8 properties
mediaUrlstringURL of the media file.
mediaIdstringMedia ID if already uploaded.
mimeTypestringMIME type of the media.
filenamestringFilename for documents.
templateIdstringTemplate ID for template messages.
templateVariablesobjectDefault body variables (can be overridden per contact). Key them to match the template body: by position (
1,2, ...) for positional templates, or by name (e.g.customer_name) for named templates. Zavu detects the template's format and sends the correct payload to Meta. Do not mix positional and named keys.1 properties
{key}string
templateButtonVariablesobjectDefault button variables for dynamic URL/OTP buttons. Keys are the button index (0, 1, 2). Per-contact values override these.
1 properties
{key}string
templateHeaderVariablesobjectDefault value for a text-header variable, keyed by
1(can be overridden per contact). If omitted, Zavu resolves the header fromtemplateVariablesby the header placeholder's name.1 properties
{key}string
senderIdstringemailSubjectstringtotalContactsintegerrequiredTotal number of contacts in the broadcast.
pendingCountintegersendingCountintegersentCountintegerRecipients whose message the provider accepted, without a confirmed delivery yet. Channels that never report delivery keep their recipients here.
deliveredCountintegerRecipients with confirmed delivery to the device.
failedCountintegerestimatedCostnumberEstimated total cost in USD.
reservedAmountnumberAmount reserved from balance in USD.
actualCostnumberActual cost so far in USD.
scheduledAtstring<date-time>startedAtstring<date-time>completedAtstring<date-time>metadataobject1 properties
{key}string
createdAtstring<date-time>requiredupdatedAtstring<date-time>reviewResultobjectAI content review result.
5 properties
scorenumberContent safety score from 0.0 to 1.0, where 1.0 is completely safe.
categoriesstring[]Policy categories violated, if any.
reasoningstringExplanation of the review decision.
reviewedAtstring<date-time>flaggedContentstring[]Problematic text fragments, if any.
reviewAttemptsintegerNumber of review attempts (max 3).
400Invalid request.
codestringrequiredmessagestringrequireddetailsobject
401Unauthorized.
codestringrequiredmessagestringrequireddetailsobject
404The `senderId` or `content.templateId` names no sender or template in this project (`not_found`).
codestringrequiredmessagestringrequireddetailsobject
409Idempotency conflict (broadcast already exists).
broadcastobjectrequired26 properties
idstringrequirednamestringrequiredstatusstringrequiredCurrent status of the broadcast.
pending_review: in the automated content review.pending_admin_review: the automated review passed and it waits for a person, which is where every channel but a WhatsApp broadcast on an approved template goes.rejected: the review refused it; edit it and retry the review, or escalate.scheduledandsendingfollow approval.One ofdraftpending_reviewpending_admin_reviewapprovedrejectedescalatedrejected_finalscheduledsendingpausedcompletedcancelledfailedchannelstringrequiredBroadcast delivery channel. Use 'smart' for per-contact intelligent routing.
One ofsmartsmssms_onewaywhatsapptelegramemailmessageTypestringrequiredType of message for broadcast.
One oftextimagevideoaudiodocumenttemplatetextstringcontentobjectContent for non-text broadcast message types.
8 properties
mediaUrlstringURL of the media file.
mediaIdstringMedia ID if already uploaded.
mimeTypestringMIME type of the media.
filenamestringFilename for documents.
templateIdstringTemplate ID for template messages.
templateVariablesobjectDefault body variables (can be overridden per contact). Key them to match the template body: by position (
1,2, ...) for positional templates, or by name (e.g.customer_name) for named templates. Zavu detects the template's format and sends the correct payload to Meta. Do not mix positional and named keys.1 properties
{key}string
templateButtonVariablesobjectDefault button variables for dynamic URL/OTP buttons. Keys are the button index (0, 1, 2). Per-contact values override these.
1 properties
{key}string
templateHeaderVariablesobjectDefault value for a text-header variable, keyed by
1(can be overridden per contact). If omitted, Zavu resolves the header fromtemplateVariablesby the header placeholder's name.1 properties
{key}string
senderIdstringemailSubjectstringtotalContactsintegerrequiredTotal number of contacts in the broadcast.
pendingCountintegersendingCountintegersentCountintegerRecipients whose message the provider accepted, without a confirmed delivery yet. Channels that never report delivery keep their recipients here.
deliveredCountintegerRecipients with confirmed delivery to the device.
failedCountintegerestimatedCostnumberEstimated total cost in USD.
reservedAmountnumberAmount reserved from balance in USD.
actualCostnumberActual cost so far in USD.
scheduledAtstring<date-time>startedAtstring<date-time>completedAtstring<date-time>metadataobject1 properties
{key}string
createdAtstring<date-time>requiredupdatedAtstring<date-time>reviewResultobjectAI content review result.
5 properties
scorenumberContent safety score from 0.0 to 1.0, where 1.0 is completely safe.
categoriesstring[]Policy categories violated, if any.
reasoningstringExplanation of the review decision.
reviewedAtstring<date-time>flaggedContentstring[]Problematic text fragments, if any.
reviewAttemptsintegerNumber of review attempts (max 3).