List messages sent to one recipient (PII-gated)

Search Documentation

Search across all developer documentation

messages

List messages sent to one recipient (PII-gated)

GET /v1/recipients/{email}/messages
Auth required api.messages.unmask_recipients

Returns one cursor-paginated page of messages addressed to a specific recipient — the same shape as listMessages, but with the recipient pinned from the URL path. This route is gated solely on the api.messages.unmask_recipients scope (the broader api.messages.view is not required) so you can grant audit-style recipient lookup without exposing the full message index.

Match is case-sensitive on the stored recipient address. URL-encode @ as %40 (e.g. user%40example.com). Unknown recipients return 200 with data: [] — never 404. Same 30-day default window and plan-retention behavior as listMessages.

Path parameters

email string<email> required

Recipient address. Percent-encode @ as %40.

Query parameters

limit integer optional

Page size (1–200). Default 50.

cursor string optional

Opaque cursor returned from the previous page.

from string<date-time> optional

Window start (RFC 3339). Defaults to 30 days ago.

to string<date-time> optional

Window end (RFC 3339). Defaults to now.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

200 Cursor-paginated list of messages application/json
data array<object> required

Each entry in data:

id string required
channel string optional
template string optional
from string required
to string required

The recipient's full email address, in the clear. It is never masked or truncated, and api.messages.view alone is enough to read it — api.messages.unmask_recipients gates searching by a recipient, not seeing one. This field is personal data.

subject string optional
sent_at string<date-time> required
status string required
last_event_at string<date-time> optional
pagination object required

Fields of pagination:

has_more boolean required
next_cursor string | null optional
401 Missing, malformed, or unknown API key application/problem+json
403 Key lacks the required scope or plan limit violated application/problem+json
422 Query parameter or path value failed validation application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json