> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lupin.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Drafts

> Human-in-the-loop review and scheduled sends.

# Drafts

Org: `GET /v0/emails/drafts`, `/v0/emails/drafts/:id` · Inbox: full CRUD under
`/v0/emails/inboxes/:inbox_id/emails/drafts…` · Project: list/get.

## Create

Plain, reply, reply-all or forward drafts from one body:

```json theme={null}
{ "to": ["u@e.com"], "subject": "…", "text": "…",
  "in_reply_to": "msg_…", "forward_of": "msg_…", "reply_all": false,
  "send_at": "2026-10-01T09:00:00Z", "client_id": "…",
  "attachments": [{ "filename": "a.pdf", "content": "<base64>" }] }
```

* Reply: set `in_reply_to` — recipients/subject/threading derive from it.
* Forward: set `forward_of` — body and attachments merge in at send time.
* `in_reply_to` and `forward_of` are mutually exclusive; `reply_all` forbids `to/cc/bcc`.

## Update & send

`PATCH` supports nullable field clears, `add_attachments` / `remove_attachments`,
`add_labels` / `remove_labels`, and `send_at` changes. `POST …/:id/send`
delivers the draft (forward content merges at that moment) and deletes it —
the returned object is the sent email.

## Scheduled sends

A future `send_at` marks the draft `scheduled`. The Worker cron (every 5 min)
sends due drafts; failures flip to `failed` for inspection.
