Bulk messaging
Send messages to many recipients in a single request. Bulk supports plain SMS, templated WhatsApp, and mixed channels — with optional fallback so critical messages still land if the first channel fails. This page covers basic bulk SMS and WhatsApp sends, limits, and best practices.
Authentication
All requests authenticate with your API key in the x-api-key header:
-H "x-api-key: YOUR_API_KEY"
Bulk SMS
Send the same message to multiple recipients. Each entry in messages has a to and a body.
curl -X POST https://api.tryzend.com/messages/bulk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"to": "+233593152134", "body": "Welcome to our service!"},
{"to": "+233593152135", "body": "Welcome to our service!"},
{"to": "+233593152136", "body": "Welcome to our service!"}
],
"preferred_channels": ["sms"],
"fallback_enabled": true
}'
Response
{
"id": "bulk_1705312345678",
"status": "pending",
"recipients": 3,
"estimated_cost": 0.06,
"message": "3 messages queued for processing"
}
The response returns immediately with a bulk_id. Use it to track progress — see Advanced bulk.
Request fields
to, plus a body and/or template_params.["whatsapp", "sms"].Bulk WhatsApp with templates
Send a template to multiple recipients, supplying per-recipient values in template_params. Set template_id once at the top level.
{
"messages": [
{
"to": "+233593152134",
"template_params": {
"code": "123456",
"verification_url": "https://yourapp.com/verify?code=123456"
}
},
{
"to": "+233593152135",
"template_params": {
"code": "789012",
"verification_url": "https://yourapp.com/verify?code=789012"
}
}
],
"template_id": "6884c5d09c14b2b164500d58",
"preferred_channels": ["whatsapp"]
}
See Templates for defining templates and Variables & variants for the variables you pass here.
Bulk message limits
- Maximum recipients: 10,000 per request
- Rate limit: 1,000 messages per hour
- Processing time: 5–10 minutes for large batches
- Cost: varies by channel and message type
Note
Best practices
- Optimize batch size. SMS batches of ~1000, WhatsApp ~500, and mixed channels ~750 work well.
- Rate limit large sends. Space batches out to stay under 1,000 messages per hour.
- Enable fallback for critical messages. Set
fallback_enabled: trueso OTPs and time-sensitive alerts retry over another channel. - Handle errors. Check the response and surface
messageon failure — see bulk errors. - Track progress. Store the returned
bulk_idand poll status rather than assuming delivery.
Next steps
- Advanced bulk — individual customization, mixed channels, scheduling, webhooks, status tracking, analytics, and errors.
- Templates — create and manage the templates used in bulk WhatsApp sends.