---
title: "Delivery event audit trail for a single email message"
method: GET
path: "/v1/email/messages/{message_id}/events"
tags: ["email"]
---

# Delivery event audit trail for a single email message

`GET /v1/email/messages/{message_id}/events`

Path param is the Nylas ``provider_message_id``. Org-scoping
happens via the JOIN to ``EmailChannelAccount`` inside the service.

## Path parameters

- `message_id` string, required

## Response `200`

Successful Response

- ListMessageEventsResponse — All recorded events for a single outbound message. Pairs the canonical headline state (``delivery_status``, ``delivery_status_at`` from the parent ``ConversationTurn``) with the full append-only audit trail. The headline is the source of truth for "what state is the message in *now*"; the audit is the timeline.
  - `provider_message_id` string, required
  - `delivery_status` string, nullable, required
  - `delivery_status_at` string, date-time, nullable, required
  - `events` MessageEventResponse[]
    - `event_type` string, required
    - `occurred_at` string, date-time, nullable
    - `vendor_event_type` string, nullable
    - `payload` object

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `404` — Resource not found
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
