Drafts
A draft is a message you have not sent. Use drafts for human review, or to schedule a send.
curl -X POST "$BASE_URL/v0/inboxes/$INBOX_ID/drafts" \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{"to": "you@example.com", "subject": "Later", "text": "Scheduled.", "send_at": "2026-12-01T09:00:00Z"}'
| Field | Notes |
|---|---|
in_reply_to | Message id to reply to. Mutually exclusive with forward_of. |
reply_all | Requires in_reply_to; cannot be combined with to, cc or bcc. |
send_at | Must be in the future. Adds the scheduled label. |
client_id | Idempotency handle for creation. |
Update with PATCH .../drafts/:draft_id; set a field to null to clear it, use add_attachments and remove_attachments for files. Send immediately with POST .../drafts/:draft_id/send, which returns { message_id, thread_id } and removes the draft.
A scheduled draft carries send_status: scheduled, sending or failed. If the inbox is paused when the time arrives, the draft fails and is not retried when the inbox resumes.
The dashboard creates, edits, sends and deletes drafts but has no field for send_at; scheduling is API, SDK and MCP only. After a draft is sent it no longer exists (GET answers 404).
GET /v0/drafts lists drafts across all inboxes.