Receive SMS API: read incoming replies
Last updated
Read the SMS people sent back, without receiving webhooks.
Returns received SMS in the order they reached DroidSender. It is the alternative to the received webhook when you have no server that accepts requests: a script that runs every minute is enough.
| Parameter | What for |
|---|---|
since | ISO 8601 date: the ones that arrived from then on |
cursor | the nextCursor of the previous response; takes priority over since |
limit | 1 to 100, 50 by default |
from | only the ones from a number, in any format |
deviceId | only the ones one phone received |
reference | only the replies to sends with this reference |
{
"messages": [
{
"id": "msg_01H8Z",
"from": "+14155550100",
"message": "SIM",
"receivedAt": "2026-08-14T10:30:44.000Z",
"conversationId": "conv_9f21",
"deviceId": "dev_oppo_cph2577",
"inReplyTo": {
"id": "msg_01H8X",
"reference": "marcacao_8841",
"body": "Confirma a marcacao de amanha as 10h? Responda SIM",
"sentAt": "2026-08-14T09:02:11.000Z"
}
}
],
"nextCursor": "MjAyNi0wOC0xNFQxMDozMDo0NS4xMjNafG1zZ18wMUg4Wg",
"hasMore": false
}The same object as the received webhook
Each message has the shape of the received webhook data, plus the id. If you already handle the webhook, the same code works for both.
Read every minute
curl "https://api.droidsender.com/api/v1/messages/inbound?since=2026-08-14T00:00:00Z" \
-H "X-API-Key: DS-live-your-key"Keep the nextCursor
It always comes back, even with no new messages. Use it on the next request and you never miss or repeat one, even when the phone was offline and delivers them hours late.
An SMS shows up here up to 10 seconds after it arrives. Reading does not mark the conversation as read. History imported when a phone connects is not included, same as the webhook.