Documentation de l'API EPOO
Tous les endpoints sont accessibles en HTTPS et attendent un corps JSON. Chaque appel décrémente votre solde de crédit — vérifiez-le depuis votre tableau de bord.
Authentification
Chaque requête doit inclure votre clé API dans l'en-tête X-API-Key. Générez une clé depuis l'espace client — elle n'est affichée en clair qu'une seule fois.
X-API-Key: epoo_live_XXXXXXXXXXXXXXXXXXXXXXXX
À la création, vous choisissez les services que la clé peut utiliser, canal par canal : Alertes SMS, OTP SMS, Automatisation SMS, Alertes Email, OTP Email, Automatisation Email. Un appel à un endpoint hors de la portée de la clé renvoie 403.
/v1/sms/send — Alertes SMS
Envoie un SMS transactionnel (notification, alerte, confirmation).
curl -X POST https://epoo-api.appwrite.network/sms/send \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{
"to": "221771234567",
"message": "Votre commande #4521 a été expédiée"
}'
Réponse 200
{ "status": "sent", "messageId": "sms_abc123" }
Erreurs : 401 clé invalide, 402 crédit insuffisant, 502 échec opérateur (crédit non débité).
/v1/otp/send — Envoyer un code
Génère un code à 6 chiffres, valable 5 minutes, et l'envoie par SMS.
curl -X POST https://epoo-api.appwrite.network/otp/send \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{ "to": "221771234567" }'
Réponse 200
{ "status": "sent" }
/v1/otp/verify — Vérifier un code
Vérifie le code saisi par l'utilisateur. Ne décrémente pas de crédit.
curl -X POST https://epoo-api.appwrite.network/otp/verify \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{ "to": "221771234567", "code": "482913" }'
Réponse 200
{ "verified": true }
// ou { "verified": false, "reason": "expired" | "mismatch" | "not_found" | "too_many_attempts" }
/v1/messages/schedule — Automatisation SMS
Planifie l'envoi d'un SMS à une date future (ISO 8601). Le crédit est vérifié au moment de l'envoi, pas à la planification.
curl -X POST https://epoo-api.appwrite.network/messages/schedule \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{
"to": "221771234567",
"message": "Rappel : rendez-vous demain à 10h",
"sendAt": "2026-08-20T09:00:00.000Z"
}'
Réponse 200
{ "status": "scheduled", "id": "sched_abc123", "sendAt": "2026-08-20T09:00:00.000Z" }
/v1/email/send — Alertes Email
Envoie un email transactionnel (notification, alerte, confirmation). Consomme 1 crédit du bundle Email — indépendant du crédit SMS.
curl -X POST https://epoo-api.appwrite.network/email/send \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{
"to": "client@exemple.com",
"subject": "Votre commande a été expédiée",
"message": "Votre commande #4521 a été expédiée."
}'
Réponse 200
{ "status": "sent", "messageId": "0100019..." }
Erreurs : 401 clé invalide, 402 crédit insuffisant, 502 échec du fournisseur email (crédit non débité).
/v1/email-otp/send — Envoyer un code par email
Génère un code à 6 chiffres, valable 5 minutes, et l'envoie par email.
curl -X POST https://epoo-api.appwrite.network/email-otp/send \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{ "to": "client@exemple.com" }'
Réponse 200
{ "status": "sent" }
/v1/email-otp/verify — Vérifier un code email
Vérifie le code saisi par l'utilisateur. Ne décrémente pas de crédit.
curl -X POST https://epoo-api.appwrite.network/email-otp/verify \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{ "to": "client@exemple.com", "code": "482913" }'
Réponse 200
{ "verified": true }
// ou { "verified": false, "reason": "expired" | "mismatch" | "not_found" | "too_many_attempts" }
/v1/emails/schedule — Automatisation Email
Planifie l'envoi d'un email à une date future (ISO 8601). Le crédit est vérifié au moment de l'envoi, pas à la planification.
curl -X POST https://epoo-api.appwrite.network/emails/schedule \
-H "X-API-Key: epoo_live_XXXX" \
-H "Content-Type: application/json" \
-d '{
"to": "client@exemple.com",
"subject": "Rappel de rendez-vous",
"message": "Rappel : rendez-vous demain à 10h",
"sendAt": "2026-08-20T09:00:00.000Z"
}'
Réponse 200
{ "status": "scheduled", "id": "sched_abc123", "sendAt": "2026-08-20T09:00:00.000Z" }
Codes d'erreur communs
| Code | Signification |
|---|---|
| 400 | Champ requis manquant ou invalide |
| 401 | Clé API manquante, invalide ou révoquée |
| 402 | Crédit insuffisant (sur le canal SMS ou Email concerné) |
| 403 | Clé API valide mais sans la portée requise pour cet endpoint |
| 405 | Méthode HTTP non autorisée (seul POST est accepté) |
| 502 | Erreur du fournisseur SMS ou Email — crédit non débité |