Sign inGet Started

List received emails

GET
/v1/email/inbound-messages
bird email inbound-messages list
Response200
{
  "data": [
    {
      "id": "rem_01krdgeqcxet5s7t44vh8rt9mg",
      "from": {
        "email": "jane@acme.com",
        "name": "Jane Doe"
      },
      "to": [
        {
          "email": "jane@acme.com",
          "name": "Jane Doe"
        }
      ],
      "cc": [
        {
          "email": "jane@acme.com",
          "name": "Jane Doe"
        }
      ],
      "subject": "Re: Your receipt",
      "message_id": "<CAH+T8d5...@mail.gmail.com>",
      "in_reply_to": "<previous-message@example.com>",
      "authentication": "pass",
      "attachments": [
        {
          "id": "rea_01krdgeqcxet5s7t44vh8rt9mg",
          "filename": "invoice.pdf",
          "content_type": "application/pdf",
          "size": 215432
        }
      ]
    }
  ],
  "next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
  "prev_cursor": null,
  "refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9"
}

Returns a paginated list of received emails for the workspace, newest first. Filter by sender address, by the inbound address that received the mail, or by a received-time range. Received emails are retained for 30 days.

Query Parameters

fromstring

Filter to messages whose sender address matches this value exactly. Sender addresses are stored lowercase, so pass the address in lowercase to match reliably.

inbound_address_idstring

Filter to messages received on a specific inbound address.

received_afterstring

Filter to messages received at or after this time.

received_beforestring

Filter to messages received at or before this time.

limitinteger

Maximum number of items to return per page.

starting_afterstring

Cursor from the next_cursor field of a previous list response. Returns items immediately after the cursor position in the current sort order.

ending_beforestring

Cursor from the prev_cursor or refresh_cursor field of a previous list response. Returns items immediately before the cursor position in the current sort order. prev_cursor returns the preceding page. refresh_cursor anchors at the first row of that response, which on a newest-first sort is how to fetch the items that have appeared since.

Response Payload

data
array of object
required

Page of received emails, newest first.

Show child attributes
data.id
string
required

Received message ID.

data.from
object
required

Sender address parsed from the message.

Show child attributes
data.from.email
string
required

Email address.

data.from.name
string

Display name shown alongside the address in mail clients.

data.to
array of object
required

Recipients on the message's To header.

Show child attributes
data.to.email
string
required

Email address.

data.to.name
string

Display name shown alongside the address in mail clients.

data.cc
array of object
required

Recipients on the message's Cc header.

Show child attributes
data.cc.email
string
required

Email address.

data.cc.name
string

Display name shown alongside the address in mail clients.

data.subject
nullable string
required

Subject line as received, or null when the message had no subject.

data.message_id
nullable string
required

RFC 5322 Message-ID header from the sender, or null when the sender did not include one.

data.in_reply_to
nullable string
required

The In-Reply-To header, which holds the Message-ID this message is replying to. null when the message is not a reply.

data.references
array of string

The References header, which holds every Message-ID in this conversation, oldest first. Left out when the message arrived without one.

data.thread_id
nullable string
required

Conversation this message belongs to, or null when it is not grouped into one.

data.authentication
nullable string
required

DMARC result for the domain in the received message's From header.

  • pass: SPF or DKIM passed and aligned with that domain.
  • fail: DMARC was evaluated and did not pass.
  • unknown: no trustworthy verdict is available.

This follows dmarc_pass and does not verify a particular person. The receiving provider currently supplies no DMARC result, so received messages report unknown.

Possible values: pass, fail, unknown, null

data.spf_pass
nullable boolean
required

Whether the receiving provider reports that SPF authorized the envelope sender for the sending server. A soft failure is false. Missing, neutral and inconclusive results are null.

data.dkim_pass
nullable boolean
required

Whether the receiving provider verified a DKIM signature. A passing signature makes this true even when another signature fails. Missing signatures and inconclusive verification results are null.

data.dmarc_pass
nullable boolean
required

Whether SPF or DKIM passed and aligned with the domain in the message's From header. The receiving provider currently supplies no DMARC result, so this is null.

data.spam_score
nullable number
required

Content spam score when available. The receiving provider currently supplies no score, so this is null.

data.attachments
array of object
required

Metadata for each attachment found on the message. Empty when the message had no attachments.

Show child attributes
data.attachments.id
string
required

Attachment ID, stable within the received message.

data.attachments.filename
nullable string
required

Filename from the attachment's Content-Disposition, or null when the sender did not name the part.

data.attachments.content_type
nullable string
required

MIME type parsed from the attachment part, or null when absent.

data.attachments.size
integer
required

Size of the attachment in bytes.

data.received_at
string
required

When the message was received.

next_cursor
nullable string
required

Cursor for the next page. Pass back as starting_after to advance forward. null when no next page exists.

prev_cursor
nullable string
required

Cursor for the previous page. Pass back as ending_before to step backward. null when no previous page exists.

refresh_cursor
nullable string
required

Refresh anchor, the first row of this response. Pass back as ending_before to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-null whenever data is non-empty; null only on an empty page. Distinct from prev_cursor.