Sign inGet Started

List events for a WhatsApp message

GET
/v1/whatsapp/messages/{message_id}/events
const { data } = await bird.whatsapp.listEvents("wa_abc123");
for (const event of data) console.log(event.type, event.occurred_at);
Antwort200
{
  "data": [
    {
      "id": "ev_01kya19f8p2hs5w1y7k4cmqrtv",
      "type": "whatsapp.sent",
      "occurred_at": "2026-09-15T14:03:11Z"
    },
    {
      "id": "ev_01kya19f2m8xqe4v0t6r3bnpcd",
      "type": "whatsapp.delivered",
      "occurred_at": "2026-09-15T14:03:12Z",
      "recipient": {
        "phone_number": "+15550002222",
        "bsuid": "US.AbC1"
      }
    }
  ]
}

Returns a WhatsApp message's lifecycle events in chronological order, one entry per delivery transition (whatsapp.accepted, whatsapp.sent, whatsapp.delivered, whatsapp.read, whatsapp.failed). The timeline is bounded and returned in full, so this list is not paginated; an unknown message ID returns 404. For the message's current state in a single field, use Get a WhatsApp message instead.

Parameter

message_idstring

ID of the message, as returned in the send response's id field.

Abfrageparameter

typestring

Keep only events of this exact type (for example whatsapp.delivered or whatsapp.failed). Omit for the full timeline.

Possible values (may grow over time): whatsapp.accepted, whatsapp.delivered, whatsapp.failed, whatsapp.read, whatsapp.received, whatsapp.rejected, whatsapp.sent

Antwort-Payload

data
array of object
erforderlich

Timeline events for this WhatsApp message, in chronological order. The timeline is bounded and returned in full; this list is not paginated.

Untergeordnete Attribute anzeigen
data.id
string
erforderlich

ID of the event, unique within the message's timeline.

data.type
string
erforderlich

Message timeline event type:

  • whatsapp.accepted: The API accepted the request.
  • whatsapp.sent: The message reached the WhatsApp network.
  • whatsapp.delivered: Delivery to the recipient's device was confirmed.
  • whatsapp.read: The message was read. On an outbound message the recipient opened it; on an inbound one Bird acknowledged it to WhatsApp for the business, which is what a read receipt records.
  • whatsapp.failed: Delivery failed permanently.
  • whatsapp.rejected: The message was refused before sending and not charged.
  • whatsapp.received: An inbound message arrived from the contact.

This is an open enum. Accept unrecognized values.

Possible values (may grow over time): whatsapp.accepted, whatsapp.delivered, whatsapp.failed, whatsapp.read, whatsapp.received, whatsapp.rejected, whatsapp.sent

data.occurred_at
string
erforderlich

When this event occurred.

data.recipient
object

The participant this confirmation is about, on a group message. Present only on whatsapp.delivered and whatsapp.read, the two events a group send fans out: one per participant, so a group of eight produces up to eight of each. The rest describe the message as a whole and carry no recipient, because there is one hand-off to the WhatsApp network and one way for that to be refused. Absent on a one-to-one message, whose to already names its recipient. Never carries group_id: the group belongs to the message's to, not to a participant.

Untergeordnete Attribute anzeigen
data.error
nullable object

Failure detail. Present only on whatsapp.failed and whatsapp.rejected events.

Untergeordnete Attribute anzeigen