List emails

List accepted messages, newest first, with keyset pagination.

GEThttps://api.mailfully.com/v1/emails

List accepted messages, newest first, with keyset pagination. The read window is bounded by the plan's retention floor (free/starter 30 days, growth 60, scale 90); a supplied from is silently clamped up to that floor. List rows never include message bodies. Requires the send or read:emails scope.

Loading code example
Loading code example

Authorizations

Authorizationstringheaderrequired

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

limitintegerdefault: 25

Maximum rows to return. Default 25, clamped to [1, 100].

Required range: x >= 1, x <= 100
Default: 25
cursorstring

Opaque pagination cursor from a previous response's `next_cursor`.

status"queued" | "sending" | "sent" | "delivered" | "bounced" | "complained" | "failed" | "canceled" | "reconcile_review"

Filter by lifecycle status.

Allowed values: "queued" | "sending" | "sent" | "delivered" | "bounced" | "complained" | "failed" | "canceled" | "reconcile_review"
tagstring

Filter by tag value (the tag name is ignored).

domainstring

Filter by exact recipient domain.

recipientstring

Filter by an exact `to` address; `cc` and `bcc` addresses never match.

fromstring<date-time>

Inclusive lower `created_at` bound (ISO 8601); clamped up to the retention floor.

tostring<date-time>

Inclusive upper `created_at` bound (ISO 8601).

Response

application/json

A page of emails.

dataarray<object>required
data.idstringrequired

The message id (a bare ULID, no prefix).

data.toarray<string>required
data.fromstringrequired
data.subjectstringrequired
data.status"queued" | "sending" | "sent" | "delivered" | "bounced" | "complained" | "failed" | "canceled" | "reconcile_review"required

Message lifecycle status.

Allowed values: "queued" | "sending" | "sent" | "delivered" | "bounced" | "complained" | "failed" | "canceled" | "reconcile_review"
data.last_eventstringrequired

Latest event type; falls back to the status when no event has applied yet.

data.recipient_domainstringrequired
data.tagsarray<object>required
data.created_atstring<date-time>required
data.scheduled_atstring<date-time>required
has_morebooleanrequired
next_cursorstringrequired

Opaque cursor for the next page; pass back as `cursor`.