Sign inGet Started

Get a message in a thread

GET
/v1/email/threads/{thread_id}/messages/{message_id}
const msg = await bird.email.threads.messages.get("thr_01abc", "rem_01xyz");
console.log(msg.direction); // "inbound"
Réponse200
{
  "id": "rem_01krdgeqcxet5s7t44vh8rt9mg",
  "direction": "inbound",
  "channel": "email",
  "thread_id": "thr_01krdgeqcxet5s7t44vh8rt9mg",
  "subject": "Re: Your order",
  "labels": [
    "inbox",
    "unread"
  ],
  "recipients": [
    {
      "status": "delivered"
    }
  ],
  "authentication": "pass",
  "attachment_manifest": [
    {
      "id": "rea_01krdgeqcxet5s7t44vh8rt9mg",
      "filename": "invoice.pdf",
      "content_type": "application/pdf"
    }
  ],
  "contact_id": "con_01krdgeqcxet5s7t44vh8rt9mg",
  "source": {
    "resource": "/v1/email/inbound-messages/rem_01krdgeqcxet5s7t44vh8rt9mg"
  }
}

Returns a single message in a conversation, including its extracted plain text. Metadata and extracted text stay readable for the mailbox's retention tier. A message that has aged past its retention tier returns 410 Gone. A message that exists but does not belong to this thread returns 404.

Paramètres

thread_idstring

Thread identifier. Starts with thr_.

message_idstring

Message ID (rem_ for a received message, em_ for a sent one).

Contenu de la réponse

id
string
obligatoire

Message ID. Received messages have a rem_ ID, sent messages an em_ ID: the same IDs used by the received-message and sent-message logs.

direction
string
obligatoire

Which way the message went. inbound means you received it, outbound means you sent it.

Possible values: inbound, outbound

channel
string
obligatoire

Channel this message lives on. Always email.

thread_id
string
obligatoire

Conversation this message belongs to.

from
string
obligatoire

Sender address.

to
array of string
obligatoire

Recipient addresses on the To line.

cc
array of string
obligatoire

Recipient addresses on the Cc line. Empty when the message had none.

delivered_to
nullable string
obligatoire

Address the message was actually delivered to, when it differs from the mailbox address (for example mail routed in from another address). Null for sent messages and for mail addressed directly to the mailbox.

subject
nullable string
obligatoire

Message subject. Null when the message had no subject.

preview
nullable string
obligatoire

Short plain-text preview of the message body.

extracted_text
nullable string

Plain-text content of the message with quoted history stripped. Readable for the mailbox's full retention tier, in both directions. Always present when fetching a single message. On list endpoints it is included only when the request sets include=extracted_text. Null when no text could be extracted.

labels
array of string
obligatoire

Labels on this message. A received message always has exactly one placement label:

  • inbox: Accepted mail.
  • archive: The message's conversation was filed away.
  • spam: The message is filed in Spam.
  • blocked: The message was rejected by the mailbox's receive policy or rules.

A received message also has unread until it is read. trash marks a message in the trash, in either direction. Custom labels share the same list, and a message has at most 20 labels in total.

status
nullable string
obligatoire

Aggregate delivery status of a sent message:

  • accepted: Accepted for sending.
  • sent: Handed off to the provider.
  • delivered: All attempted recipients delivered.
  • failed: Terminal failure.

Null for received messages.

recipients
nullable array
obligatoire

Terminal per-recipient delivery outcomes of a sent message, filled in as each one becomes known and kept for the mailbox's full retention tier. Null for received messages and before any recipient reaches a terminal state. Per-recipient event detail lives on the sent-message log (source) for 30 days.

authentication
nullable string
obligatoire

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.

Null for sent messages. This field is readable for the mailbox's full retention tier, so the verdict is still available after the 30-day received-message log has expired.

Possible values: pass, fail, unknown, null

spf_pass
nullable boolean
obligatoire

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. Sent messages have null results. Kept for the mailbox retention tier.

dkim_pass
nullable boolean
obligatoire

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. Sent messages have null results. Kept for the mailbox retention tier.

dmarc_pass
nullable boolean
obligatoire

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. Sent messages have null results. Kept for the mailbox retention tier.

purge_at
string
obligatoire

Scheduled permanent-deletion time. This is the end of the mailbox's retention tier, moved to no more than 30 days in the future while the message is in the trash. Restore a trashed message before then with PATCH {"labels": {"remove": ["trash"]}}.

attachment_count
integer
obligatoire

Number of attachments on the message.

attachment_manifest
array of object
obligatoire

Attachment metadata (filename, content type, size). Both the metadata and the attachment bytes stay available for the mailbox's retention tier.

Afficher les attributs enfants
reference_ids
array of string
obligatoire

RFC 5322 References header entries used to thread the conversation.

contact_id
nullable string
obligatoire

Contact linked to this message, or null when none is linked.

source
object
obligatoire

Link to the message's entry in the received-message or sent-message log, which has delivery analytics such as per-recipient events. Log entries expire 30 days after the message occurred.

Afficher les attributs enfants
occurred_at
string
obligatoire

When the message was received or accepted for sending.

Poursuivez avec la documentation, les guides et les exemples sur ce sujet.