Email log
Your email log lists every email you have sent through the API for 30 days, with what happened to it. The same list is in your workspace under Emails.
GET /v1/emails?limit=50&status=delivered&cursor=…
Authorization: Bearer hme_yourkeyid_yoursecret{
"emails": [
{
"messageId": "…",
"at": 1756800000000,
"from": "receipts@yourcompany.com.au",
"to": "customer@example.com",
"subject": "Your receipt",
"category": "transactional",
"status": "delivered",
"lastEventAt": 1756800004000,
"detail": null
}
],
"nextCursor": null,
"retentionDays": 30
}Statuses
| Status | Means |
|---|---|
queued | accepted, not yet sent |
sent | handed to the receiving server |
delivered | the receiving server accepted it |
bounced | permanently rejected — the address is now suppressed |
complained | marked as spam — the address is now suppressed |
suppressed | not sent, because the address was already suppressed |
failed | could not be sent |
detail carries the reason on a bounced, complained or failed row. It is the receiving server's own words, which is exactly what you want when a customer says they never got their receipt.
Paging
Pass nextCursor back as cursor to get older rows. When nextCursor is null you have reached the end.
curl "https://api.hamanimail.com/v1/emails?limit=100&cursor=$CURSOR" \
-H "Authorization: Bearer hme_yourkeyid_yoursecret"Filter with status= to fetch one kind — status=bounced is the query worth running weekly.
The 30 days is real
Rows older than 30 days are gone, not archived. If you need a longer history, store the events yourself: take the webhook stream, or page this list on a schedule, and write it to your own database. Many businesses need to prove they sent something months later — build that on your side, not ours.