Référence API
Messages
Lisez les messages individuels, et rattrapez tout ce qui a changé pendant que vous n’écoutiez pas.
C’est votre voie de récupération pour les webhooks
Le point de terminaison de liste existe pour qu’une panne de webhook soit récupérable. Interrogez-le depuis le moment où votre point de terminaison a répondu pour la dernière fois et suivez le curseur jusqu’à épuisement — une livraison qui a épuisé ses tentatives a disparu de la file d’attente des webhooks mais reste lisible ici.
Lister les messages
/public/v1/messagesRenvoie les messages dont le statut a changé à partir d’un moment donné, ordonnés de sorte qu’un curseur puisse parcourir l’ensemble sans trou.
Paramètres de requête
status_changed_sincestringObligatoireOù reprendre. Les valeurs de plus de sept jours sont silencieusement ramenées à sept jours plutôt que refusées.
ISO 8601 — clamped to the last 7 days
limitintegerOptionnelCombien de messages renvoyer par page.
default 100, maximum 500
batch_idstringOptionnelRestreint les résultats à un seul lot.
26-character ULID
Requête
Réponses
Erreurs possibles
| Code | Statut | Signification |
|---|---|---|
VALIDATION_FAILED | 422 | La requête était malformée : un paramètre manquant ou invalide, une longueur de clé d’idempotence incorrecte, une URL de webhook rejetée, ou une méthode ou un type de contenu non pris en charge. |
UNAUTHORIZED | 401 | Aucune clé, une clé malformée, un mauvais secret, une clé révoquée ou expirée, ou un compte suspendu. Tous indiscernables par construction. |
INSUFFICIENT_SCOPE | 403 | La clé est valide mais ne porte pas la portée exigée par ce point de terminaison. La portée est nommée dans le detail. |
RATE_LIMITED | 429 | La limite de requêtes de la clé a été dépassée. Attendez l’intervalle indiqué dans Retry-After. |
INTERNAL_ERROR | 500 | Une défaillance inattendue du côté de SMSend. Citez l’identifiant de requête à l’assistance. |
Récupérer un message
/public/v1/messages/{message_id}Lit un message unique à partir de son identifiant.
Paramètres de chemin
message_idstringObligatoireL’identifiant du message, tel que renvoyé par le point de terminaison de liste ou par un webhook.
26-character ULID
Requête
Réponses
Erreurs possibles
| Code | Statut | Signification |
|---|---|---|
NOT_FOUND | 404 | Ressource inexistante — y compris une ressource appartenant à un autre compte, délibérément indiscernable d’une ressource qui n’a jamais existé. |
UNAUTHORIZED | 401 | Aucune clé, une clé malformée, un mauvais secret, une clé révoquée ou expirée, ou un compte suspendu. Tous indiscernables par construction. |
INSUFFICIENT_SCOPE | 403 | La clé est valide mais ne porte pas la portée exigée par ce point de terminaison. La portée est nommée dans le detail. |
RATE_LIMITED | 429 | La limite de requêtes de la clé a été dépassée. Attendez l’intervalle indiqué dans Retry-After. |
INTERNAL_ERROR | 500 | Une défaillance inattendue du côté de SMSend. Citez l’identifiant de requête à l’assistance. |
Statuts de message
Un message finit dans exactement un état terminal et ne change plus jamais d’état une fois qu’il y est.
| Valeur | Signification |
|---|---|
SCHEDULED | En attente de son heure planifiée. |
QUEUED | En attente du routeur. |
RETRY_SCHEDULED | Une tentative de livraison a échoué et une autre est planifiée. |
SUBMITTED | Remis à un fournisseur qui n’a pas encore renvoyé de référence. Un message bloqué ici est le problème de SMSend, pas le vôtre. |
SENT | Le fournisseur l’a accepté et a renvoyé une référence. |
DELIVEREDTerminal | Le téléphone a confirmé la réception. |
FAILEDTerminal | La livraison a échoué. Le motif est dans failed_reason. |
EXPIREDTerminal | Aucun accusé de réception n’est arrivé dans les 48 heures. |
REJECTEDTerminal | Le fournisseur ou l’opérateur l’a refusé. |
CANCELLEDTerminal | Écarté au moment de l’envoi, ou annulé avec son lot. |
Comment fonctionne le curseur
Les pages sont ordonnées par le moment du changement de statut, avec l’identifiant du message comme départage. L’ordre est ainsi total, si bien que deux messages ayant changé dans la même milliseconde ne peuvent pas se retrouver à cheval sur une frontière de page et voir l’un des deux oublié.
La comparaison est inclusive : reprendre au curseur renvoyé restitue à nouveau la dernière ligne de la page précédente. Dédupliquez sur l’identifiant du message associé à son statut.
Quand une page revient vide, le curseur est nul. Gardez votre propre position plutôt que d’avancer — avancer au-delà d’une période calme sauterait des événements qui n’avaient pas encore été écrits.