Get an email with its delivery timeline (scope: emails:read)
bearerAuthAuthorizationBearer <token>API key as Bearer token
id*stringOK
application/json- response
data*error*nullcurl -X GET "https://example.com/emails/string"{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "queued", "category": "transactional", "from": "string", "subject": "string", "recipients": [ { "email": "user@example.com", "name": "string", "kind": "to", "status": "accepted" } ], "suppressed_recipients": [ "string" ], "tags": [ "string" ], "message_id": "string", "provider_message_id": "string", "idempotency_key": "string", "last_error": "string", "created_at": "2019-08-24T14:15:22Z", "sent_at": "2019-08-24T14:15:22Z", "delivered_at": "2019-08-24T14:15:22Z", "bounced_at": "2019-08-24T14:15:22Z", "complained_at": "2019-08-24T14:15:22Z", "events": [ { "type": "email.queued", "at": "2019-08-24T14:15:22Z" } ] }, "error": null}Send a transactional or notification email as the organisation (scope: emails:send) POST
Accepted with 202 once the message is durably recorded; delivery is asynchronous. Honours `Idempotency-Key` (same key → same `id`). Rate limit 600/h per organisation. Suppressed recipients (bounces, complaints, org opt-outs) are reported per recipient and never handed to the MTA; if every `to` is suppressed the message is recorded with `status: suppressed`. `category: marketing` → 422 (use campaigns). `from` on an unverified domain → 422. A `from` on a verified domain that no sending identity may send as → 422 `sender_identity_missing` (nothing recorded). Sendable: the sending address of the domain (`<from_local_part>@<domain>`; re-run `/email-domains/{id}/verify` if its identity is missing), or a hosted mailbox of the organisation or one of its aliases with API sending enabled (Mail settings). Attachments over 2 MB decoded → 413. Webhooks: `email.sent`, `email.delivered`, `email.bounced`, `email.complained`, `email.suppressed`.
List emails sent through the API (scope: emails:read) GET
Next Page