---
title: "Return a message's delivery status"
method: GET
path: "/v3/activity/send/messages/{message_id}"
tags: ["Send events"]
---

# Return a message's delivery status

`GET /v3/activity/send/messages/{message_id}`

## Request

- Base URL: `https://api.us.nylas.com`
- URL: `https://api.us.nylas.com/v3/activity/send/messages/{message_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nylas/apis/nylas-api/docs/v3/activity/send/messages/:message_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the delivery timeline of one message for each of its recipients: when Nylas accepted it,
and whether it was delivered, bounced, marked as spam, or rejected. Use it to check whether a message
reached a recipient and, if it didn't, why. Covers messages sent in the last 90 days.

## Response `200`

Success. Returns the message and each recipient's events.

- object
  - `request_id` string: The request ID.
  - `data` SendMessage: A message and what happened to it for each recipient.
    - `message` object: The message.
      - `message_id` string: The ID of the message.
      - `thread_id` string: The Agent Account thread the message belongs to. Empty for a transactional send.
      - `grant_id` string: The Agent Account grant that sent the message. Empty for a transactional send.
      - `application_id` string: The ID of your Nylas application.
      - `from` string: The email address the message was sent from.
      - `sending_domain` string: The domain the message was sent from.
      - `subject` string: The message subject.
      - `sent_at` integer: When Nylas accepted the message, as a Unix timestamp in seconds.
      - `last_event_at` integer: When the most recent event for any recipient happened, as a Unix timestamp in seconds.
    - `recipients` object[]: One entry per recipient, sorted by email address.
      - `recipient` string: The recipient's email address.
      - `recipient_domain` string: The recipient's domain.
      - `current_status` 'accepted' | 'delivered' | 'bounced' | 'complaint' | 'rejected': The recipient's latest status.
      - `bounce_class` 'hard' | 'soft' | 'undetermined': When `current_status` is `bounced`, whether the bounce is permanent, temporary, or unclassified.
      - `events` object[]: Everything that happened for this recipient, oldest first.
        - `id` string: The ID of the event.
        - `event_type` 'accepted' | 'delivered' | 'bounced' | 'complaint' | 'rejected': What happened.
        - `timestamp` integer: When the event happened, as a Unix timestamp in seconds.
        - `bounce_class` 'hard' | 'soft' | 'undetermined': For a bounce, whether it's permanent, temporary, or unclassified.
        - `reason` string: A short summary of why the event happened. Empty for `accepted`.
        - `detail` Detail: Delivery details reported by the recipient's mail server. Only the fields that apply to the event are included.
          - `smtp_response` string: The SMTP response from the recipient's mail server.
          - `processing_time_ms` integer: How long delivery took, in milliseconds.
          - `reporting_mta` string: The mail server that reported the event.
          - `remote_mta_ip` string: The IP address of the recipient's mail server.
          - `bounce_type` string: The bounce type, such as `Permanent` or `Transient`.
          - `bounce_subtype` string: The bounce subtype, such as `General`, `NoEmail`, `MailboxFull`, or `Suppressed`. `Suppressed` means the address is on a suppression list because of an earlier bounce or complaint.
          - `status` string: The enhanced SMTP status code.
          - `action` string: The delivery action the mail server reported.
          - `diagnostic_code` string: The diagnostic message from the recipient's mail server.
          - `feedback_type` string: For a complaint, the type of feedback the mailbox provider reported, such as `abuse`.
          - `complaint_subtype` string: For a complaint, the complaint subtype, if the provider reported one.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden. These endpoints need your application's API key, not a grant access token.
- `404`: Not found. Nylas has no send events for this ID in the last 90 days.

## Changes

- **2026-10-30** `7b9fe7c66c1c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nylas/apis/nylas-api/changes/v3/activity/send/messages/:message_id/get.md)

---

[API](https://skmtc.dev/nylas/apis/nylas-api.md) - [All operations](https://skmtc.dev/nylas/apis/nylas-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nylas/apis/nylas-api/revisions/7782a3e3ab70?raw)
