Send WhatsApp broadcast

View as Markdown
Creates a broadcast, inserts one row per recipient into `whatsapp_messages`, atomically reserves credit (prepaid), and enqueues to AWS SQS for delivery via the META Cloud API. Final status reaches your registered webhook URL. **Required scope:** `send_whatsapp` **Rate limit:** 10 requests / 15 min / client **Status lifecycle:** `pending → enqueued → sent → [delivered | read | failed]` ## Template requirement WhatsApp messages are template-only — `templateName` is required and must reference an **approved** template owned by your client. Templates are managed in the Teekrr dashboard and pass through META's approval flow. If your client does not have its own WhatsApp Business Account (WABA), Teekrr falls back to the platform-default shared WABA automatically. ## Variables ```json { "header": ["string"], "body": ["string"], "button": ["string"], "headerImage": "https://...", "headerVideo": "https://...", "headerDocument": "https://..." } ``` For media headers, upload the asset first via `POST /whatsapp/upload-header-image` and pass the returned `url`.

Authentication

AuthorizationBearer

Bearer API keys are issued from the in-app /api-management page. Each key has a permission scope (send_sms, send_whatsapp, send_email) and an optional IP whitelist.

Request

This endpoint expects an object.
templateNamestringRequired1-512 characters
campaignNamestringRequired>=1 character
typeenumRequired
  • quick broadcast — send immediately
  • schedule broadcast — defer; requires scheduledAt
Allowed values:
scheduledAtdatetimeOptional
recipientslist of stringsOptional
variablesobjectOptional
recipientVariableslist of objectsOptional

Response

Broadcast accepted (queued or scheduled)

dataobject

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error