Send a Message
Queue a single SMS, WhatsApp, or email message
queue_sms
Queue one outbound message. The same endpoint sends all three channels — choose with the channel field. SMS and WhatsApp are delivered by your Android device or SMS provider; email is delivered through your configured SMTP servers.
Authentication
Send your API key as a Bearer token. Generate one in the web panel under Settings → API Key.
Header
Authorization: Bearer YOUR-API-KEY
Body Parameters
| Field | Type | Description | |
|---|---|---|---|
| to | string | required | Recipient. A phone number (with country code) for sms/whatsapp, or an email address for email. |
| message | string | required | The message body. For email this is the email body (HTML or plain text). |
| channel | string | optional | sms (default), whatsapp, or email. |
| subject | string | conditional | Required when channel=email. Ignored for SMS/WhatsApp. |
| smtp_server_id | integer | optional | Email only. The SMTP server to send through. Omit to auto round-robin across your configured servers. |
| scheduled_at | string | optional | Delay delivery until a future time. Format YYYY-MM-DD HH:MM:SS. |
Send an SMS
cURL
curl -X POST "https://api.rcszilla.com/?endpoint=queue_sms" \
-H "Authorization: Bearer YOUR-API-KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+40700000000","message":"Your SMS text","channel":"sms"}'
Send a WhatsApp Message
JSONRequest Body
{
"to": "+40700000000",
"message": "Your WhatsApp message",
"channel": "whatsapp"
}
Send an Email
For email, to is an address and subject is required. Configure SMTP servers in the web panel under Email Servers first. Omit smtp_server_id to let RCSZilla rotate across them automatically.
JSONRequest Body
{
"to": "customer@example.com",
"subject": "Your order has shipped",
"message": "<p>Hi, your order is on its way!</p>",
"channel": "email",
"smtp_server_id": 3
}
Schedule for Later
Add scheduled_at to any channel to delay sending.
JSONRequest Body
{
"to": "+40700000000",
"message": "Scheduled reminder",
"channel": "sms",
"scheduled_at": "2026-05-02 15:30:00"
}
Response
JSON200 OK
{
"success": true,
"message": "Queued",
"id": 1042
}
For email, the response also echoes the smtp_server_id that was used (useful when you let RCSZilla auto-rotate):
JSON200 OK (email)
{
"success": true,
"message": "Queued",
"id": 1043,
"channel": "email",
"smtp_server_id": 3
}
Track a queued message with
queue_status, or send many at once with queue_bulk.
Errors
| Status | Message | Cause |
|---|---|---|
| 400 | to (phone number) is required | Missing to on an SMS/WhatsApp send. |
| 400 | to is not a valid email address | channel=email with a malformed to. |
| 400 | subject is required for channel=email | Email send without a subject. |
| 400 | No SMTP server configured for this account | Email send but no SMTP server exists to rotate to. |
| 400 | smtp_server_id not found for this account | Explicit smtp_server_id that isn't yours. |
| 401 | Unauthorized | Missing or invalid API key. |