SMS log
The SMS log, the Messages page in the Bird dashboard, is your workspace's record of every message it has sent: every send made through POST /v1/sms/messages lands here, newest first. Use it to confirm a message went out, see where it is in the delivery lifecycle, and read its segment count, cost, and carrier detail. It is the per-message companion to the aggregate Metrics page: Metrics tells you the rates across everything you send, the SMS log lets you drill into a single message. The page also carries the Send SMS button for one-off sends from the dashboard. For a tour of where this page sits, see the dashboard tour.

The message list
Each row is one message. The columns are:
| Column | What it shows |
|---|---|
| Status | The message's current delivery status (see Statuses), shown as a color-coded indicator |
| From | The sender: the number, sender ID, or short code the message was sent from |
| To | The recipient's number |
| Message | The start of the message body (click it, or anywhere on the row, to open the message) |
| Category | The message category, shown as a short badge (TXN, MKTG, AUTH, SVC) |
| Sent | When the send was accepted, as a relative time (hover for the exact timestamp) |
The list is paginated, 25 messages per page; use Prev and Next to move between pages.
Searching and filtering
A message log fills up fast, so the page leads with a recipient search and four filters. They combine: a status filter plus a date range narrows to messages matching both.
Search by recipient. The search box matches an exact recipient number in E.164 format. Type the full number you sent to (e.g. +31612345678) to find every message addressed to it; it is not a substring search.
Status. Filter to one or more delivery statuses. Status is multi-select, so you can, say, show everything that didn't arrive by selecting Undelivered, Failed, and Expired together. The options are the statuses listed in Statuses.
Category. Filter by message category: Transactional, Marketing, Authentication, or Service.
Direction. Filter by Outbound or Inbound. Bird SMS is outbound-only today, so every message is Outbound; the Inbound option applies once receiving is available.
Date. Filter by when the message was sent; pick a preset or choose a custom range from the calendar.
When a filter combination matches nothing, the page shows a no-results state with a Clear filters action to reset back to the full list.
Statuses
A message's status is where it currently sits in the delivery lifecycle. A message walks from accepted toward a terminal receipt.
| Status | Meaning |
|---|---|
| Accepted | Bird admitted the message and is preparing to hand it to a carrier |
| Sent | Handed to the carrier; awaiting a delivery receipt |
| Delivered | The carrier confirmed delivery to the handset |
| Undelivered | A non-permanent non-delivery: the handset was off, unreachable, or the content was blocked |
| Failed | A permanent failure; the message will not be delivered |
| Rejected | The message was refused (a policy check, a failed charge, or a carrier that turned it away) |
| Expired | The message's validity window elapsed before a terminal receipt arrived |
| Scheduled | Queued to send at a future time; applies once send-later scheduling is available |
| Canceled | A scheduled message canceled before sending; applies once scheduling is available |
| Received | An inbound message; applies once receiving is available |
The indicator is color-coded: green for delivered and received, blue for in-flight (Accepted, Sent, Scheduled), a warning color for Undelivered and Expired, and a destructive color for Failed, Rejected, and Canceled.
Inspecting a message
Click any row to open the message in a side panel. It has two tabs, Events and Details, and its header shows the message body, the current status, the recipient, and the category. While a message is still in flight, the panel refreshes itself every few seconds, so a status change or a delivery receipt appears without a manual reload.

Events
The default tab is a timeline of everything that happened to the message, in order, each with its timestamp. This is the same event stream described in the SMS events, rendered for one message: Accepted, then Sent, then Delivered, or a failure event (Undelivered, Failed, Rejected, Expired). Delivery events show the carrier and MCC/MNC (the mobile network) they were confirmed on; failure events carry their error description inline (the error code is on the Details tab), so a failed message tells you why on its own timeline.
Details
The Details tab is the message's metadata:
- Message ID, Direction, From, To, and Category
- Segments: the billable segment count, the encoding (GSM_7BIT or UCS2), and the character count (see segments and encoding)
- Cost: the amount and currency, once the message has been priced
- Carrier and MCC/MNC: the delivering network, when known
- Validity period: the window the message stays valid for delivery, in seconds
- Sent, Handed to carrier, and Delivered timestamps
- Error: the description and code, on a message that didn't arrive
- Any Tags and Metadata you set on the send
Most fields can be copied with one click.
The same log over the API
The list behind this page is GET /v1/sms/messages, whose filters (status, category, tag, an exact recipient, a time window) cover the same searches the page offers. The per-message timeline the Events tab renders is not part of the public API today; to reconcile programmatically, read a message with GET /v1/sms/messages/{message_id}, whose status, sent_at, delivered_at, and last_error fields reflect the latest event, or consume webhook events as they happen.
Next steps
- SMS metrics: aggregate delivery, failure, segment, and spend numbers across everything you send
- SMS events: the full event vocabulary the timeline is built from
- Sending SMS: the send payload, including categories, tags, and metadata