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

FieldTypeRequiredDescription
tostringyesNumber in E.164 format, with country code
messagestringyesMessage text, up to 1530 characters (10 segments)
deviceIdstringnoPhone to use. Without it, we pick the one with the shortest queue
referencestringnoYour 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.