/sessions/:sessionId/ et nécessitent le header x-api-key.
Envoyer un texte
POST /v1/sessions/:sessionId/send
Envoie un message texte à un contact individuel.
UUID de la session
Numéro de téléphone (sans
+) ou JID complet (22997000000@s.whatsapp.net)Texte du message
Réponse 200
Envoyer (sessionId en body)
POST /v1/sessions/api/send
Envoie un message avec le sessionId dans le corps — utile pour les intégrations sans paramètre URL dynamique.
UUID de la session
Numéro ou JID du destinataire
Texte du message
cURL
Envoyer un média
POST /v1/sessions/:sessionId/send-media
Envoie un média : image, vidéo, audio ou document.
Numéro ou JID du destinataire
Type de média :
image, video, audio, documentURL publique du fichier média
Type MIME du fichier
Légende affichée sous le média
Nom du fichier (pour
document)true pour envoyer en note vocale (audio uniquement)cURL
Message interactif
POST /v1/sessions/:sessionId/send-interactive
Envoie un message interactif avec boutons ou liste de sélection.
Numéro ou JID du destinataire
Texte principal du message
Titre affiché en haut du message
Texte affiché en bas du message
Boutons d’action (types :
reply, url, phone, copy)Sections de liste de sélection
type | Champs supplémentaires |
|---|---|
reply | text |
url | text, url |
phone | text, phoneNumber |
copy | text, copyCode |
Réponse 200
Document / Contact / Localisation
POST /v1/sessions/:sessionId/messages/rich
Envoie un document, un contact ou une localisation.
Numéro ou JID du destinataire
true si le destinataire est un groupeURL du document à envoyer
Nom du fichier
Nom du contact à partager
Téléphone du contact à partager
Latitude de la localisation
Longitude de la localisation
Nom du lieu
Adresse du lieu
Campagne
POST /v1/sessions/:sessionId/messages/campaign
Envoi en masse personnalisé avec template et délai anti-ban.
Liste des contacts — chaque entrée doit avoir
jid (requis) et
optionnellement nameTemplate du message. Utilisez
{name} pour personnaliser par contact.Délai en millisecondes entre chaque envoi (défaut :
0)cURL
Réponse 200
Envoi massif
POST /v1/sessions/:sessionId/messages/bulk-send
Alias de /v1/sessions/:sessionId/messages/campaign. Même corps et même réponse.
Variations
POST /v1/sessions/:sessionId/messages/variations
Envoie une variation aléatoire parmi plusieurs messages vers un même destinataire.
Numéro ou JID du destinataire
Liste des variantes du message à envoyer aléatoirement
true si le destinataire est un groupeDélai entre les envois en millisecondes
cURL
Réponse 200
Message programmé
POST /v1/sessions/:sessionId/messages/schedule
Programme un message texte en one-shot. Le job est persisté dans Redis via BullMQ — il survit aux redémarrages du serveur.
Numéro destinataire (ex :
22997000000)Texte du message
Date/heure précise d’envoi au format ISO 8601 (ex :
2026-05-21T18:00:00Z).
Prioritaire sur delayMs. Mode recommandé.Délai en millisecondes à partir de maintenant. Utilisé si
sendAt est absent.true si le destinataire est un groupeLe quota journalier est consommé au moment de la programmation, pas à
l’envoi. Si
sendAt est dans le passé, le message est envoyé immédiatement.cURL
Réponse 200
?status=PENDING. Une fois traité, le statut passe à SENT ou FAILED.
Message récurrent
POST /v1/sessions/:sessionId/messages/recurring
Programme un message récurrent envoyé à intervalles réguliers.
Numéro ou JID du destinataire
Texte du message
Intervalle de répétition en millisecondes (ex :
86400000 pour 24h)true si le destinataire est un groupecURL
Réponse 200
Simulation de saisie
POST /v1/sessions/:sessionId/messages/typing
Simule la saisie en cours puis envoie le message.
Numéro ou JID du destinataire
Texte à envoyer après la simulation de saisie
Durée de la simulation de saisie en millisecondes
true si le destinataire est un groupecURL
Réponse 200
Historique
GET /v1/sessions/:sessionId/messages
Historique des messages sortants enregistrés en base.
Nombre max de résultats (défaut :
50, max : 200)Filtre par statut :
PENDING, SENT, FAILEDFiltre par destinataire exact (JID)
cURL
Réponse 200
Messages reçus
GET /v1/sessions/:sessionId/incoming
Lit les messages reçus en temps réel (buffer en mémoire, sans base de données). Supporte le long-polling.
Nombre max de messages (défaut :
50, max : 200)Long-poll : attendre jusqu’à X ms un nouveau message (0–30000)
true = vide le buffer après lecture (défaut : true)cURL
Réponse 200
Envoi en masse — Par groupe de contacts
POST /v1/sessions/:sessionId/bulk/contact-group/:groupId
Envoie un message à tous les contacts d’un groupe. Voir Contacts & Groupes pour créer des groupes et y ajouter des contacts.
UUID de la session WhatsApp
ID du groupe de contacts
Texte du message. Supporte
{name}, {phone} et toute variable contact.Délai en ms entre chaque envoi. Recommandé : 2000–3000
Réponse 200
Envoi en masse — Par tag
POST /v1/sessions/:sessionId/bulk/tag/:tag
Envoie un message à tous les contacts portant un tag spécifique.
UUID de la session WhatsApp
Tag exact à cibler (sensible à la casse, ex :
vip)Texte du message. Supporte
{name}, {phone} et toute variable contact.Délai en ms entre chaque envoi. Recommandé : 2000–3000
Réponse 200
Groupe vs Tag — Pour l’envoi par groupe, le
groupId est dans l’URL (.../bulk/contact-group/:groupId). Pour l’envoi par tag, le tag est dans l’URL (.../bulk/tag/:tag). Les deux acceptent message et delayMs dans le corps. Voir les variables {name}, {phone}, {clé} dans Contacts & Groupes.
