Codes de connexion (OTP)
Donnez une durée de vie à chaque code : s'il n'a pas pu partir à temps, il est abandonné au lieu d'arriver périmé. Une limite par numéro empêche d'inonder un destinataire.
API · SMS sécurisés · OTP · Envois en masse
GabrielGateway relie vos applications au réseau mobile. Une requête HTTPS suffit pour envoyer un code de vérification ou une campagne, et vous suivez chaque message jusqu'à sa livraison.
Donnez une durée de vie à chaque code : s'il n'a pas pu partir à temps, il est abandonné au lieu d'arriver périmé. Une limite par numéro empêche d'inonder un destinataire.
Quota journalier et débit par minute propres à chaque client. Votre identifiant de message rend chaque nouvel essai sans risque : un même message n'est jamais envoyé deux fois.
Envoyé, livré ou échoué : chaque changement d'état arrive sur votre webhook, signé en HMAC-SHA256 et renvoyé pendant environ une journée tant que vous ne l'avez pas reçu.
Une clé API par client, dont seule l'empreinte est conservée. HTTPS partout, et chiffrement du texte et du destinataire de bout en bout possible.
Le texte de vos SMS n'est jamais enregistré : seuls le destinataire et l'état de livraison sont conservés, pour votre suivi.
Suivez votre forfait et sa date de fin, remplacez une clé perdue et demandez un renouvellement ou une recharge, sans attendre.
Contactez-nous : nous ouvrons votre compte et vous remettons votre clé API.
Une requête POST /api/v1/messages avec le numéro et le texte. L'API vérifie votre clé, votre forfait et vos limites, puis transmet le message.
Le message est envoyé depuis un numéro mobile local par le réseau de l'opérateur. Son état vous parvient par webhook ou à la demande.
Appelez toujours l'API depuis votre serveur, jamais depuis une application mobile ou une page web : la clé pourrait y être extraite.
| Requête | Usage |
|---|---|
POST /api/v1/messages | Envoyer un SMS |
GET /api/v1/messages/{id} | Suivre sa livraison |
GET /api/v1/messages | Lister vos derniers messages |
GET /api/v1/me | Lire votre forfait et tester votre clé |
Numéros au format international (E.164), par exemple +243812345678. Texte de 1600 caractères au plus.
Envoyer un code de connexion
curl -X POST https://votre-domaine/api/v1/messages \
-H 'Authorization: Bearer sk_live_…' \
-H 'Content-Type: application/json' \
-d '{
"id": "otp-8f2c",
"to": "+243812345678",
"text": "Votre code est 482913",
"ttlSeconds": 300
}'
Réponse 202 Accepted
{"id":"otp-8f2c","status":"accepted",
"state":"Pending","createdAt":"…"}
Chaque SMS accepté est décompté de votre forfait. Un message refusé par le téléphone vous est rendu.
7 jours
Pour un lancement, un test ou une campagne ponctuelle. Rappel la veille de la fin.
1 mois
Pour un usage régulier comme les codes de connexion. Rappel 3 jours avant la fin.
Vous choisissez le nombre de SMS. Vous êtes prévenu par email à 75 %, 50 % et 25 % restants, puis à l'épuisement. Les SMS non utilisés à la fin de la période sont perdus. Pour un tarif, contactez le support.
Une question, un message qui n'arrive pas, un forfait à renouveler : nous sommes là pour vous aider.
Pour un message précis, indiquez-nous son identifiant (id) et l'heure de l'envoi : nous le retrouverons plus vite.
401La clé est absente, mal copiée ou a été remplacée. Envoyez-la dans l'en-tête Authorization: Bearer sk_live_…. Si vous l'avez perdue, remplacez-la dans l'espace client : l'ancienne cesse aussitôt de fonctionner.
402credits_exhausted : votre forfait est épuisé. package_expired : sa période est terminée. Demandez un renouvellement ou une recharge depuis l'espace client.
429rate_limited : trop de requêtes par minute, attendez le délai indiqué par l'en-tête Retry-After. quota_exceeded : quota du jour atteint, il se réinitialise à minuit UTC. recipient_limit : ce numéro a reçu trop de messages dans l'heure.
409 duplicate_idCet identifiant a déjà servi : rien n'a été envoyé une deuxième fois. C'est voulu, pour réessayer sans risque après une coupure. Utilisez un nouvel id pour un nouveau message.
Failed ou n'arrive pas202 signifie que le message a été accepté, pas encore livré. Vérifiez le numéro, puis son état avec GET /api/v1/messages/{id}. Un code de connexion dont la durée de vie (ttlSeconds) est dépassée finit en Failed : envoyez-en un nouveau. Prévoyez aussi une autre méthode de connexion, l'email par exemple.
L'en-tête X-Webhook-Signature vaut sha256= suivi du HMAC-SHA256 hexadécimal de X-Webhook-Timestamp, d'un point et du corps brut, avec votre secret. Répondez 2xx en moins de 10 secondes, et ignorez un événement déjà traité.