List Emails

Page through your sent emails with optional filters

GET/v1/send/emails

Return emails on the account, newest first, with offset pagination and optional filters.

Requires:send:read

Query parameters

Query parameters

limitinteger
Page size, 1 to 100.Defaults to 50
offsetinteger
Number of results to skip.Defaults to 0
statusstring
Only emails in this status.
queuedprocessingsentdeliveredbouncedcomplainedfailed
fromstring
Only emails sent from this exact address.
tostring
Only emails with this exact address in to.
startDatestring
ISO-8601 date or timestamp. Only emails created at or after this time.
endDatestring
ISO-8601 date or timestamp. Only emails created at or before this time.

Example

List bounced emails this week
curl "https://api.do.dev/v1/send/emails?status=bounced&startDate=2026-09-01T00:00:00Z&limit=50" \
-H "Authorization: Bearer $SEND_API_KEY"
Response200
{
"emails": [
  {
    "id": "msg_3f9c2a1d7b8e4c0f9a1b2",
    "from": { "email": "receipts@mail.example.com", "name": "Example Store" },
    "to": ["customer@example.net"],
    "subject": "Your order #4821 has shipped",
    "status": "bounced",
    "statusDetails": "Permanent: General (550 5.1.1 user unknown)",
    "createdAt": 1757000000000,
    "sentAt": 1757000001200,
    "bouncedAt": 1757000004100
  }
],
"pagination": { "limit": 50, "offset": 0, "total": 1, "hasMore": false }
}

Response

FieldTypeDescription
emailsobject[]Email objects with the same fields as Get an email.
pagination.limitintegerThe page size used.
pagination.offsetintegerThe offset used.
pagination.totalinteger or nullTotal emails matching the filters, or null when the count is temporarily unavailable.
pagination.hasMorebooleantrue if another page exists after this one.

To page, increase offset by limit while pagination.hasMore is true.

Errors

{
"error": {
  "code": "validation_error",
  "message": "Validation failed",
  "details": [
    { "field": "limit", "message": "'limit' must be between 1 and 100" }
  ]
}
}