Documentation API
Endpoint unifié pour envoyer SMS, Email et WhatsApp depuis vos systèmes.
Passerelle transactionnelle
Documentation API
Authentifiez-vous avec X-API-Key, puis envoyez via POST /api/v1/messaging/send/.
Passerelle transactionnelle
Un point d’entrée unique pour envoyer des messages transactionnels (SMS, Email, WhatsApp) depuis un CRM, un e-commerce ou toute application tierce.
Toutes les requêtes passent en HTTPS, corps en JSON.
Authentification
Transmettez votre clé API active dans l’en-tête HTTP X-API-Key à chaque requête. Créez une clé dans Développeurs → Clés API.
X-API-Key: votre_cle_api_secrete_ici
Attention : ne placez jamais une clé API dans du code navigateur ou une app mobile publique — risque de consommation frauduleuse de vos stocks.
Envoi de messages unifié
/api/v1/messaging/send/
Paramètres (JSON body)
| Champ | Type | Requis | Description |
|---|---|---|---|
channel |
String | Oui | Canal d’envoi : SMS, EMAIL ou WHATSAPP. |
to |
String | Oui |
Destinataire. SMS / WhatsApp : numéro E.164 (ex. +243812345678).Email : adresse valide (ex. client@domaine.com).
|
content |
String | Oui | Contenu du message (texte ou HTML pour l’email). |
subject |
String | Conditionnel | Requis si channel = EMAIL. Sujet de l’e-mail. |
cc |
Array | Non | Email uniquement. Liste d’adresses en copie. |
from |
String | Conditionnel |
SMS uniquement. Nom expéditeur approuvé sur votre compte. Optionnel si vous n’avez qu’un seul sender approuvé. Requis si vous en possédez plusieurs. |
smtp_config_id |
String | Non | Email uniquement. Identifiant public (public_id) d’une config SMTP active de votre compte. Sinon, SMTP Jiwe par défaut. |
SMS : au moins un nom d’expéditeur doit être approuvé sur le compte. Utilisez from pour choisir le sender si vous en avez plusieurs.
Exemple — EMAIL
{
"channel": "EMAIL",
"to": "client@exemple.com",
"subject": "Confirmation de commande",
"content": "<p>Bonjour, votre commande a bien été reçue.</p>",
"cc": ["factures@monentreprise.com"]
}
Exemple — SMS
{
"channel": "SMS",
"to": "+243812345678",
"from": "MYBRAND",
"content": "Votre code de validation est 883921."
}
OTP (SMS & Email)
Générez et vérifiez des codes à usage unique pour l’authentification de vos utilisateurs finaux. Distinct de l’OTP e-mail de création de compte Jiwe.
/api/v1/otp/send/
Envoie un code à 6 chiffres. Le code n’est jamais retourné dans la réponse JSON.
Corps — envoi SMS
{
"channel": "SMS",
"to": "+243812345678",
"from": "MYBRAND",
"message": "Code: "
}
Corps — envoi Email
{
"channel": "EMAIL",
"to": "user@example.com",
"subject": "Votre code",
"message": "Votre code Jiwe : "
}
message est optionnel ; s’il est fourni, il doit contenir le placeholder . Réponse 201 :
{
"otp_id": "otp_01…",
"channel": "SMS",
"expires_at": "2026-09-01T12:10:00+01:00",
"destination_masked": "+243***678"
}
/api/v1/otp/verify/
{
"otp_id": "otp_01…",
"code": "482916"
}
Réponse 200 : {"verified": true, "otp_id": "otp_01…"}
POST /api/v1/otp/send/ requiert l’en-tête Idempotency-Key (comme l’envoi de messages).
Exemple curl — envoi puis vérification
curl -X POST https://api.jiwe.cd/api/v1/otp/send/ \
-H "X-API-Key: votre_cle" \
-H "Idempotency-Key: otp-req-001" \
-H "Content-Type: application/json" \
-d '{"channel":"SMS","to":"+243812345678"}'
curl -X POST https://api.jiwe.cd/api/v1/otp/verify/ \
-H "X-API-Key: votre_cle" \
-H "Content-Type: application/json" \
-d '{"otp_id":"otp_…","code":"482916"}'
Exemples d’intégration
curl -X POST https://api.jiwe.cd/api/v1/messaging/send/ \
-H "Content-Type: application/json" \
-H "X-API-Key: votre_cle_api" \
-d '{
"channel": "SMS",
"to": "+243812345678",
"content": "Test de message transactionnel"
}'
import requests
url = "https://api.jiwe.cd/api/v1/messaging/send/"
headers = {
"Content-Type": "application/json",
"X-API-Key": "votre_cle_api"
}
payload = {
"channel": "EMAIL",
"to": "client@exemple.com",
"subject": "Sujet de test",
"content": "Bonjour depuis l'API Python",
"cc": ["copie@exemple.com"]
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code, response.json())
const url = 'https://api.jiwe.cd/api/v1/messaging/send/';
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'votre_cle_api'
},
body: JSON.stringify({
channel: 'WHATSAPP',
to: '+243812345678',
content: 'Votre colis est en route !'
})
});
console.log(await response.json());