WaziBot
Fonctionnalités Tarifs FAQ Guide Connexion Rejoindre la liste

API WaziBot

Envoyez des messages WhatsApp et vérifiez des numéros par code (OTP) depuis votre code, sur l'API officielle de Meta. Réservée aux plans Pro et Agence.

Spécification OpenAPI : /api/openapi.json (importable dans Swagger UI, Postman, Insomnia).

Authentification

Générez un token depuis votre tableau de bord, page API (plans Pro et Agence). Le token est affiché une seule fois : conservez-le côté serveur, jamais dans un navigateur ou une app mobile. Passez-le en en-tête sur chaque requête :

Authorization: Bearer VOTRE_TOKEN
URL de base
https://wazibot.com/api/v1
Format
JSON en requête et en réponse
Numéro d'envoi
Celui rattaché au token
Numéros (champ to)
Format international sans le +, ex. 221771234567

Limites et quotas

  • Débit API : les requêtes sont limitées par minute et par token. Un dépassement renvoie 429.
  • Quota d'envoi : chaque envoi de production compte dans votre quota journalier. Quota atteint, plafond horaire ou contact bloqué renvoient 429.
  • Fenêtre de 24h : le texte libre et les médias ne sont autorisés que si le contact vous a écrit dans les dernières 24h. En dehors, passez par un template approuvé (réponse 422 window_closed sinon).
  • OTP : nombre d'envois par numéro et par jour, et nombre de tentatives de vérification par code, tous deux plafonnés.

Codes de réponse

200 Succès (vérification OTP notamment).
201 Message ou code accepté et transmis.
401 Token absent, invalide ou révoqué.
403 Plan sans accès API (Pro ou Agence requis).
422 Données invalides, template introuvable, ou fenêtre 24h fermée.
429 Débit, quota ou plafond atteint.
502 Envoi refusé par WhatsApp (paramètre de template invalide, etc.).

Les erreurs renvoient un objet {"error": "slug", "message": "..."} ; le champ error est stable et sûr à tester en code.

Endpoints

POST /api/v1/send/text

Envoi d'un message texte libre. Nécessite une fenêtre de 24h ouverte.

Paramètres

to string requis Numéro destinataire, format international sans +.
body string requis Contenu du message (4096 caractères max).

Exemple

curl -X POST https://wazibot.com/api/v1/send/text \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567","body":"Bonjour, votre commande est prête."}'

Réponses

  • 201 Accepté : {"id","to","status":"sent"}.
  • 422 window_closed : fenêtre 24h fermée, utilisez un template.
  • 429 Quota ou plafond d'envoi atteint.
POST /api/v1/send/template

Envoi d'un template approuvé. Autorisé hors fenêtre 24h.

Paramètres

to string requis Numéro destinataire.
template string requis Nom court du template approuvé pour votre organisation.
language string optionnel Code langue, par défaut celui du template (ex. fr).
components array optionnel Variables du template au format Meta (body, buttons...).

Exemple

curl -X POST https://wazibot.com/api/v1/send/template \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567","template":"confirmation_commande","language":"fr","components":[]}'

Réponses

  • 201 Accepté : {"id","to","status":"sent"}.
  • 422 template_not_found : template inconnu ou non approuvé.
  • 502 whatsapp_api_error : rejet Meta (variable manquante, etc.).
POST /api/v1/send/image

Envoi d'une image par URL. Fenêtre de 24h requise.

Paramètres

to string requis Numéro destinataire.
link string requis URL publique de l'image.
caption string optionnel Légende (1024 caractères max).

Exemple

curl -X POST https://wazibot.com/api/v1/send/image \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567","link":"https://exemple.com/image.jpg","caption":"Notre nouveaute"}'

Réponses

  • 201 Accepté.
  • 422 window_closed hors fenêtre 24h.
POST /api/v1/send/document

Envoi d'un document par URL. Fenêtre de 24h requise.

Paramètres

to string requis Numéro destinataire.
link string requis URL publique du document.
filename string optionnel Nom de fichier affiché.
caption string optionnel Légende.

Exemple

curl -X POST https://wazibot.com/api/v1/send/document \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567","link":"https://exemple.com/facture.pdf","filename":"facture.pdf"}'

Réponses

  • 201 Accepté.
  • 422 window_closed hors fenêtre 24h.
POST /api/v1/otp/send

Envoi d'un code de vérification (OTP). WaziBot génère le code, l'envoie depuis votre numéro via votre template d'authentification approuvé, et gère l'expiration. Vous ne stockez aucun code.

Paramètres

to string requis Numéro WhatsApp à vérifier.
template string optionnel Nom du template d'authentification, par défaut otp_verification.
language string optionnel Code langue, par défaut celui du template.

Exemple

curl -X POST https://wazibot.com/api/v1/otp/send \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567"}'

Réponses

  • 201 Envoyé : {"to","status":"sent","expires_in"} (durée en secondes).
  • 422 template_not_found : template d'authentification absent ou non approuvé.
  • 429 otp_rate_limited : trop de codes demandés pour ce numéro aujourd'hui.
  • 502 whatsapp_api_error : rejet Meta.
POST /api/v1/otp/verify

Vérification du code saisi par l'utilisateur. Le code est consommé au premier succès.

Paramètres

to string requis Numéro vérifié précédemment.
code string requis Code reçu par l'utilisateur.

Exemple

curl -X POST https://wazibot.com/api/v1/otp/verify \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"to":"221771234567","code":"123456"}'

Réponses

  • 200 Vérifié : {"to","verified":true}.
  • 422 invalid_or_expired : code faux, expiré ou déjà utilisé ({"verified":false}).
  • 429 too_many_attempts : trop de tentatives pour ce code.
GET /api/v1/status

État de votre numéro : statut, quality rating, tier de messagerie et plan.

Réponses

  • 200 Objet d'état du numéro.
POST /api/v1/webhook

Configuration de l'URL de réception des messages entrants (signés HMAC).

Paramètres

url string requis URL HTTPS de réception.
secret string optionnel Secret partagé pour la signature.

Exemple

curl -X POST https://wazibot.com/api/v1/webhook \ -H "Authorization: Bearer VOTRE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://votre-site.com/webhook","secret":"un_secret"}'

Réponses

  • 200 URL enregistrée.

Vérifier un numéro par OTP

Le parcours en deux appels, la logique du code reste chez WaziBot :

  1. Votre application appelle POST /otp/send avec le numéro. L'utilisateur reçoit le code sur WhatsApp.
  2. Votre application appelle POST /otp/verify avec le code saisi. La réponse indique s'il est valide.

Prérequis : un template d'authentification approuvé par Meta sur votre numéro (fourni par l'équipe WaziBot). Le code expire au bout de la durée renvoyée dans expires_in, et il est invalidé après un nombre limité de tentatives.