API d’envoi de SMS : POST /sms/send depuis votre Android
L’endpoint qui met un SMS en file d’attente sur l’un de vos téléphones.
Dernière mise à jour
/api/v1/sms/sendLe message rejoint la file d’attente de l’appareil et part dans l’ordre d’arrivée. La réponse n’attend pas l’envoi : queued signifie accepté.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| to | string | oui | Numéro au format E.164 (+14155550100). Un numéro national est interprété selon le pays du téléphone qui envoie |
| message | string | oui | Texte du message, jusqu’à 10 000 caractères (environ 66 SMS en GSM-7). Les messages longs partent en SMS concaténés |
| deviceId | string | non | Téléphone à utiliser. Sans ce champ, nous choisissons celui dont la file d’attente est la plus courte |
| reference | string | non | Votre propre identifiant, renvoyé dans les webhooks de ce message |
Requête
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": "+14155550100",
"message": "Votre rendez-vous du 10/08 à 11h15 est confirmé.",
"deviceId": "dev_oppo_cph2577",
"reference": "appointment_8841"
}'Réponse
{
"id": "msg_01H8X2",
"status": "queued",
"to": "+14155550100",
"deviceId": "dev_oppo_cph2577",
"reference": "appointment_8841",
"segments": 1,
"encoding": "GSM-7",
"quota": { "used": 128, "included": 2000, "remaining": 1872 },
"deviceOnline": true,
"createdAt": "2026-08-16T14:22:05Z"
}Réessayer sans envoyer deux fois
Envoyez un en-tête Idempotency-Key. Répéter une requête avec la même clé renvoie la réponse d’origine au lieu d’envoyer un second SMS. Les clés durent 72 heures ; un corps différent avec la même clé renvoie 409 idempotency_conflict.
curl -X POST https://api.droidsender.com/api/v1/sms/send \
-H "X-API-Key: DS-live-your-key" \
-H "Idempotency-Key: appointment_8841_reminder" \
-H "Content-Type: application/json" \
-d '{ "to": "+14155550100", "message": "Rappel" }'Lire une conversation
/api/v1/conversations/:id/messagesRenvoie la conversation dans l’ordre chronologique. Le conversationId arrive dans le webhook received. limit accepte de 1 à 100, 20 par défaut.
{
"conversationId": "conv_9f21",
"phone": "+14155550100",
"deviceId": "dev_oppo_cph2577",
"messages": [
{
"id": "msg_01H8X",
"direction": "outbound",
"body": "Votre rendez-vous du 10/08 à 11h15 est confirmé.",
"status": "delivered",
"reference": "appointment_8841",
"at": "2026-08-14T09:02:11Z"
},
{
"id": "msg_01H8Z",
"direction": "inbound",
"body": "Jeudi matin, si possible.",
"status": "delivered",
"reference": null,
"at": "2026-08-14T10:30:44Z"
}
]
}Vérifier un message plus tard
/api/v1/messages/:idRenvoie l’état actuel d’un message que vous avez envoyé. Utilisez-le pour rapprocher vos données quand un webhook n’est pas arrivé. Les messages reçus s’obtiennent avec GET /messages/inbound.
{
"id": "msg_01H8X2",
"status": "delivered",
"to": "+14155550100",
"deviceId": "dev_oppo_cph2577",
"segments": 1,
"encoding": "GSM-7",
"reference": "appointment_8841",
"createdAt": "2026-08-16T14:22:05Z",
"deliveredAt": "2026-08-16T14:22:41Z",
"error": null
}