Sign inGet Started

Webhooks de messages entrants WhatsApp

Quand un contact vous envoie un message, Bird pousse whatsapp.received vers votre endpoint. Le payload utilise l'enveloppe d'événement WhatsApp et contient les champs communs à tous les événements de message.

Le payload received

whatsapp.received ajoute le contenu du message aux champs communs à tous les événements de message, pour qu'un endpoint puisse agir sur un message entrant sans le relire. Un appui sur un message interactif arrive sous forme de interactive_reply, et in_reply_to_message_id indique le message auquel il répond :
Exemple de code
{
  "data": {
    "direction": "inbound",
    "from": {
      "display_name": "Alex Rivera",
      "phone_number": "+14155550100",
      "username": "alexr"
    },
    "in_reply_to_message_id": "wam_01ky7qbvswf3fvyaw3az90391c",
    "interactive_reply": {
      "list": {
        "description": "Next day to 2 days",
        "slug": "priority_express",
        "text": "Priority Mail Express"
      },
      "type": "list"
    },
    "metadata": null,
    "tags": null,
    "to": { "phone_number": "+13124495569" },
    "whatsapp_id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-07-23T14:52:04.118Z",
  "type": "whatsapp.received"
}
Les autres branches de contenu suivent la même structure exclusive : text, image, video, audio, sticker, document, location, contact_cards, et unsupported pour un type que API ne modélise pas. GET /v1/whatsapp/messages/{message_id} documente chacune d'entre elles.

Étapes suivantes