Get Email
Retrieve one sent or queued email by id.
MethodGET
/api/v2/emails/{id}Returns one email in your organization. Use the id from Send Email or List Emails. Permission: emails.
Call this after send when you need the body, tags, or the current last_event. List does not return html, text, or tags.
Path Parameters
| Name | Type | Description |
|---|---|---|
id | string | Required. Email id (eml_...). |
Response Fields
| Field | Type | Description |
|---|---|---|
object | "email" | Discriminator. Always email on this endpoint. |
id | string | Lumail email id. |
message_id | string or null | Provider message id (SES) once accepted. null while still queued. |
from | string | Envelope From, including display name when you sent one. |
to | string[] | Recipients. v2 send accepts one address. |
subject | string | Subject line. |
html | string or null | Rendered HTML body. |
text | string or null | Plain-text body. Generated from HTML on send when you omit text. |
cc | string[] or null | Carbon copies from send, otherwise null. |
bcc | string[] or null | Blind carbon copies from send, otherwise null. |
reply_to | string[] or null | Reply-To addresses from send, otherwise null. |
scheduled_at | null | Always null. Scheduled send is not supported on v2 transactional emails. |
tags | { name, value }[] | Tags from send. Empty array when none. |
created_at | string | ISO 8601 timestamp. |
last_event | string | Latest delivery or tracking event. See below. |
Last event
last_event is derived, not stored as a separate field. Tracking wins over delivery:
clickedif the recipient clicked a linkopenedif the recipient opened the email- otherwise the delivery status
| Value | Meaning |
|---|---|
queued | Accepted by Lumail, not yet handed to SES (PENDING) |
sent | Handed to SES (SENT), or delivery status is still null |
delivered | SES reported delivery |
opened | At least one unique open |
clicked | At least one unique click |
bounced | SES bounce |
complained | Spam complaint |
failed | Send failed |
Body content
html and text are the stored rendered bodies. tiptap is send-only: if you queued TipTap JSON, this response still returns HTML, never the TipTap document.
Campaign emails and test sends are retrievable by id. List Emails only returns transactional API rows (campaignId null, isTest false).
Errors
Email routes use { name, message, statusCode }.
| Status | name | When |
|---|---|---|
| 401 | missing_api_key | Missing or invalid Authorization: Bearer lum_... |
| 403 | validation_error | Token lacks the emails permission |
| 404 | not_found | Unknown id, or the email belongs to another organization |