Skip to main content
Sending and scheduling both commit: something leaves, now or later. A draft is the third thing, and the only one that puts a person back in the loop — compose a reply, leave it in the Drafts folder, let somebody read it and press send. Required permission: Drafts → Read to list, Drafts → Write to create, edit or delete.
Drafts written here appear in the dashboard. That is the point: a draft nobody can see is just a string in a database. Whoever opens the web app finds it in Drafts, opens it in the composer, edits it and sends it like any other.
These are organization drafts. A key never sees anybody’s personal drafts.Drafts written by a person in the web app belong to that person and are invisible to every API key. Half-written mail is often the most sensitive thing in an account, and a key leaked from a CI job should not expose what somebody has not decided to send yet.The reverse is not symmetrical on purpose: drafts a key creates are visible to your team in the dashboard, because a draft nobody can reach cannot be reviewed.

List drafts

Takes no parameters — drafts belong to the organization, not to a mailbox. Newest first, up to 200.
No bodies in the list — fetch one for its text.

Create a draft

201 Created, returning the draft including its id.
Every field is optional, including the recipients. A draft is unfinished by definition — that is what makes it a draft. Refusing to save one because the address is half-typed is how a drafts feature loses somebody’s work.Validation happens when the message is sent, not while it is being written.

Read one

The same fields as the list, plus text and html.

Replace one

Takes the same body as create.
This replaces the whole draft; it does not merge. A field you leave out is cleared, not kept.A merging PATCH would need some way to say “clear the subject”, and the obvious encoding — omit the field — is already how you say “leave it alone”. Send the draft as you want it to be.

Delete one

Gone, along with its stored body. There is no Trash for drafts.

Sending a draft

There is no “send this draft” call. Read it, then POST /v1/messages with its contents and a from, and delete the draft once the send succeeds. That is deliberate rather than missing. A draft has no sender — from is chosen when the message goes, and a send endpoint that inherited it from a draft would be a second, quieter way to decide which address your mail leaves under.

Errors

See Errors for the full response shape.