Send a message
The endpoint that queues an SMS on one of your phones.
POSThttps://api.droidsender.com/api/v1/sms/send
The message joins the device's queue and goes out in arrival order. The response is immediate and does not wait for the send: what it confirms is that the message was accepted, not that it reached the recipient.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
to | string | yes | Number in E.164 format, with country code |
message | string | yes | Message text, up to 1530 characters (10 segments) |
deviceId | string | no | Phone to use. Without it, we pick the one with the shortest queue |
reference | string | no | Your own identifier, returned in this message's webhooks |
Request
bash
curl -X POST https://api.droidsender.com/api/v1/sms/send \
-H "Content-Type: application/json" \
-H "X-API-Key: DS-live-your-key" \
-d '{
"to": "+351912345678",
"message": "Your appointment on 10/08 at 11:15 is confirmed.",
"deviceId": "dev_oppo_cph2577",
"reference": "appointment_8841"
}'Response
json
{
"id": "msg_01H8X2",
"status": "queued",
"to": "+351912345678",
"deviceId": "dev_oppo_cph2577",
"reference": "appointment_8841",
"segments": 1,
"encoding": "GSM-7",
"createdAt": "2026-08-16T14:22:05Z"
}One SMS can cost more than one SMS
Above 160 characters the message is split into segments and each one counts as a send. And a single ã, õ or ç forces UCS-2 encoding, which drops the limit from 160 to 70. The segments field in the response tells you how many it really was.