Skip to main content
Retrieve information about emails you’ve sent through Lettr. Query your email history to check delivery status, view recipient details, and audit your sending activity.

List Sent Emails

Retrieve a paginated list of emails sent from your account:

Query Parameters

Response

The emails are in data.events.data. data.events.from and data.events.to show the time window that was actually searched, which can differ from the one you asked for (see Search Window).

List Email Events

GET /emails returns one entry per sent email (its injection event). To see everything that happened afterwards — deliveries, bounces, delays, opens, clicks — use GET /emails/events:
It accepts the same from, to, per_page, and cursor parameters, plus events, transmissions, and bounce_classes filters, and returns the same data.events shape. See List Email Events for every parameter and field.

Search Window

Lettr keeps sent emails and their events for about 10 days, so both GET /emails and GET /emails/events can only search that window:
  • If you leave out from, the search starts at the beginning of the retained window.
  • If from is earlier than that, it is moved forward to the start of the retained window instead of failing. The from in the response tells you where the search actually started.
  • If the whole range ends before the retained window starts, the response is empty.
  • If to is not after from, the request fails with a 422 validation error.

Get Email by Request ID

Retrieve details for a specific email using its request ID:
The request ID is returned when you send an email:

Response

state is derived from the events: scheduled, delivered, bounced, or failed. If no email with that request ID is found in the retained window, the endpoint returns 404. See Get Email Detail for every field.

Response Fields

Each entry in data.events.data from GET /emails contains:

Filtering by Date Range

Query emails within a specific time period:

Filtering by Recipient

Find all emails sent to a specific address:

Pagination

Use cursor-based pagination to retrieve large result sets:
Pass next_cursor back as the cursor parameter exactly as you received it — don’t decode, modify, or build it yourself. The cursor already carries the filters and time window of the first page, so later pages stay consistent. A cursor that didn’t come from a previous response fails with a 422 validation error. Cursors issued before the current format still work. The same pagination works for GET /emails/events.
Email history is kept for about 10 days. For longer retention, use webhooks to store email events in your own database.

Use Cases

Audit Trail

Track all emails sent to a specific customer:

Verify Delivery

Check what happened to a specific email:

Daily Send Report

Generate a report of emails sent today:

Error Responses

Analytics

Aggregate email performance metrics

Webhooks

Real-time email event notifications

Metadata

Attach custom data to emails

Idempotency

Prevent duplicate sends