Scheduled sends
Add sendAt to any send and it is parked until that moment instead of going out now.
{
"from": "Your Business <hello@yourbusiness.com.au>",
"to": "customer@example.com",
"subject": "Your appointment is tomorrow",
"category": "transactional",
"text": "See you at 9am.",
"sendAt": "2026-07-20T09:00:00.000Z"
}Response:
{ "status": "scheduled", "scheduledSendId": "…", "sendAt": "2026-07-20T09:00:00.000Z" }sendAt is ISO-8601 with an offset — 2026-07-20T09:00:00.000Z or 2026-07-20T19:00:00+10:00. A time in the past, or no sendAt at all, sends immediately.
Release is to the minute, not the second. A send set for 09:00:00 goes out during that minute, not at that exact instant.
Managing what is scheduled
| Method | Path | Purpose |
|---|---|---|
GET | /v1/scheduled | list your pending scheduled sends |
GET | /v1/scheduled/:id | one scheduled send |
DELETE | /v1/scheduled/:id | cancel one that has not gone out yet |
Cancelling only works while the send is still pending. Once released it is a normal email, and no API can recall an email that has left.
Time zones, honestly
Store and send UTC where you can. If you schedule in local time, remember that Sydney moves between AEST and AEDT, so "9am next April" is not a fixed number of hours from today. Compute the instant at the time you schedule, using the offset in effect on the target date, and send that.