Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.waaconnect.com/llms.txt

Use this file to discover all available pages before exploring further.

Toutes les routes de messagerie sont préfixées par /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.
sessionId
string
required
UUID de la session
to
string
required
Numéro de téléphone (sans +) ou JID complet (22997000000@s.whatsapp.net)
message
string
required
Texte du message
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/send \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to": "22997000000", "message": "Bonjour, votre commande est prête."}'
Réponse 200
{ "ok": true, "id": "uuid-message-451" }

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.
sessionId
string
required
UUID de la session
to
string
required
Numéro ou JID du destinataire
message
string
required
Texte du message
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/api/send \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"sessionId": "uuid-session-12", "to": "22997000000", "message": "Message API direct"}'

Envoyer un média

POST /v1/sessions/:sessionId/send-media Envoie un média : image, vidéo, audio ou document.
to
string
required
Numéro ou JID du destinataire
mediaType
string
required
Type de média : image, video, audio, document
url
string
required
URL publique du fichier média
mimetype
string
Type MIME du fichier
caption
string
Légende affichée sous le média
filename
string
Nom du fichier (pour document)
ptt
boolean
true pour envoyer en note vocale (audio uniquement)
{
  "to": "22997000000",
  "mediaType": "image",
  "url": "https://example.com/media/promo.jpg",
  "caption": "Promo de la semaine",
  "mimetype": "image/jpeg"
}
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/send-media \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to": "22997000000", "mediaType": "image", "url": "https://example.com/promo.jpg", "caption": "Promo"}'

Message interactif

POST /v1/sessions/:sessionId/send-interactive Envoie un message interactif avec boutons ou liste de sélection.
chatId
string
required
Numéro ou JID du destinataire
body
string
required
Texte principal du message
header
string
Titre affiché en haut du message
Texte affiché en bas du message
buttons
array
Boutons d’action (types : reply, url, phone, copy)
sections
array
Sections de liste de sélection
Types de boutons
typeChamps supplémentaires
replytext
urltext, url
phonetext, phoneNumber
copytext, copyCode
{
  "chatId": "22997000000",
  "header": "Offre spéciale",
  "body": "Choisissez une option",
  "footer": "Validité 24h",
  "buttons": [
    { "type": "reply", "text": "Je confirme" },
    { "type": "url", "text": "Voir détails", "url": "https://waaconnect.com/offre" }
  ]
}
Réponse 200
{ "ok": true, "id": "uuid-message-451" }

Document / Contact / Localisation

POST /v1/sessions/:sessionId/messages/rich Envoie un document, un contact ou une localisation.
to
string
required
Numéro ou JID du destinataire
isGroup
boolean
true si le destinataire est un groupe
documentUrl
string
URL du document à envoyer
fileName
string
Nom du fichier
contactName
string
Nom du contact à partager
contactPhone
string
Téléphone du contact à partager
latitude
number
Latitude de la localisation
longitude
number
Longitude de la localisation
locationName
string
Nom du lieu
locationAddress
string
Adresse du lieu
{
  "to": "22997000000",
  "documentUrl": "https://example.com/docs/facture.pdf",
  "fileName": "facture.pdf",
  "mimetype": "application/pdf"
}

Campagne

POST /v1/sessions/:sessionId/messages/campaign Envoi en masse personnalisé avec template et délai anti-ban.
contacts
array
required
Liste des contacts — chaque entrée doit avoir jid (requis) et optionnellement name
template
string
Template du message. Utilisez {name} pour personnaliser par contact.
delayMs
number
Délai en millisecondes entre chaque envoi (défaut : 0)
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/messages/campaign \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {"jid": "22997000000@s.whatsapp.net", "name": "Aicha"},
      {"jid": "22996000000@s.whatsapp.net", "name": "Koffi"}
    ],
    "template": "Bonjour {name}, votre livraison part aujourd'\''hui.",
    "delayMs": 3000
  }'
Réponse 200
{ "ok": true, "count": 2 }

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.
to
string
required
Numéro ou JID du destinataire
variations
array
required
Liste des variantes du message à envoyer aléatoirement
isGroup
boolean
true si le destinataire est un groupe
delayMs
number
Délai entre les envois en millisecondes
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/messages/variations \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "22997000000",
    "variations": ["Salut Aicha", "Bonjour Aicha", "Hello Aicha"],
    "delayMs": 1200
  }'
