Aller au contenu

Vérifier le statut d'un message

GET /status/{message_id} retourne l’état actuel d’un SMS précédemment soumis. Le paramètre de chemin est le message_id retourné par POST /send.

Fenêtre de terminal
curl $BASE_URL/api/v1/lisoloo/sms-api/status/507f1f77bcf86cd799439011 \
-H "app-key: $LISOLOO_API_KEY"
{
"status_code": 200,
"data": {
"message_id": "507f1f77bcf86cd799439011",
"status": "delivered",
"total_recipients": 1,
"delivered": 1,
"failed": 0,
"pending": 0,
"created_at": "2026-05-27T10:15:00Z",
"updated_at": "2026-05-27T10:15:08Z"
}
}
ChampDescription
statusStatut agrégé sur tous les destinataires. Voir Cycle de vie pour l’enum complet.
total_recipientsNombre de destinataires dans le tableau to d’origine (depuis OPS_SMS_MESSAGE.total_recipients).
delivered / failed / pendingCompteurs par état, dérivés des lignes OPS_SMS_MESSAGE_CONTACT sous-jacentes. pending inclut les contacts dans tout état non-terminal.
created_atQuand POST /send a retourné.
updated_atDernier horodatage de changement d’état.

La bonne cadence dépend de la forme du trafic. Pour les flux interactifs (OTP, confirmations à destinataire unique), interrogez 3 fois puis abandonnez :

import time
import requests
def wait_for_delivery(message_id, max_attempts=3, delay=2):
for _ in range(max_attempts):
r = requests.get(f"{API_URL}/status/{message_id}", headers=HEADERS)
data = r.json()["data"]
if data["status"] in ("delivered", "failed"):
return data
time.sleep(delay)
return data # dernier état vu

Pour les flux en lot, passez aux webhooks — interroger 1 000 message_id brûle le budget de limite de débit.

HTTP/1.1 404 Not Found
{
"detail": "Message not found"
}

Retourné quand :

  • Le message_id n’existe pas.
  • Le message_id appartient à un autre marchand — la recherche est bornée à votre sys_organization_id, donc les IDs cross-tenant apparaissent en 404 et ne fuitent jamais d’existence.

Un envoi multi-destinataires peut se terminer avec certains destinataires delivered et d’autres failed. Le champ status agrégé reflète la machine d’états au niveau du message (voir Cycle de vie) ; les compteurs delivered et failed donnent la répartition exacte.