Documentation officielle
Envoyez des SMS et des OTP avec une API claire.
Une seule base URL, un token Bearer et des exemples prêts à copier. Les champs et réponses présentés ici correspondent à l’API de production.
Base URL
https://api.smsawd.com/api/v1Étape 1
Obtenir un access_token
Votre Client ID commence par awd_id_. Le Client Secret est affiché une seule fois lors de la génération. Échangez-les contre un token valable 3 600 secondes.
Client ID
Identifiant public awd_id_...
Client Secret
Secret conservé côté serveur
Bearer token
Utilisé sur SMS et OTP
/api/v1/auth/tokenAccepte un body JSON avec client_id, client_secret et grant_type=client_credentials.
Obtenir le token
bash
curl -X POST "https://api.smsawd.com/api/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{
"client_id": "awd_id_xxxxxxxxxxxxxxxxxxxxxxxx",
"client_secret": "VOTRE_CLIENT_SECRET",
"grant_type": "client_credentials"
}'Réponse exacte
json
{
"access_token": "TOKEN_OPAQUE_VALABLE_1_HEURE",
"token_type": "Bearer",
"expires_in": 3600
}Tester le token sans envoyer de SMS
bash
curl "https://api.smsawd.com/api/v1/sms/balance" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Accept: application/json"/auth/token et /api/auth/token restent acceptées. Pour toute nouvelle intégration, utilisez /api/v1/auth/token.SMS
Envoyer un SMS
Utilisez recipient, content et senderName. Le numéro doit être au format international E.164.
/api/v1/sms/sendMet un SMS dans la file d’envoi et débite le nombre réel de segments du solde.
Envoyer un SMS
bash
curl -X POST "https://api.smsawd.com/api/v1/sms/send" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"recipient": "+2250700000000",
"content": "Bonjour depuis SMSAWD",
"senderName": "AWDSMS"
}'Exemple Node.js
javascript
const axios = require('axios');
const { data: auth } = await axios.post('https://api.smsawd.com/api/v1/auth/token', {
client_id: process.env.SMSAWD_CLIENT_ID,
client_secret: process.env.SMSAWD_CLIENT_SECRET,
grant_type: 'client_credentials',
});
const { data } = await axios.post(
'https://api.smsawd.com/api/v1/sms/send',
{
recipient: '+2250700000000',
content: 'Bonjour depuis SMSAWD',
senderName: 'AWDSMS',
},
{ headers: { Authorization: `Bearer ${auth.access_token}` } },
);
console.log(data);/api/sms/send et les anciens champs to, message, sender restent acceptés. La route interne /sms/send est réservée au tableau de bord et ne doit pas être utilisée par une intégration API.SMS
Envoyer plusieurs SMS
Envoyez le même contenu à 2 à 1 000 destinataires dans une seule requête.
/api/v1/sms/send-bulkChaque destinataire est traité séparément et le résultat indique le nombre mis en file et le nombre échoué.
Envoi en masse
bash
curl -X POST "https://api.smsawd.com/api/v1/sms/send-bulk" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"recipients": ["+2250700000000", "+2250500000000"],
"content": "Votre notification SMSAWD",
"senderName": "AWDSMS"
}'OTP
Générer et envoyer un OTP
Le code est généré avec une source cryptographique, stocké uniquement sous forme de hash et envoyé par SMS. Sa durée est configurable entre 60 et 600 secondes.
/api/v1/otp/sendlength accepte 4 à 8 chiffres. expiresIn vaut 300 secondes par défaut. Un SMS est déduit du solde selon son nombre de segments.
Envoyer un OTP
bash
curl -X POST "https://api.smsawd.com/api/v1/otp/send" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+2250700000000",
"senderName": "AWDSMS",
"length": 6,
"expiresIn": 300
}'Réponse
json
{
"success": true,
"message": "Code OTP envoyé avec succès",
"data": {
"requestId": "f92a...",
"expiresIn": 300,
"resendAvailableIn": 30,
"messageId": "uuid-du-sms",
"status": "PENDING"
}
}OTP
Vérifier un OTP
Un code valide est consommé immédiatement et ne peut donc être utilisé qu’une seule fois. Cinq tentatives incorrectes verrouillent le code.
/api/v1/otp/verifyLe phone doit être exactement le même que lors de l’envoi. Le code contient uniquement des chiffres.
Vérifier le code
bash
curl -X POST "https://api.smsawd.com/api/v1/otp/verify" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+2250700000000",
"code": "123456"
}'Code valide
json
{
"success": true,
"message": "Code OTP vérifié avec succès",
"data": {
"valid": true,
"requestId": "f92a...",
"verifiedAt": "2026-07-16T12:00:00.000Z"
}
}Code invalide
json
HTTP 400
{
"success": false,
"code": "OTP_4001",
"message": "Code OTP invalide",
"timestamp": "2026-07-16T12:00:00.000Z"
}Code expiré
json
HTTP 410
{
"success": false,
"code": "OTP_4002",
"message": "Code OTP expiré",
"timestamp": "2026-07-16T12:05:01.000Z"
}OTP
Renvoyer un OTP
Le renvoi invalide l’ancien code. Un délai de 30 secondes et une limite de trois renvois protègent contre les abus.
/api/v1/otp/resendLe même numéro est requis. La longueur et la durée de validité du précédent OTP sont conservées.
Renvoyer le code
bash
curl -X POST "https://api.smsawd.com/api/v1/otp/resend" \
-H "Authorization: Bearer VOTRE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+2250700000000"
}'Réponses
Codes d’erreur stables
Toutes les erreurs retournent success=false, un code exploitable, un message lisible et un timestamp ISO 8601.
AUTH_4001 · 401Token invalide ou expiré
AUTH_4004 · 401Client ID ou Client Secret invalide
SMS_4001 · 402Solde SMS insuffisant
SMS_4002 · 400Numéro destinataire invalide
SMS_4003 · 403SenderName non approuvé
OTP_4001 · 400Code OTP invalide
OTP_4002 · 410Code OTP expiré
OTP_4003 · 429Trop de tentatives
OTP_4004 · 429Renvoi demandé trop rapidement
OTP_4005 · 429Limite de renvois atteinte
Prêt à tester ?
Générez vos identifiants depuis le tableau de bord, puis commencez par l’endpoint de solde.