Guides
Erreurs
Chaque échec a la même forme, un code stable lisible par une machine, et un identifiant de requête que vous pouvez citer à l’assistance.
L’enveloppe
Les échecs sont encapsulés dans un objet error. Aiguillez sur code — jamais sur message, qui est écrit pour des humains et peut être reformulé à tout moment.
- code — un identifiant stable. C’est là-dessus que votre intégration doit s’aiguiller.
- message — lisible par un humain, et non stable. Pour les erreurs internes, il est toujours générique : aucun texte d’exception, aucun SQL et aucune trace d’appels ne franchit jamais la frontière.
- retryable — indique si réessayer la requête identique pourrait plausiblement réussir. Publié pour vous éviter de deviner.
- detail — contexte lisible par une machine, toujours un objet. Il est vide plutôt qu’absent quand il n’y a rien à ajouter.
- request_id — identifie cette requête précise dans les journaux de SMSend. Présent sur chaque erreur, y compris les 4xx.
Faire le lien avec l’assistance
Le même identifiant est renvoyé dans un en-tête sur chaque réponse, réussie ou non. Journalisez-le. Le citer transforme une conversation d’assistance à propos d’un échec survenu hier en une simple recherche.
Ce qu’il faut réessayer
Seules trois erreurs sont marquées comme réessayables : une requête encore en vol sous la même clé d’idempotence, une limite de débit et une erreur interne. Tout le reste échouera exactement de la même façon, et le réessayer ne fait que consommer votre limite de débit.
Les échecs de paiement utilisent 402 plutôt que 422 précisément pour être faciles à distinguer des requêtes malformées. Un client qui réessaie une erreur de validation gaspille des requêtes ; un client qui réessaie en boucle une erreur de fonds insuffisants fait pire.
Tous les codes d’erreur
Le vocabulaire publié au complet. De nouveaux codes peuvent être ajoutés : traitez un code non reconnu comme un échec générique plutôt que de planter.
Pourquoi les ressources des autres donnent 404
Demander un lot, un message ou un webhook appartenant à un autre compte renvoie 404, pas 403 — la même réponse qu’une ressource qui n’a jamais existé. Un 403 confirmerait que l’identifiant est réel, ce qui transformerait le point de terminaison en moyen de tester l’existence de tel ou tel identifiant.