Broadcasts tools
Create campaigns, follow delivery and pause, resume, cancel or retry them.
waca_broadcasts_list#List broadcasts
Campaigns in this workspace, newest first, with status and delivery counts. Filter by status. Use waca_broadcasts_stats for the failure breakdown of one campaign.
Parameters (4)›
status"queued" | "scheduled" | "running" | "paused" | "completed" | "failed" | "cancelled"
No extra notes.pageinteger
1-based page number.Default1page_sizeinteger
Rows per page, 1-100. Default 20.Default20response_format"concise" | "detailed"
concisereturns the fields a person reads;detailedadds ids and raw fields for follow-up calls.Default"concise"
waca_broadcasts_get#Get one broadcast
One campaign with its template or text, schedule, counts, error and retry history.
Parameters (1)›
campaign_idrequiredstring
No extra notes.
waca_broadcasts_stats#Why did a broadcast fail? Counts and failure breakdown
Delivery counts of one campaign plus every failure reason grouped by Meta error code, each with a plain-language label, a class (transient / blocked / permanent / unknown) and whether a retry can work. retry_suggestion lists the codes worth passing to waca_broadcasts_retry.
Parameters (1)›
campaign_idrequiredstring
No extra notes.
waca_broadcasts_recipients#List a broadcast's recipients
Per-recipient rows of one campaign, filterable by status or error code (use unknown for failures without a code). Each row carries the phone, status, error and timestamps.
Parameters (6)›
campaign_idrequiredstring
No extra notes.status"pending" | "sent" | "delivered" | "read" | "failed" | "skipped"
No extra notes.error_codestring
No extra notes.querystring
Phone substring.pageinteger
1-based page number.Default1page_sizeinteger
Rows per page, 1-100. Default 20.Default20
waca_broadcasts_create#Create a broadcast (template, text or media) to many recipients
Creates and queues a campaign. Recipients come either from recipients (explicit phones with per-recipient variables) or from tag_ids (every opted-in contact carrying any of those tags, at most 500 per call). For template sends, check placeholders with waca_templates_get; supply variables (same for everyone) or variables_from_contact (per-contact fields such as first_name). Text and media broadcasts only reach people who messaged in the last 24 hours. Pass scheduled_at (ISO) to send later. This reaches real phones and is billed.
Parameters (12)›
namerequiredstring
Campaign name shown in the dashboard.message_kind"template" | "text" | "media"
No extra notes.Default"template"template_namestring
No extra notes.languagestring
No extra notes.text_bodystring
For message_kind text.media_asset_idstring
For message_kind media: an asset from waca_media_list.recipientsobject[]
Each item: country_code (string), phone (string), variables (string[]).tag_idsstring[]
Send to opted-in contacts with any of these tags.variablesstring[]
Body values used for every recipient.variables_from_contactstring[]
Per-contact body values, in placeholder order: first_name, last_name, phone or a custom attribute key. Tag sends only.scheduled_atstring
ISO 8601 with offset; omit to send now.rate_per_secondinteger
No extra notes.
waca_broadcasts_pause#Pause a broadcast
Pauses a running, queued or scheduled campaign. Resume with waca_broadcasts_resume.
Parameters (1)›
campaign_idrequiredstring
No extra notes.
waca_broadcasts_resume#Resume a paused broadcast
Continues a paused campaign from where it stopped.
Parameters (1)›
campaign_idrequiredstring
No extra notes.
waca_broadcasts_cancel#Cancel a broadcast
Stops a campaign for good; pending recipients are closed as cancelled. Cannot be undone. Owner/admin only.
Parameters (1)›
campaign_idrequiredstring
No extra notes.
waca_broadcasts_retry#Retry failed recipients by error code
Re-sends a finished campaign to recipients that failed with the given Meta error codes (use unknown for failures without a code). Get the codes and retry_suggestion from waca_broadcasts_stats; permanent failures such as 131026 (number not on WhatsApp) never succeed. Optionally schedule the retry for later, which is what transient limits need.
Parameters (3)›
campaign_idrequiredstring
No extra notes.error_codesrequiredstring[]
No extra notes.scheduled_atstring
No extra notes.