Bulk WhatsApp Messaging
POST /v1/whatsapp/send-bulk
Send a message to multiple recipients in a single API call. Bulk sends are processed asynchronously via a queue and return a batch_id for tracking.
Authentication
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer sk_live_YOUR_API_KEY |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
session_id | string | Yes | The session to send messages from. |
recipients | array | Yes | Array of E.164 phone number strings (e.g., ["+447700900000", "+14155552671"]). |
type | string | Yes | Message type: text, image, document, template. |
text | object | No* | Required if type is text. Contains body string. |
template | object | No* | Required if type is template. |
delay_ms | integer | No | Per-message delay in milliseconds (default: 1500, min: 500). |
bash
curl -X POST https://sendapi.co/v1/whatsapp/send-bulk \
-H "Authorization: Bearer sk_live_123456789" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess_01H8BKF...Z2T",
"recipients": ["+447700900000", "+14155552671", "+250788000000"],
"type": "text",
"text": { "body": "Your order has shipped! Track it at sendapi.co/track" }
}'javascript
const batch = await client.whatsapp.sendBulk({
session_id: 'sess_01H8BKF...Z2T',
recipients: ['+447700900000', '+14155552671', '+250788000000'],
type: 'text',
text: { body: 'Your order has shipped! Track it at sendapi.co/track' }
});
console.log(batch.batch_id); // Use this to track progresspython
batch = client.whatsapp.send_bulk(
session_id="sess_01H8BKF...Z2T",
recipients=["+447700900000", "+14155552671", "+250788000000"],
type="text",
text={"body": "Your order has shipped!"}
)Response
json
{
"batch_id": "batch_01H9...XQ",
"status": "queued",
"total": 3,
"queued_at": "2026-03-09T14:30:00Z"
}Tracking Batch Progress
Use the batch_id to monitor delivery progress by checking your webhook events. Each message in the batch fires individual message.sent, message.delivered, and message.failed webhook events.
Rate Limits
Bulk sends enforce anti-ban protection: messages are sent with a minimum delay between recipients. The API automatically respects session-level rate limits of 30 messages/minute.
Anti-Spam Limits
| Plan | Max recipients per batch | Max batches per day |
|---|---|---|
| Starter | 100 | 5 |
| Growth | 1,000 | 25 |
| Business | 10,000 | Unlimited |