SMS - Envoyer avec l'API
Cette page détaille la requête d'envoi de SMS (POST /sms), avec des exemples JSON complets et la liste des codes retour et payloads d'erreur possibles.
Pour l'authentification, l'URL de base et le format général des requêtes, voir SMS - Didacticiels.
Requête
POST /sms
Content-Type: application/json
Authorization: Basic <vos identifiants encodés en base64>Corps de la requête
phoneNumber
string
Oui
Numéro du destinataire : soit un numéro local français (10 chiffres), soit un numéro international au format +<indicatif><numéro>.
message
string
Oui
Contenu du message, 600 caractères maximum. Un SMS est facturé tous les 160 caractères.
allowUnicode
boolean
Non
true par défaut. Si false, force l'encodage GSM 03.38 au lieu d'unicode.
metadata
object
Non
Objet JSON libre pour associer des données personnalisées au message (voir exemple ci-dessous).
Exemple simple
{
"phoneNumber": "+33612345678",
"message": "Please call me back"
}Exemple avec métadonnées personnalisées
Le tag metadata ajouté est renvoyé lors de la consultation des détails du SMS.
Réponse en cas de succès
Un envoi accepté renvoie 200 avec l'identifiant du message, à utiliser pour consulter son statut de livraison par la suite.
Codes retour et erreurs possibles
Le format du corps d'erreur dépend du contrôle qui a rejeté la requête - il n'y a pas de format unifié entre les différents codes retour.
200
SMS accepté pour envoi.
400
Requête invalide (champ manquant/trop long, numéro non reconnu, ou rejet du fournisseur SMS).
422
Destinataire non autorisé pour ce compte (voir ci-dessous).
429
Seuil de débit (SMS/minute ou SMS/heure) atteint pour ce compte.
503
Aucun fournisseur SMS disponible actuellement - à retenter plus tard.
400 Bad Request
Trois situations distinctes renvoient 400, avec trois formats de corps différents :
Un champ manquant/vide, ou un
messagede plus de 600 caractères, échoue à la validation de champ. Le corps est une correspondance clé/valeur, une entrée par champ invalide :Un
phoneNumberqui ne peut pas être analysé comme un numéro valide (format incorrect, indicatif de pays inconnu, caractères non numériques...) échoue à un contrôle ultérieur, une fois la validation de champ passée. Le corps n'a qu'une cléerror, dont la valeur est lephoneNumberenvoyé, tel quel :Si la configuration du fournisseur SMS de votre compte rejette elle-même la requête (par exemple un
fromNameinvalide), le corps est un tableau de causes :
422 Unprocessable Entity
Le destinataire n'est pas autorisé pour votre compte. Ceci couvre trois politiques indépendantes configurables par compte : une liste blanche de pays de destination, une liste noire de pays de destination, et une liste blanche de numéros de téléphone. Les trois produisent le même corps - la réponse n'indique pas laquelle s'est déclenchée. C'est un 422, pas un 403 : vos identifiants et votre rôle sont valides, c'est spécifiquement le destinataire de cette requête que la politique de votre compte rejette.
Aucun SMS n'est envoyé et aucune tentative de livraison n'a lieu dans ce cas.
429 Too Many Requests
Renvoyé lorsque le seuil de débit (SMS/minute ou SMS/heure) de votre compte est atteint. Le format du corps correspond au cas de rejet par le fournisseur SMS ci-dessus (un tableau de causes) - notez que message est un template générique non interpolé ici (le %s littéral n'est pas une erreur), le détail réel (quel seuil, combien de SMS) se trouve dans args :
503 Service Unavailable
Aucun fournisseur SMS n'est actuellement disponible pour envoyer votre message - à retenter plus tard, en suivant le pattern décrit ci-dessous.
Pattern client recommandé
Vortext peut avoir jusqu'à 5 secondes d'indisponibilité en cas de défaillance d'un nœud de notre infrastructure clusterisée. Dans ce cas, vous obtiendrez une erreur 502 ou 503. Pour garantir la délivrance du message, envisagez d'appeler le service avec ce pattern :
Last updated

