Get Pending Messages
Mobile App Integration Guide
Get Pending Messages
Returns a batch of messages from the outgoing queue that are ready to be sent. The API atomically claims the returned messages (status -> processing) so that concurrent device requests do not receive the same messages.
Query Parameters
| Field | Type | Description | |
|---|---|---|---|
| limit | integer | optional | Maximum messages to return (1-100, default 50). |
| channel | string | optional | Filter by channel: sms or whatsapp. Omit for all. |
Messages assigned to this device are returned first, followed by unassigned messages. After returning the list, the server clears the claim marker so normal status transitions apply.
Example Request
cURL
curl "https://api.rcszilla.com/?endpoint=pending_messages&limit=10&channel=sms" \ -H "Authorization: Bearer YOUR-DEVICE-TOKEN"
Response
JSON200 OK
{
"success": true,
"count": 2,
"messages": [
{
"id": 101,
"user_id": 1,
"contact_id": 55,
"campaign_id": null,
"device_id": 7,
"sim_slot": 0,
"channel": "sms",
"phone": "+40712345678",
"message": "Hello from SMS Manager!",
"priority": 1,
"scheduled_at": null,
"created_at": "2026-04-29 10:00:00"
},
{
"id": 102,
"user_id": 1,
"contact_id": 56,
"campaign_id": 3,
"device_id": null,
"sim_slot": 1,
"channel": "sms",
"phone": "+40799999999",
"message": "Campaign message body here.",
"priority": 1,
"scheduled_at": null,
"created_at": "2026-04-29 10:00:05"
}
]
}
Message Fields
| Field | Type | Description |
|---|---|---|
| id | integer | Unique queue item ID. Pass to all mark_* endpoints. |
| channel | string | sms or whatsapp |
| phone | string | Recipient phone number. |
| message | string | Message body text. |
| sim_slot | integer | 0 = SIM 1, 1 = SIM 2, null = any. |
| device_id | integer|null | Device this message is assigned to (null = any device). |
| campaign_id | integer|null | Campaign this message belongs to, or null for direct messages. |
| priority | integer | Lower number = higher priority. Sorted ascending. |
| scheduled_at | datetime|null | Only returned when scheduled_at �NOW(). |
Prefer using
poll instead �it returns pending messages together with commands and config in a single request, reducing round trips.