Mailfully logo

Retrieve an email

GEThttps://api.mailfully.com/v1/emails/{id}

Retrieve one accepted message by id, including its rendered bodies. The detail shape has no status field — last_event mirrors the lifecycle, falling back to the status when no delivery event has applied yet. Lookups are scoped by organization and environment and bounded by the retention floor; an unknown, cross-org, wrong-environment, or past-retention id returns 404. 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.

Path Parameters

idstringrequired

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

Response

application/json

The email detail.

object"email"required
Allowed values: "email"
idstringrequired
type"transactional" | "marketing"required

The kind of mail, as the sender declares it. Omitting the field means transactional. A marketing send is subject to extra compliance rules — it accepts exactly one recipient across to/cc/bcc, the organization must have a postal address on file, and it draws on a separate monthly marketing allowance.

Allowed values: "transactional" | "marketing"
Default: "transactional"
toarray<string>required
fromstringrequired
created_atstring<date-time>required
subjectstring
htmlstring
textstring
ccarray<string>required
bccarray<string>required
reply_toarray<string>required
last_eventstringrequired

The message's latest state in status words (delivered, bounced, complained), not the event type names used by /events. Falls back to status.

scheduled_atstring<date-time>
tagsarray<object>required
tags.namestringrequired

Tag name; must match [A-Za-z0-9_-]+.

tags.valuestringrequired

Tag value; must match [A-Za-z0-9_-]+.