List events for an SMS message
/v1/sms/messages/{message_id}/eventsconst events = await bird.sms.listEvents("sms_abc123");
for (const event of events.data ?? []) {
console.log(event.type, event.occurred_at);
}events = client.sms.list_events("sms_abc123")
for event in events.data:
print(event.type, event.occurred_at)events, err := client.Sms.ListEvents(context.Background(), "sms_01j9x2k3m4n5p6q7r8s9t0v1w2", bird.SmsListEventsParams{})
if err != nil {
log.Fatal(err)
}
for _, e := range events.Data {
fmt.Println(*e.Type, *e.OccurredAt)
}$events = $bird->sms->listEvents('sms_abc123');
foreach ($events->getData() ?? [] as $event) {
echo $event->getType(), ' ', $event->getOccurredAt()?->format(DATE_ATOM), PHP_EOL;
}bird sms list-events <message-id>curl -X GET "https://us1.platform.bird.com/v1/sms/messages/{message_id}/events" \
-H "Authorization: Bearer $TOKEN"{
"data": [
{
"id": "evt_01krdgeqcxet5s7t44vh8rt9mg",
"type": "sms.delivered",
"occurred_at": "2026-05-21T12:00:04Z",
"carrier": "Verizon",
"mcc_mnc": "311480",
"error": {
"code": "invalid_destination",
"description": "Carrier filtered as spam"
}
}
]
}
Returns the lifecycle event timeline for a message, in chronological order.
Parameters
message_idstringID of the SMS message (sms_ prefix), as returned when the message was accepted.
Query Parameters
typestringFilter by event type, such as sms.delivered or sms.failed.
Response Payload
dataTimeline events for this SMS message, in chronological order. The bounded timeline is returned in full and is not paginated.
Show child attributes
data.idUnique identifier for this event, stable across repeated fetches of the message.
data.typeLifecycle event type. The sms.accepted event means the API accepted the request. The sms.sent event means the message reached the carrier. The sms.delivered event confirms delivery. The sms.undelivered, sms.failed, and sms.expired events describe delivery failures. The sms.rejected event means the message was refused before carrier handoff. This is an open enum. Accept unrecognized values.
Possible values (may grow over time): sms.accepted, sms.sent, sms.delivered, sms.undelivered, sms.failed, sms.rejected, sms.expired
data.occurred_atWhen this event occurred.
data.carrierCarrier that handled the message. Present on sms.sent and sms.delivered once identified, absent otherwise.
data.mcc_mncMobile country code and mobile network code of the carrier. Present on sms.sent and sms.delivered once identified, absent otherwise.
data.errorFailure detail. Present only on sms.failed, sms.undelivered, sms.rejected, and sms.expired events.
Related resources
Continue with the documentation, guides and examples for this topic.