Skip to content

Schedule & cancel emails

Pass an RFC 3339 scheduled_at on POST /emails to queue a send for the future. The email is created immediately with status: "scheduled" and goes out at the scheduled time.

{ "from": "Acme <hi@acme.com>", "to": "user@example.com", "subject": "Reminder", "html": "<p>…</p>", "scheduled_at": "2026-09-01T09:00:00Z" }

PATCH /emails/{id} with a new scheduled_at moves a not-yet-sent email:

Terminal window
curl -X PATCH https://api.sendsignal.dev/emails/{id} \
-H "Authorization: Bearer ss_..." \
-H "Content-Type: application/json" \
-d '{"scheduled_at": "2026-09-02T09:00:00Z"}'

POST /emails/{id}/cancel cancels any email that hasn’t gone out yet; its status becomes canceled and it never reaches the provider.

Suppression checks run again at send time, not just at enqueue: if a recipient bounces, complains, or unsubscribes between scheduling and the send date, the scheduled email is suppressed instead of sent (status suppressed, with an email.suppressed event).