Sending
One message, a batch, a schedule, or a template.
Scheduling
scheduled_at accepts an ISO 8601 timestamp or a relative phrase — in 2 min, in 3 days, in 2 weeks. Anything it cannot parse is an error rather than a fallback to now, because a silent fallback would fire an entire sequence at once.
A scheduled message can be cancelled with DELETE /v1/emails/{id} while its status is still scheduled.
Batches
POST /v1/emails/batch takes up to 100 messages. Each succeeds or fails independently and results preserve input order, so one bad address never aborts the rest. A 207 response means some failed — retry only those.
Templates
Pass template and variables instead of html. Values are HTML-escaped on substitution, so text supplied by a user or an agent cannot rewrite the message around it. A missing variable is an error, not a half-rendered email with a visible placeholder.
{
"from": "Team <team@mail.example.com>",
"to": "ana@example.com",
"template": "welcome",
"variables": { "name": "Ana", "plan": "Pro" }
}Suppression
Next: Receiving replies