Skip to main content
A scheduled message is stored until its time comes, then sent by a worker that runs every five minutes. That storage is what makes it cancellable — and what makes it visible in the dashboard beside messages a person scheduled there.
One queue, two ways in. A key with Scheduled → Read sees everything queued under your organization, including messages someone scheduled in the web app. Each row’s scheduled_by says which.
Private mailboxes cannot schedule. Queuing means storing the message body until the clock comes round, and a Private mailbox’s guarantee is that the plaintext never rests anywhere Ruber can read. Encrypting it at schedule time would only move the problem — the worker would then need the key to send it.from must be a Smart mailbox. This is a permanent design decision, not a missing feature.

List scheduled messages

Required permission: Scheduled → Read (scheduled:read) Takes no parameters. Returns everything queued, sending, or failed for your organization, soonest first, up to 200.
Delivered messages leave this list — look in the Sent folder with GET /v1/messages?folder=sent.

Schedule a message

Required permission: Scheduled → Write (scheduled:write) The same body as sending, plus send_at.
201 Created. Keep the id — it is the only way to cancel.
Sending happens within about five minutes of send_at, not to the second. The worker runs on a five-minute cycle. Nobody schedules mail for 09:00 meaning 09:00:00, and running every minute would be twelve times the work to move the worst case from five minutes late to one.Your plan’s daily allowance is claimed when the message sends, not when you schedule it — so a message queued today against tomorrow’s quota is charged tomorrow. A scheduled message can therefore fail on allowance if the day it lands on is already full.

The one-month window

send_at must be between now and one month ahead. Anything earlier is rejected as That time has already passed, anything later as Messages can be scheduled up to a month ahead. There is a minute of slack on the floor so a request that takes a moment to arrive is not refused for it.

Cancel a scheduled message

Required permission: Scheduled → Write (scheduled:write)
Only a pending message can be cancelled. Once the worker has claimed it the status is sending and the message may already be in the mail server’s hands — there is no un-sending it, so the call is refused rather than reporting a success you would act on.
Cancelling through the API deletes the message. The body and any attachments are removed from storage.This differs from cancelling in the web app, which returns the message to Drafts — someone who cancels at nine in the morning meant “not yet”, and there is a Drafts folder in front of them to put it in. An API caller has no drafts view, so cancel means cancel. Keep your own copy if you need one.

Errors

See Errors for the full response shape.