Aller au contenu
Wbiztool

API de messagerie

API d'historique des messages

Obtenez la liste des messages de votre espace de travail sur une plage de dates, avec le statut de chacun. Utilisez-la pour rapprocher ce qui a été envoyé, créer des rapports ou retrouver les messages en échec à renvoyer.

POSThttps://wbiztool.com/api/v1/report/

Corps: JSON (nécessaire pour les pages après la première) ou champs de formulaire

L'historique couvre tous les messages de l'espace de travail de votre clé API, qu'ils aient été envoyés via l'API, le tableau de bord ou une campagne. Les résultats sont renvoyés par pages de 200, du plus ancien au plus récent. Les mêmes données sont disponibles sur la page Rapports.

Exemple rapide#

curl -X POST https://wbiztool.com/api/v1/report/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "start_date": "01-09-2026",
    "end_date": "08-09-2026",
    "page": 1
  }'

Remplacez 12345 et YOUR_API_KEY par vos propres valeurs. Consultez Authentification pour savoir où les trouver.

Paramètres de la requête#

Authentification

client_idintegerobligatoire

Votre ID client API, dans Paramètres → Clés API.

api_keystringobligatoire

Votre clé API, sur cette même page.

Filtres

start_datestringobligatoire

Premier jour à inclure, au format DD-MM-YYYY, par exemple 01-09-2026.

end_datestringobligatoire

Fin de la plage, au format DD-MM-YYYY. Ce jour lui-même n'est pas inclus. Consultez Plage de dates.

whatsapp_clientintegerfacultatif

Renvoie uniquement les messages envoyés depuis ce numéro WhatsApp, à l'aide de son ID indiqué dans les paramètres WhatsApp. Omettez-le pour obtenir les messages de tous vos numéros.

pageintegerfacultatif

Numéro de page, à partir de 1 (valeur par défaut). Chaque page contient jusqu'à 200 messages. Envoyez-le sous forme de nombre JSON. 0 ou un nombre négatif renvoie total avec un history vide.

Plage de dates#

Les dates sont interprétées comme minuit au début de ce jour, à l'heure normale de l'Inde (IST, UTC+5:30), et les messages sont sélectionnés selon leur date de création (mise en file d'attente ou planification), et non leur date d'envoi. La plage va de start_date 00:00 jusqu'à end_date 00:00, donc :

  • "start_date": "01-09-2026", "end_date": "08-09-2026" renvoie du 1er au 7 septembre. Le 8 septembre n'est pas inclus.
  • Pour obtenir une seule journée, définissez end_date sur le jour suivant : "start_date": "15-09-2026", "end_date": "16-09-2026".
  • Si les deux dates sont identiques, vous n'obtenez aucun message.

Pagination#

Chaque réponse contient total, le nombre de messages sur toute la plage, et jusqu'à 200 d'entre eux dans history. Demandez les page 2, 3 et ainsi de suite jusqu'à ce que page × 200 soit supérieur ou égal à total.

Réponse#

Une requête réussie renvoie le code HTTP 200 :

{
  "message": "Success",
  "status": 0,
  "total": 3,
  "history": [
    { "id": 9817263, "msg_type": "Text", "contact": "919876543210", "message_status": "Sent" },
    { "id": 9817264, "msg_type": "File", "contact": "919812345670", "message_status": "Failed" },
    { "id": 9817265, "msg_type": "Image", "contact": "Sales Team Mumbai", "message_status": "Pending" }
  ]
}
ChampTypeDescription
messagestringSuccess lorsque la requête a réussi, sinon l'erreur.
statusintegerToujours 0. Ne l'utilisez pas pour détecter un succès.
totalintegerNombre de messages dans la plage de dates, toutes pages confondues. Présent uniquement en cas de succès.
historyarrayJusqu'à 200 messages sur cette page, du plus ancien au plus récent. Vide en cas d'erreur.
history[].idintegerID du message, identique au msg_id renvoyé lors de son envoi.
history[].msg_typestringText, Image ou File.
history[].contactstringLe numéro de téléphone du destinataire avec l'indicatif pays, ou le nom du groupe pour les messages de groupe.
history[].message_statusstringConsultez le tableau ci-dessous.

Valeurs de statut des messages#

message_statusSignification
PendingEn file d'attente ou planifié, pas encore envoyé (statut 0).
SentEnvoyé depuis votre numéro WhatsApp (statut 1).
DeliveredRéservé, non renvoyé actuellement.
ReadRéservé, non renvoyé actuellement.
FailedN'a pas pu être envoyé, ou l'envoi a été interrompu (statut 2). Utilisez Statut du message pour consulter l'error.
CancelledAnnulé avant d'être envoyé (statut 3).
ExpiredNon envoyé avant son délai expire_after_seconds (statut 4).

Les coches de remise et de lecture ne sont pas enregistrées pour le moment : les messages envoyés apparaissent donc toujours comme Sent. Delivered et Read sont des valeurs réservées ; si elles apparaissent un jour, traitez-les comme Sent.

Erreurs#

Les erreurs renvoient le code HTTP 200 avec status à 0, sauf indication contraire :

{ "message": "Error", "status": 0, "history": [] }
MessageComment corriger
Errorstart_date ou end_date est absent ou n'est pas au format DD-MM-YYYY, le corps JSON n'est pas valide (souvent à cause d'une virgule finale), ou la requête n'était pas un POST.
Auth ErrorEnvoyez à la fois client_id et api_key.
Invalid Client IdEnvoyez client_id sous forme de nombre. Renvoyé avec le code HTTP 403, sans history.
Auth Error: invalid api keyVérifiez que la clé existe, n'a pas été supprimée et appartient à ce client_id. Renvoyé avec le code HTTP 400, sans history.
Demo Account can not access apisUtilisez un compte standard.

Conseils#

  • Récupérez l'historique par petites plages : une journée ou une semaine à la fois limite le nombre de pages.
  • Retrouvez les messages en échec : filtrez history sur Failed, puis appelez Statut du message avec chaque id pour connaître la raison de l'échec. Avant de réessayer, vérifiez l'error : Sending was interrupted and may have been delivered… signifie que le destinataire a peut-être déjà reçu le message.
  • Les anciens messages sont purgés : les messages qui ont atteint un statut final et n'ont pas changé depuis environ 90 jours peuvent être purgés et ne plus apparaître ici, de même que les messages toujours en file d'attente 90 jours après leur création ou leur date programmée, sur un numéro déconnecté ou supprimé.
  • Suivi en temps réel : pour réagir dès l'envoi des messages, transmettez un webhook lorsque vous envoyez le message au lieu d'interroger régulièrement cet endpoint.