Free SMS Marketing API Documentation
Mobile App Integration Guide
Get Your API Key First
Before sending free SMS marketing messages, create a personal API key in the web panel. This key lets your website, CRM, or automation tool call the API directly.
- Log in to the web panel and go to Settings.
- Scroll to the API Key section and click Generate Key.
- Copy the key and use it in the
Authorization: Bearerheader of your requests.
Send a Test SMS
Paste your API key, enter a phone number and message, then queue a live SMS request.
{
"status": "ready"
}
How to Send an SMS
Use queue_sms to add an outgoing SMS to the queue. The Android device/app sends it when it polls the API.
| Endpoint | POST https://api.rcszilla.com/?endpoint=queue_sms | |
| Auth | Authorization: Bearer YOUR-API-KEY | |
| to | string | Recipient phone number, with country code recommended. |
| message | string | SMS text to send. |
| channel | string | Use sms. Also supports whatsapp. |
| scheduled_at | string | Optional date/time in YYYY-MM-DD HH:MM:SS format. |
curl -X POST "https://api.rcszilla.com/?endpoint=queue_sms" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR-API-KEY" \
-d "{\"to\":\"+40700000000\",\"message\":\"Hello from RCSZilla\",\"channel\":\"sms\"}"
{
"success": true,
"message": "Queued",
"id": 123
}
API Overview
This is the REST API used by the RCSZilla Android app and web panel for free SMS marketing workflows. Use it to queue outbound messages, report delivery status, submit incoming replies, and synchronize device configuration.
All requests and responses use JSON. All endpoints are served from https://api.rcszilla.com/ and are selected via the ?endpoint= query parameter.
Request Format
Every request must send Content-Type: application/json and an Authorization header (except claim_device, which is public).
POST https://api.rcszilla.com/?endpoint=queue_sms HTTP/1.1
Host: api.rcszilla.com
Content-Type: application/json
Authorization: Bearer YOUR-API-KEY
{"to": "+40700000000", "message": "Hello from RCSZilla", "channel": "sms"}
Response Format
Every response is a JSON object. Successful responses always contain "success": true. Failures contain "success": false and a "message" field.
{
"success": true,
"message": "Queued",
"id": 123
}
{
"success": false,
"message": "id required"
}
Quick Reference
| Endpoint | Method | Authentication | Description |
|---|---|---|---|
| queue_sms | POST | Bearer | Queue an SMS or WhatsApp message to send |
| claim_device | POST | - | Register a new device (public) |
| register_device | POST | Bearer | Update device metadata |
| pending_messages | GET | Bearer | Fetch outgoing message queue |
| mark_processing | POST | Bearer | Lock a message as in-progress |
| mark_sent | POST | Bearer | Report message sent |
| mark_delivered | POST | Bearer | Report delivery receipt |
| mark_failed | POST | Bearer | Report send failure |
| submit_reply | POST | Bearer | Submit an incoming message to inbox |
| queue_status | GET | Bearer | Get single message status |
| poll | POST | Bearer | Unified heartbeat + queue + config fetch |
| heartbeat | POST | Bearer | Device keep-alive (deprecated; use poll) |
| get_config | GET | Bearer | Fetch device configuration |
| log_outgoing | POST | Bearer | Log a directly-sent message |
| ack_commands | POST | Bearer | Acknowledge processed commands |