Réponse 200
{
  "ok": true,
  "count": 3,
  "sent": ["Salut Aicha", "Bonjour Aicha", "Hello Aicha"]
}

Message programmé

POST /v1/sessions/:sessionId/messages/schedule Programme un message texte en one-shot, envoyé après un délai.
to
string
required
Numéro ou JID du destinataire
message
string
required
Texte du message
delayMs
number
required
Délai avant envoi en millisecondes
isGroup
boolean
true si le destinataire est un groupe
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/messages/schedule \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to": "22997000000", "message": "Rappel de rendez-vous à 18h", "delayMs": 600000}'
Réponse 200
{ "ok": true, "scheduledInMs": 600000 }

Message récurrent

POST /v1/sessions/:sessionId/messages/recurring Programme un message récurrent envoyé à intervalles réguliers.
to
string
required
Numéro ou JID du destinataire
message
string
required
Texte du message
everyMs
number
required
Intervalle de répétition en millisecondes (ex : 86400000 pour 24h)
isGroup
boolean
true si le destinataire est un groupe
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/messages/recurring \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to": "22997000000", "message": "Rappel quotidien", "everyMs": 86400000}'
Réponse 200
{
  "ok": true,
  "recurringEveryMs": 86400000,
  "timerId": "Timeout(12)"
}

Simulation de saisie

POST /v1/sessions/:sessionId/messages/typing Simule la saisie en cours puis envoie le message.
to
string
required
Numéro ou JID du destinataire
text
string
required
Texte à envoyer après la simulation de saisie
delayMs
number
Durée de la simulation de saisie en millisecondes
isGroup
boolean
true si le destinataire est un groupe
cURL
curl -X POST https://api.waaconnect.com/v1/sessions/uuid-session-12/messages/typing \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to": "22997000000", "text": "Je vous écris tout de suite...", "delayMs": 2000}'
Réponse 200
{ "ok": true }

Historique

GET /v1/sessions/:sessionId/messages Historique des messages sortants enregistrés en base.
limit
integer
Nombre max de résultats (défaut : 50, max : 200)
status
string
Filtre par statut : PENDING, SENT, FAILED
to
string
Filtre par destinataire exact (JID)
cURL
curl "https://api.waaconnect.com/v1/sessions/uuid-session-12/messages?limit=10&status=SENT" \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx"
Réponse 200
{
  "count": 2,
  "items": [
    {
      "id": "uuid-message-451",
      "sessionId": "uuid-session-12",
      "toNumber": "22997000000@s.whatsapp.net",
      "content": "Bonjour, votre commande est prête.",
      "status": "SENT",
      "sentAt": "2026-03-26T16:30:10.000Z",
      "createdAt": "2026-03-26T16:30:08.000Z"
    },
    {
      "id": "uuid-message-450",
      "sessionId": "uuid-session-12",
      "toNumber": "22996000000@s.whatsapp.net",
      "content": "Rappel de rendez-vous à 18h",
      "status": "FAILED",
      "sentAt": null,
      "createdAt": "2026-03-26T16:29:00.000Z"
    }
  ]
}

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.
limit
integer
Nombre max de messages (défaut : 50, max : 200)
waitMs
integer
Long-poll : attendre jusqu’à X ms un nouveau message (0–30000)
consume
boolean
true = vide le buffer après lecture (défaut : true)
cURL
curl "https://api.waaconnect.com/v1/sessions/uuid-session-12/incoming?waitMs=5000&consume=true" \
  -H "x-api-key: wac_xxxxxxxxxxxxxxxx"
Réponse 200
{
  "count": 1,
  "consumed": true,
  "items": [
    {
      "eventId": 17,
      "sessionId": "uuid-session-12",
      "chatId": "22997000000@s.whatsapp.net",
      "from": "22997000000@s.whatsapp.net",
      "fromMe": false,
      "type": "conversation",
      "content": "Bonjour, vous êtes dispo ?",
      "pushName": "Aicha",
      "messageTimestamp": 1774511000,
      "receivedAt": "2026-03-26T18:12:10.000Z"
    }
  ]
}