Retrieve an email
GET https://api.mailpush.app/v1/emails/:idHeaders
Section titled “Headers”| Header | Required | Description |
|---|---|---|
Authorization |
Yes | Bearer followed by an API key of the account that sent the email. |
Path parameters
Section titled “Path parameters”| Parameter | Description |
|---|---|
id |
The id returned by POST /v1/emails, em_.... |
Response
Section titled “Response”200 OK
{ "id": "em_4b9b3c1f0a2e7d5c9e8f1a2b", "from": "Acme <hello@example.com>", "to": ["customer@example.org"], "subject": "Your order is ready", "status": "processed", "error": null, "created_at": "2026-09-30T10:00:00.000Z", "recipients": [ { "email": "customer@example.org", "status": "delivered", "delivered_at": "2026-09-30T10:00:01.000Z", "opened_at": "2026-09-30T10:12:40.000Z", "clicked_at": null, "last_response": "250 2.0.0 OK" } ]}| Field | Type | Description |
|---|---|---|
status |
string | The state of the email itself, see below. |
error |
string or null | Why the email is failed. |
created_at |
string | When the API accepted the email, ISO 8601 in UTC. |
recipients |
array | One entry per address in to, cc and bcc. Empty until the email is processed. |
recipients[].status |
string | The state of this delivery, see below. |
recipients[].delivered_at |
string or null | When the recipient’s server accepted the email. |
recipients[].opened_at |
string or null | The first open made by the recipient, or their first click. Apple Mail’s prefetch and robots never set it. See Track opens and clicks. |
recipients[].clicked_at |
string or null | The first click made by the recipient, security scanners left out. |
recipients[].last_response |
string or null | The last answer of the recipient’s server. |
Email status
Section titled “Email status”| Value | Meaning |
|---|---|
queued |
Accepted, waiting to be signed. |
processed |
Signed. Each recipient now has its own status. |
failed |
Could not be signed, for example because the domain is no longer verified. Nothing was sent. |
test |
Sent with a test key. Nothing was sent. |
Recipient status
Section titled “Recipient status”| Value | Meaning |
|---|---|
queued |
Waiting for its turn. |
sending |
An attempt is in progress. |
delivered |
The recipient’s server accepted the email. |
deferred |
Refused temporarily. MailPush will try again, for 72 hours at most. |
bounced |
Refused permanently. last_response holds the reason. |
failed |
Still refused after 72 hours of retries. |
suppressed |
Not sent: the address is on your account’s suppression list. |
Example
Section titled “Example”curl https://api.mailpush.app/v1/emails/em_4b9b3c1f0a2e7d5c9e8f1a2b \ -H "Authorization: Bearer $MAILPUSH_API_KEY"const email = await mailpush.emails.get("em_4b9b3c1f0a2e7d5c9e8f1a2b");Errors
Section titled “Errors”| Status | Code | When |
|---|---|---|
| 401 | missing_api_key, invalid_api_key |
No key, or a wrong or revoked one. |
| 404 | email_not_found |
No such email, or it belongs to another account. |
| 429 | rate_limited |
More than 10 requests in a second with this key. |