Appearance
Bulk SMS
POST /v1/sms/send-bulk
Send an SMS to multiple recipients in a single request. Bulk sends are queued and processed asynchronously. A batch_id is returned for tracking.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
recipients | array | Yes | Array of E.164 phone numbers. Max 500 per request. |
content | string | Yes | Message text. Max 918 characters (6 segments). |
sender_id | string | No | Alphanumeric sender ID (e.g., SendAPI). Must be pre-registered and approved — see SMS Send. |
bash
curl -X POST https://sendapi.co/v1/sms/send-bulk \
-H "Authorization: Bearer sk_live_123456789" \
-H "Content-Type: application/json" \
-d '{
"recipients": ["+447700900000", "+14155552671", "+250788000000"],
"content": "Flash sale! 20% off all plans today only. Use code FLASH20 at sendapi.co/pricing"
}'javascript
const batch = await client.sms.sendBulk({
recipients: ['+447700900000', '+14155552671', '+250788000000'],
content: 'Flash sale! 20% off all plans today only.'
});
console.log(batch.batch_id);python
batch = client.sms.send_bulk(
recipients=["+447700900000", "+14155552671"],
content="Flash sale! 20% off all plans today only."
)Response
HTTP 202 Accepted:
json
{
"success": true,
"data": {
"batch_id": "batch_01H9...XQ",
"total_recipients": 3,
"estimated_cost": "$0.0750",
"status": "queued",
"message": "Bulk SMS send queued for processing"
}
}Cost Estimation
The estimated_cost is calculated at queue time based on current routing prices. Final charges may vary slightly due to carrier routing changes.