Référence de l'API · v1
Documentation API 10nastie
L'API 10nastie permet à votre site ou votre application d'envoyer des messages WhatsApp à vos clients, depuis votre propre numéro, via l'API officielle de WhatsApp. Elle sert aux confirmations de commande, suivis de livraison, rappels et codes de vérification.
https://api.[votre-domaine]/v1
Les requêtes et les réponses sont en JSON, encodées en UTF-8. Les numéros de téléphone s'écrivent au format international, avec l'indicatif pays : +2250700000000.
Démarrer en trois étapes
- Connectez votre numéro WhatsApp depuis votre tableau de bord, puis créez une clé API dans Paramètres > API.
- Choisissez un modèle de message déjà validé, par exemple
confirmation_commande. - Envoyez votre premier message :
curl -X POST https://api.[votre-domaine]/v1/messages \
-H "Authorization: Bearer sk_test_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{
"to": "+2250700000000",
"template": "confirmation_commande",
"variables": ["Aminata", "4521", "15 000"]
}'
Avec une clé de test, le message est simulé : vous recevez une réponse et des notifications comme en production, sans envoi réel ni décompte de votre forfait.
Authentification
Chaque requête doit porter votre clé API dans l'en-tête Authorization, sous la forme Bearer <clé>. Une requête sans clé, ou avec une clé révoquée, reçoit l'erreur 401 invalid_api_key.
Authorization: Bearer sk_live_VOTRE_CLE
| Type de clé | Préfixe | Effet |
|---|---|---|
| Test | sk_test_ | Messages simulés, notifications envoyées, aucun décompte |
| Production | sk_live_ | Messages réellement envoyés et décomptés de votre forfait |
Vous pouvez créer plusieurs clés, par exemple une par site ou par environnement, et en révoquer une à tout moment depuis Paramètres > API. Une clé n'est affichée qu'une seule fois, à sa création.
Ne les placez jamais dans une application mobile, dans du code JavaScript exécuté dans le navigateur ou dans un dépôt de code public. Si une clé a fuité, révoquez-la immédiatement et créez-en une nouvelle.
Messages
Envoyer un message
POST /messages envoie un message WhatsApp à un destinataire. L'API répond immédiatement avec le statut queued ; la livraison, la lecture ou l'échec vous sont ensuite signalés par webhook.
Message à partir d'un modèle
/messagesC'est le cas le plus courant : tout message que vous envoyez en premier doit utiliser un modèle validé par WhatsApp.
Paramètres du corps
tochaîneobligatoire- Numéro du destinataire au format international, par exemple
+2250700000000. templatechaîneobligatoire- Nom du modèle validé.
languagechaîne- Langue du modèle,
frpar défaut. variablestableauselon le modèle- Valeurs de
{{1}},{{2}}… dans l'ordre du modèle. header_media_urlchaîne- Image ou document d'en-tête, en
https, si le modèle en prévoit un. button_url_suffixchaîne- Fin de l'adresse du bouton lien, par exemple le numéro de commande.
referencechaîne- Votre identifiant interne, renvoyé dans les webhooks (64 caractères max.).
Réponse 202 Accepted
{
"id": "msg_01J8Q2Z7K4",
"status": "queued",
"to": "+2250700000000",
"template": "confirmation_commande",
"category": "utilitaire",
"units": 1,
"reference": "commande-4521",
"created_at": "2026-09-27T10:42:18Z"
}
units indique combien de messages de votre forfait cet envoi consomme : 1 en Afrique, 4 hors d'Afrique.
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/messages" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -H "Idempotency-Key: commande-4521-confirmation" \n -d '{
"to": "+2250700000000",
"template": "confirmation_commande",
"variables": [
"Aminata",
"4521",
"15 000"
],
"button_url_suffix": "4521",
"reference": "commande-4521"
}'
Message libre dans la fenêtre de 24 heures
/messagesQuand un client vous a écrit dans les dernières 24 heures, vous pouvez lui répondre sans modèle, avec type: "text". Hors de cette fenêtre, l'API refuse l'envoi avec l'erreur window_closed : utilisez alors un modèle.
tochaîneobligatoire- Numéro du client au format international.
typechaîneobligatoire- Toujours
"text"pour un message libre. textchaîneobligatoire- Contenu du message.
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/messages" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"to": "+2250700000000",
"type": "text",
"text": "Votre commande sera livrée entre 14 h et 16 h."
}'
Envoyer un code de vérification
/otp/sendGénère un code à 6 chiffres et l'envoie avec votre modèle d'authentification. Vous n'avez rien à stocker : conservez seulement l'otp_id renvoyé.
tochaîneobligatoire- Numéro du destinataire.
templatechaîneobligatoire- Modèle de catégorie
authentification. expires_inentier- Durée de validité en secondes, de 60 à 900.
{ "otp_id": "otp_01J8Q3A1BC", "status": "queued", "expires_at": "2026-09-27T10:52:18Z" }
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/otp/send" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"to": "+2250700000000",
"template": "code_connexion",
"expires_in": 600
}'
Vérifier un code
/otp/verifyVérifie le code saisi par l'utilisateur. Un code est valable pour une seule vérification réussie et au maximum 5 essais.
otp_idchaîneobligatoire- Identifiant renvoyé par
POST /otp/send. codechaîneobligatoire- Code à 6 chiffres saisi par l'utilisateur.
{ "valid": true }
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/otp/verify" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"otp_id": "otp_01J8Q3A1BC",
"code": "482913"
}'
Envoi groupé
/messages/batchAccepte jusqu'à 100 messages par requête, dans un tableau messages au même format qu'un envoi simple. La réponse contient un résultat par message, dans le même ordre : un message refusé n'empêche pas l'envoi des autres.
Pour les gros volumes, préférez cet endpoint aux envois un par un : il ménage votre limite de 20 requêtes par seconde.
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/messages/batch" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"messages": [
{
"to": "+2250700000000",
"template": "confirmation_commande",
"variables": [
"Aminata",
"4521",
"15 000"
]
},
{
"to": "+2250711111111",
"template": "commande_livree",
"variables": [
"Koffi",
"4522"
]
}
]
}'
Consulter un message
/messages/{id}Renvoie le message et son dernier statut.
| Statut | Signification |
|---|---|
queued | Accepté par l'API, en attente d'envoi |
sent | Transmis à WhatsApp |
delivered | Arrivé sur le téléphone du destinataire |
read | Lu par le destinataire, si ses accusés de lecture sont activés |
failed | Non livré ; le champ error en donne la raison |
Exemple de requête
curl -X GET "https://api.[votre-domaine]/v1/messages/msg_01J8Q2Z7K4" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Lister les messages
/messagesListe vos messages, par pages de 50, du plus récent au plus ancien.
statuschaîne- Filtre par statut :
queued,sent,delivered,read,failed. tochaîne- Filtre par destinataire.
referencechaîne- Filtre par votre identifiant interne.
since·untildate ISO 8601- Bornes de date de création.
Exemple de requête
curl -X GET "https://api.[votre-domaine]/v1/messages?status=delivered&since=2026-09-01T00:00:00Z" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Ne pas envoyer deux fois
Ajoutez un en-tête Idempotency-Key unique par envoi, par exemple commande-4521-confirmation. Si votre serveur renvoie la même requête après une coupure réseau, l'API renvoie la première réponse sans renvoyer le message. Une clé reste mémorisée 24 heures.
Réutiliser la même clé avec un contenu différent renvoie 409 idempotency_conflict.
Modèles
Modèles de messages
Un modèle doit être validé par WhatsApp avant tout envoi ; la validation prend en général de quelques minutes à 24 heures. Vous pouvez partir de notre bibliothèque de modèles prêts à l'emploi, ou créer les vôtres par l'API ou le tableau de bord.
Catégories
La catégorie détermine le prix et les règles d'usage. WhatsApp peut reclasser un modèle s'il ne correspond pas à la catégorie choisie.
| Catégorie | Usage | Exemples |
|---|---|---|
utilitaire | Information liée à une action du client | Confirmation de commande, suivi de livraison, rappel de paiement ou de rendez-vous |
authentification | Code à usage unique | Code de connexion ou de validation |
marketing | Tout message promotionnel | Soldes, nouveautés, relance de panier |
Un message utilitaire qui contient une promotion est classé en marketing, et facturé comme tel.
Créer un modèle
/templatesSoumet un modèle à la validation. Fournissez un exemple réaliste pour chaque variable : WhatsApp s'en sert pour juger le modèle.
Règles de nommage et de rédaction
- nom en minuscules, chiffres et tirets bas uniquement, 512 caractères au plus ;
- le texte ne commence ni ne finit par une variable, et deux variables ne se suivent pas ;
- 1 024 caractères au plus dans le corps, 60 dans le pied de page ;
- 3 boutons au plus.
Les modèles d'authentification ont un texte imposé par WhatsApp : vous choisissez seulement d'ajouter la mention de sécurité, la durée de validité et le bouton « Copier le code ».
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/templates" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"name": "livraison_en_cours",
"category": "utilitaire",
"language": "fr",
"body": "Bonjour {{1}}, votre commande n°{{2}} est en route. Le livreur vous appellera à l'''arrivée.",
"examples": [
"Aminata",
"4521"
],
"footer": "Boutique Chez Awa",
"buttons": [
{
"type": "url",
"text": "Suivre ma commande",
"url": "https://chezawa.ci/suivi/{{1}}",
"example": "4521"
}
]
}'
Suivre la validation
/templatesListe vos modèles et leur statut de validation.
| Statut | Signification |
|---|---|
pending | En cours d'examen par WhatsApp |
approved | Utilisable |
rejected | Refusé ; le champ rejection_reason indique pourquoi |
paused | Suspendu par WhatsApp après trop de signalements ou de blocages |
Vous êtes aussi prévenu par les webhooks template.approved, template.rejected et template.paused.
Exemple de requête
curl -X GET "https://api.[votre-domaine]/v1/templates" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Consulter un modèle
/templates/{name}Renvoie un modèle, son contenu et son statut.
Exemple de requête
curl -X GET "https://api.[votre-domaine]/v1/templates/confirmation_commande" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Supprimer un modèle
/templates/{name}Supprime le modèle. Un nom supprimé ne peut pas être réutilisé pendant 30 jours.
Exemple de requête
curl -X DELETE "https://api.[votre-domaine]/v1/templates/livraison_en_cours" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Webhooks
Webhooks
Les webhooks envoient à votre serveur, en temps réel, les changements de statut de vos messages et les réponses de vos clients. Vous déclarez une adresse https et les événements qui vous intéressent, dans Paramètres > API > Webhooks ou par l'API.
Déclarer un webhook
/webhooksurlchaîneobligatoire- Adresse
httpsde votre serveur. eventstableauobligatoire- Événements à recevoir (voir la liste ci-dessous).
{ "id": "wh_01J8Q4", "secret": "whsec_..." }
Le secret n'est affiché qu'à la création : conservez-le pour vérifier les signatures.
Exemple de requête
curl -X POST "https://api.[votre-domaine]/v1/webhooks" \n -H "Authorization: Bearer sk_test_VOTRE_CLE" \n -H "Content-Type: application/json" \n -d '{
"url": "https://chezawa.ci/api/whatsapp/webhook",
"events": [
"message.delivered",
"message.read",
"message.failed",
"message.received"
]
}'
Événements
| Événement | Envoyé quand |
|---|---|
message.sent | Le message a été transmis à WhatsApp |
message.delivered | Le message est arrivé sur le téléphone du destinataire |
message.read | Le destinataire a lu le message |
message.failed | Le message n'a pas pu être livré |
message.received | Un client vous a écrit ou a cliqué sur un bouton |
template.approved, template.rejected, template.paused | Le statut d'un modèle a changé |
limit.updated | Votre limite quotidienne de destinataires a changé |
quality.updated | La note de qualité de votre numéro a changé |
quota.low | Il reste moins de 20 % de votre forfait |
Format
{
"id": "evt_01J8Q5M2XR",
"type": "message.delivered",
"created_at": "2026-09-27T10:42:21Z",
"data": {
"message_id": "msg_01J8Q2Z7K4",
"to": "+2250700000000",
"status": "delivered",
"reference": "commande-4521"
}
}
Pour message.received, data contient l'expéditeur (from), le type (text, image, document, audio, location, button), le contenu et, s'il s'agit d'une réponse, l'identifiant du message d'origine (context.message_id).
Vérifier la signature
Chaque requête porte deux en-têtes : X-Signature-Timestamp et X-Signature, qui vaut sha256= suivi du HMAC-SHA256 de timestamp.corps_brut avec votre secret. Rejetez toute requête dont la signature ne correspond pas, ou dont l'horodatage a plus de 5 minutes.
const crypto = require("crypto");
function signatureValide(corpsBrut, timestamp, signature, secret) {
const attendu = "sha256=" + crypto
.createHmac("sha256", secret)
.update(timestamp + "." + corpsBrut)
.digest("hex");
const recent = Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;
return recent && crypto.timingSafeEqual(Buffer.from(attendu), Buffer.from(signature));
}
$attendu = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $corpsBrut, $secret);
$valide = hash_equals($attendu, $signature) && abs(time() - (int) $timestamp) < 300;
Répondre et gérer les relances
Répondez par un code 2xx en moins de 5 secondes, puis traitez l'événement en arrière-plan. Sans réponse 2xx, nous renvoyons l'événement jusqu'à 8 fois sur 24 heures, à intervalles croissants. Après 24 heures d'échecs, le webhook est désactivé et vous êtes prévenu par e-mail.
Un même événement peut arriver deux fois, et pas toujours dans l'ordre : utilisez son id pour ignorer les doublons, et ne faites jamais reculer un statut (un message read ne redevient pas delivered).
Limites
Limites
Trois limites s'appliquent : celle de WhatsApp sur le nombre de destinataires par jour, celle de l'API sur le nombre de requêtes, et celle de votre forfait. GET /account/usage les renvoie toutes les trois à tout moment.
Destinataires par 24 heures (règle WhatsApp)
WhatsApp limite le nombre de personnes différentes à qui vous pouvez écrire en premier sur 24 heures glissantes. Les messages envoyés à un client qui vous a écrit dans les dernières 24 heures ne comptent pas, et un même client ne compte qu'une fois, même s'il reçoit plusieurs messages.
| Niveau | Destinataires par 24 h | Comment l'atteindre |
|---|---|---|
| Départ | 250 | À la connexion du numéro, entreprise vérifiée ou non |
| 2 | 2 000 | Envois réguliers de bonne qualité, ou vérification de l'entreprise |
| 3 | 10 000 | Augmentation automatique selon le volume et la qualité |
| 4 | 100 000 | Augmentation automatique selon le volume et la qualité |
| 5 | Illimité | Augmentation automatique selon le volume et la qualité |
La limite est partagée entre tous les numéros de votre compte. Au-delà, l'API renvoie 429 messaging_limit_reached : réessayez après l'heure indiquée dans le champ retry_after. Le webhook limit.updated vous prévient quand votre niveau change.
Pour qu'un pic de confirmations ne bloque jamais les connexions, les 50 dernières places de la journée sont réservées aux codes de vérification. Vous pouvez modifier ou désactiver cette réserve dans Paramètres > API.
Requêtes par seconde
Chaque clé peut faire 20 requêtes par seconde. Au-delà, l'API renvoie 429 rate_limited avec l'en-tête Retry-After. Pour les gros volumes, utilisez POST /messages/batch plutôt que des envois un par un.
Forfait et consommation
/account/usageChaque envoi est décompté de votre forfait mensuel, puis de votre solde de recharge. Quand les deux sont épuisés, l'API renvoie 402 insufficient_quota. Le webhook quota.low vous prévient quand il reste moins de 20 % de votre forfait.
Réponse 200 OK
{
"plan": "api_pro",
"period_end": "2026-10-31",
"transactional": { "included": 3500, "used": 2140 },
"authentication": { "included": 500, "used": 212 },
"topup_balance_fcfa": 4000,
"messaging_limit": { "tier": 250, "used_last_24h": 183, "reserved_for_codes": 50 },
"quality": "high"
}
Exemple de requête
curl -X GET "https://api.[votre-domaine]/v1/account/usage" \n -H "Authorization: Bearer sk_test_VOTRE_CLE"
Erreurs
En cas d'erreur, l'API renvoie un code HTTP et un objet error avec un code stable, que votre programme peut tester, et un message en français, destiné à vos développeurs.
{
"error": {
"code": "template_not_approved",
"message": "Le modèle livraison_en_cours est en cours d'examen par WhatsApp.",
"request_id": "req_01J8Q6T0PZ"
}
}
Communiquez le request_id au support : il nous permet de retrouver votre requête.
| HTTP | Code | Cause | Que faire |
|---|---|---|---|
| 400 | invalid_request | Paramètre manquant ou mal formé | Corriger la requête d'après le message |
| 401 | invalid_api_key | Clé absente, erronée ou révoquée | Vérifier l'en-tête Authorization |
| 402 | insufficient_quota | Forfait et solde épuisés | Recharger ou changer de forfait |
| 403 | number_not_connected | Numéro WhatsApp déconnecté ou suspendu | Le reconnecter depuis le tableau de bord |
| 404 | template_not_found | Modèle inconnu dans cette langue | Vérifier le nom et language |
| 409 | idempotency_conflict | Même Idempotency-Key avec un contenu différent | Utiliser une clé unique par envoi |
| 422 | template_not_approved | Modèle en attente, refusé ou suspendu | Attendre la validation ou le corriger |
| 422 | variables_mismatch | Nombre de variables différent du modèle | Envoyer une valeur par variable |
| 422 | invalid_phone_number | Numéro mal écrit | Format international : +225… |
| 422 | window_closed | Message libre hors fenêtre de 24 h | Utiliser un modèle |
| 429 | messaging_limit_reached | Limite WhatsApp de destinataires atteinte | Réessayer après retry_after |
| 429 | rate_limited | Plus de 20 requêtes par seconde | Ralentir, respecter Retry-After |
| 500 | internal_error | Erreur de notre côté | Réessayer avec la même Idempotency-Key |
| 502 | whatsapp_unavailable | WhatsApp ne répond pas | Réessayer après quelques secondes |
Échecs après acceptation
Un message accepté (202) peut encore échouer à la livraison. Vous le saurez par le webhook message.failed, dont le champ error.code peut valoir :
| Code | Cause |
|---|---|
recipient_not_on_whatsapp | Le numéro n'a pas de compte WhatsApp |
recipient_blocked | Le destinataire a bloqué votre numéro |
marketing_not_delivered | WhatsApp a limité les messages marketing reçus par ce destinataire |
message_expired | Le téléphone est resté injoignable trop longtemps |
Ces messages ne sont pas décomptés de votre forfait.
Quand réessayer
Réessayez uniquement les erreurs 429, 500 et 502, avec un délai qui double à chaque essai (1 s, 2 s, 4 s…) et la même Idempotency-Key. Les erreurs 4xx restantes ne se corrigent pas en réessayant.
Forfaits et décompte
Chaque forfait API inclut un nombre de messages par mois, payé en FCFA par Orange Money, MTN ou Wave. Seuls les messages livrés sont décomptés ; les messages que vos clients vous envoient sont gratuits.
API Essentiel
10 000 FCFA / mois
- 1 200 messages transactionnels
- 200 codes de vérification
- Support WhatsApp
API Pro
25 000 FCFA / mois
- 3 500 messages transactionnels
- 500 codes de vérification
- Support prioritaire
API Volume
Sur devis
- Messages selon besoin
- Codes selon besoin
- Interlocuteur dédié
Tous les forfaits incluent la documentation, les webhooks, l'extension WooCommerce et 1 000 réponses libres par mois dans la fenêtre de 24 heures.
Au-delà du forfait
Les envois supplémentaires sont déduits de votre solde de recharge :
| Type de message | Prix |
|---|---|
| Message transactionnel (utilitaire) | 12 FCFA |
| Code de vérification | 20 FCFA |
| Réponse libre au-delà de 1 000 par mois | 12 FCFA |
| Message marketing (non inclus dans les forfaits API) | 50 FCFA |
Pays des destinataires
Un prix unique s'applique à toute l'Afrique de l'Ouest et du Centre. Un message envoyé hors d'Afrique compte pour 4 messages ; le champ units de chaque réponse indique ce décompte.
Report et validité
Les messages non utilisés passent sur le mois suivant si vous renouvelez votre forfait, puis expirent. Les recharges restent valables 3 mois.
Entreprises non vérifiées
Sans documents d'entreprise, vos envois sont limités à 250 destinataires par jour (voir Limites). C'est suffisant pour l'API Essentiel. Pour l'API Pro, nous vous accompagnons pour faire vérifier votre entreprise et lever cette limite.
Extension WooCommerce
L'extension WordPress envoie automatiquement vos messages WhatsApp à chaque étape d'une commande WooCommerce, sans écrire de code.
Installation
- Téléchargez l'extension depuis votre tableau de bord, dans Paramètres > API > WooCommerce.
- Dans WordPress, ouvrez Extensions > Ajouter > Téléverser une extension, choisissez le fichier, puis activez-la.
- Ouvrez WooCommerce > WhatsApp et collez votre clé API de production.
- Choisissez l'indicatif par défaut (
+225pour la Côte d'Ivoire) : il est ajouté aux numéros saisis sans indicatif par vos clients. - Associez un modèle à chaque étape de commande que vous voulez signaler.
Étapes et variables
| Étape WooCommerce | Modèle conseillé | Variables disponibles |
|---|---|---|
| Commande reçue (En attente, En cours) | confirmation_commande | Prénom, numéro de commande, montant |
| Commande expédiée (statut personnalisé) | livraison_en_cours | Prénom, numéro de commande, transporteur |
| Commande terminée | commande_livree | Prénom, numéro de commande |
| Commande annulée ou remboursée | commande_annulee | Prénom, numéro de commande, montant |
L'extension utilise le numéro de téléphone de facturation de la commande et envoie chaque message une seule fois par étape, même si le statut est modifié plusieurs fois.
Consentement
L'extension ajoute à la page de paiement une case « Recevoir le suivi de ma commande sur WhatsApp », cochée par défaut pour les messages transactionnels. Si le client la décoche, aucun message ne lui est envoyé. Aucun message marketing n'est envoyé par l'extension.
Journal
WooCommerce > WhatsApp > Journal affiche, pour chaque commande, les messages envoyés et leur statut (envoyé, livré, lu, échec). La même information apparaît dans les notes de la commande.
Bonnes pratiques et règles d'utilisation
La qualité de votre numéro dépend de la façon dont vos clients reçoivent vos messages : trop de blocages ou de signalements font baisser votre limite, puis suspendent vos modèles.
Ce que vous devez faire
- N'écrire qu'à des clients qui ont accepté de recevoir vos messages WhatsApp, et garder la trace de cet accord.
- Choisir la bonne catégorie de modèle, et envoyer les promotions séparément des messages transactionnels.
- Ajouter un bouton « Ne plus recevoir » à vos modèles marketing, et retirer immédiatement de vos listes les clients qui l'utilisent.
- Enregistrer les numéros au format international dès la saisie, par exemple
+2250700000000. - Conserver l'
idde chaque message et suivre les webhooks, plutôt qu'interroger l'API en boucle. - Tester avec une clé
sk_test_avant de passer en production.
Ce qui est interdit
L'utilisation de l'API doit respecter les règles de WhatsApp Business et nos conditions d'utilisation. Sont notamment interdits :
- les messages envoyés à des numéros achetés, collectés sans accord ou générés au hasard ;
- les offres trompeuses, promesses de gains, placements financiers non autorisés, jeux d'argent et prêts non agréés ;
- la vente de produits interdits par la loi ou par les règles de WhatsApp ;
- l'envoi de codes de vérification pour le compte d'un autre service que le vôtre.
En cas de non-respect, nous pouvons suspendre votre clé API sans préavis. Nous surveillons automatiquement les volumes inhabituels, les baisses de qualité et les modèles suspects, mais nous ne lisons pas vos conversations.
Données personnelles
Les numéros et messages de vos clients sont des données personnelles. Nous les conservons [durée de conservation] puis les supprimons, et vous restez responsable de l'information de vos clients sur l'usage de leur numéro, conformément à la loi ivoirienne sur la protection des données personnelles.
Support et versions
Notre équipe technique répond en français sur WhatsApp au [numéro WhatsApp] et par e-mail à [adresse e-mail], du lundi au samedi de [horaires]. Joignez toujours le request_id de la requête concernée.
L'état du service et les incidents en cours sont publiés sur [page d'état du service].
Versions
La version actuelle est v1, indiquée dans l'adresse de chaque requête. Nous pouvons ajouter des champs aux réponses et de nouveaux événements sans changer de version : votre code doit ignorer les champs qu'il ne connaît pas. Tout changement incompatible fera l'objet d'une nouvelle version, annoncée au moins 90 jours à l'avance.
| Date | Version | Changement |
|---|---|---|
| [date de lancement] | v1 | Première version publique |