API reference
Retrieve email
GET /api/emails/{id} returns one email with its current status and the events recorded for it.
GET https://sendhawk.online/api/emails/{id}
Returns one email sent from your workspace, by the id that Send email returned. Authenticate with an API key from the same workspace.
Request
curl https://sendhawk.online/api/emails/4f1c2b8e-7a3d-4e5f-9b21-0c6d8e9f1a2b \
-H "Authorization: Bearer $SENDHAWK_API_KEY"
const id = '4f1c2b8e-7a3d-4e5f-9b21-0c6d8e9f1a2b'
const response = await fetch(`https://sendhawk.online/api/emails/${id}`, {
headers: { Authorization: `Bearer ${process.env.SENDHAWK_API_KEY}` }
})
const email = await response.json()
console.log(email.status)
import os
import requests
email_id = "4f1c2b8e-7a3d-4e5f-9b21-0c6d8e9f1a2b"
response = requests.get(
f"https://sendhawk.online/api/emails/{email_id}",
headers={"Authorization": f"Bearer {os.environ['SENDHAWK_API_KEY']}"},
timeout=10,
)
print(response.json()["status"])
Response
{
"id": "4f1c2b8e-7a3d-4e5f-9b21-0c6d8e9f1a2b",
"from": "hello@yourdomain.com",
"to": "ada@example.com",
"subject": "Your sign-in code",
"status": "opened",
"createdAt": "2026-11-03T09:15:02.481Z",
"events": [
{ "type": "delivered", "occurredAt": "2026-11-03T09:15:04.120Z" },
{ "type": "opened", "occurredAt": "2026-11-03T09:21:40.902Z" }
]
}
id
string
The email's id, as returned by Send email.
from
string
The sender address.
to
string | string[]
The recipient or recipients.
subject
string
The subject as sent, with template variables filled in.
status
string
The latest status. See Statuses.
createdAt
string
When SendHawk.Online accepted the email, as an ISO 8601 timestamp in UTC.
events
object[]
What happened to the email after it was sent, oldest first. Each event has a
type (one of the statuses below) and an occurredAt timestamp. Bounce, complaint and delivery times are the ones Amazon SES reports.An id that does not exist, or that belongs to another workspace, answers 404.
Statuses
status is the most recent event SendHawk.Online recorded for the email. The same names are the type of each entry in events and of webhook events.
| Status | Meaning |
|---|---|
queued | Accepted and waiting to be handed to Amazon SES. |
sent | Amazon SES accepted the message for delivery. |
delivered | The recipient's mail server accepted the message. |
opened | The recipient opened the email. Needs open tracking. |
clicked | The recipient clicked a link. Needs click tracking. |
bounced | The recipient's server rejected the message. See Suppressions. |
complained | The recipient marked the email as spam. See Suppressions. |
failed | SendHawk.Online could not hand the message to Amazon SES. |
Events can arrive out of order. A delivery report can reach us after the first open, for example, and status then reads delivered while events holds both.
Polling this endpoint to wait for a delivery works, but webhooks tell you the moment the status changes, without spending your rate limit.