Documentation de l'API
Envoyez des SMS et des codes OTP depuis votre application avec une simple requête HTTP. URL de base : https://ezyyen.com/api
1. Démarrage rapide
- Créez un compte et confirmez votre adresse email.
- Rechargez votre solde depuis l'espace client : chaque envoi est débité selon la grille tarifaire du pays de destination.
- Dans l'espace client, ouvrez API développeur et créez une clé. Elle n'est affichée qu'une seule fois : conservez-la côté serveur, jamais dans une application mobile ou un site web public.
- Appelez l'endpoint d'envoi ci-dessous depuis votre serveur.
2. Authentification
Chaque requête porte votre clé dans l'en-tête Authorization. Envoyez aussi Accept: application/json pour recevoir les erreurs au format JSON.
Authorization: Bearer VOTRE_CLE_API Accept: application/json Content-Type: application/json
Une clé API ne donne accès qu'à l'API d'envoi : elle ne permet ni de consulter l'historique financier, ni de recharger, ni de créer d'autres clés. Vous pouvez la révoquer à tout moment depuis l'espace client ; un changement de mot de passe révoque aussi toutes vos clés.
3. Envoyer un SMS
POST https://ezyyen.com/api/v1/sms/send
| Champ | Type | Description |
|---|---|---|
| to | chaîne | Un numéro au format international, par exemple +2290197000000. Requis si recipients est absent. |
| recipients | tableau | Plusieurs numéros (jusqu'à 10 000 par requête). Les numéros invalides ou vers un pays non desservi sont ignorés. |
| message | chaînerequis | Texte du SMS, 1 600 caractères au maximum. Les messages longs sont envoyés en plusieurs segments, chacun facturé. |
| sender_id | chaîne | Expéditeur affiché (11 caractères maximum). Doit être un Sender ID approuvé pour votre compte ; par défaut EZYYEN. |
| campaign_name | chaîne | Nom de l'envoi dans votre historique (128 caractères maximum). |
curl -X POST https://ezyyen.com/api/v1/sms/send \
-H "Authorization: Bearer VOTRE_CLE_API" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"to": "+2290197000000",
"message": "Votre code de vérification est 482913.",
"sender_id": "EZYYEN"
}'4. Réponse
Code 201 lorsque l'envoi est enregistré et le montant débité de votre solde :
{
"success": true,
"campaign_id": "9f1c…",
"sender_id": "EZYYEN",
"status": "processing",
"total_recipients": 1,
"total_segments": 1,
"cost_xof": 500,
"wallet_balance_xof": 3000,
"messages": [
{
"id": "9f1c…",
"to": "2290197000000",
"status": "submitted",
"provider_message_id": "…",
"cost_xof": 500
}
]
}« submitted » signifie que l'opérateur a accepté le message, pas qu'il est livré. Le statut final (delivered ou failed) arrive ensuite par l'accusé de réception de l'opérateur et s'affiche dans l'historique de l'espace client. L'API ne propose pas encore de consultation des statuts ni de webhook vers votre application.
5. Erreurs
| Code | Signification |
|---|---|
| 401 | Clé absente, invalide ou révoquée. |
| 403 | Adresse email non confirmée, ou clé utilisée en dehors de l'API d'envoi. |
| 422 | Requête refusée : champ manquant, solde insuffisant, expéditeur non autorisé, aucun numéro valide, compte suspendu. Le motif est dans « error » ou « errors ». |
| 429 | Trop de requêtes : au plus 120 par minute pour votre compte utilisateur. Attendez avant de réessayer. |
| 500 | Erreur de notre côté : l'envoi n'a pas été enregistré. Réessayez plus tard ou contactez le support. |
{
"success": false,
"error": "Solde insuffisant pour réserver ce montant. Disponible: 0 XOF."
}Avant de renvoyer une requête qui a expiré côté réseau, vérifiez dans votre historique qu'elle n'a pas déjà été enregistrée, pour éviter un double envoi.
6. Bonnes pratiques et règles d'envoi
- N'envoyez qu'à des personnes qui ont accepté de recevoir vos messages, et respectez les demandes d'arrêt.
- Les caractères spéciaux et emojis réduisent la longueur d'un segment (70 caractères au lieu de 160) : vérifiez le coût estimé dans l'espace client avant un gros envoi.
- Un Sender ID personnalisé dépend de l'approbation d'Infobip et des opérateurs de chaque pays ; tant qu'il n'est pas approuvé, utilisez l'expéditeur par défaut.
- Les envois sont soumis aux conditions d'utilisation. Consultez les tarifs par pays.