Create a draft without sending it

POST
/drafts

Creates a draft in one of the workspace mailboxes. It appears immediately in the Drafts folder of the inbox, where a person reviews, edits and sends it: the way to prepare an email from an integration or an agent while keeping a human in the loop.

Signatures: by default the default signature of the mailbox address is inserted (signature omitted or "default"). Pass "none" for no signature, or a signature id from GET /signatures. In Emelia, signatures come from the Emelia sending accounts.

Important: when inReplyTo is set and the mailbox already holds a draft replying to the same message (including an AI auto-draft), that draft is overwritten and returned with 201, instead of a new one being created. If that draft is being sent (scheduled send or auto-reply in progress) the call fails with 409 SCHEDULED_SEND_IN_PROGRESS; if it was synchronised from the provider, with 409 DRAFT_ALREADY_EXISTS.

Attachments cannot be added through the API. Supports Idempotency-Key.

Authorization

apiKey
Authorization<token>

Your 48 character Emelia API key, the same as for the Emelia API, sent as is (a Bearer prefix is tolerated). Create it at https://v3.emelia.io/settings/api. Disabling a key can take up to 5 minutes to apply to the Inbox API.

In: header

Header Parameters

Idempotency-Key?string

Any unique string (a UUID). The first successful response is stored 24 hours and replayed with Idempotent-Replay: true for the same key, method, URL and body. Same key with another body: 409 CONFLICT. Original call still running: 409 CONFLICT. Failed calls (status 400 and above) release the key. Keys are scoped to the workspace, not to the API key: two integrations of the same workspace must not reuse values. Replays count in the quotas.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/drafts" \  -H "Authorization: YOUR_API_KEY" \  -H "Idempotency-Key: 3f6c1b2e-7d4a-4f0e-9a51-acme00000001" \  -H "Content-Type: application/json" \  -d '{    "mailboxId": "cmbxacme0000000000000001",    "to": [      {        "email": "jane.roe@example.com",        "name": "Jane Roe"      }    ],    "subject": "Re: Partnership with Acme",    "inReplyTo": "<CAJacme.0001@mail.example.com>",    "references": [      "<20261008091500.acme01@acme.com>",      "<CAJacme.0001@mail.example.com>"    ],    "body": {      "text": "Hello Jane,\\n\\nTuesday 10am works for me.",      "html": "<p>Hello Jane,</p><p>Tuesday 10am works for me.</p>"    }  }'
{  "draft": {    "id": "cmdracme0000000000000001",    "mailboxId": "cmbxacme0000000000000001",    "folderId": "cmfdacme0000000000000001",    "messageId": "<draft-cmdracme0000000000000001@acme.com>",    "threadId": "18c2acme0001",    "subject": "Re: Partnership with Acme",    "from": {      "email": "john.doe@acme.com",      "name": null    },    "to": [      {        "email": "jane.roe@example.com",        "name": "Jane Roe"      }    ],    "cc": [],    "bcc": [],    "date": "2026-10-08T09:12:44.000Z",    "snippet": "Hello Jane, Tuesday 10am works for me.",    "isRead": true,    "isStarred": false,    "isDraft": true,    "hasAttachments": false,    "attachments": [],    "inReplyTo": "<CAJacme.0001@mail.example.com>",    "references": [      "<20261008091500.acme01@acme.com>",      "<CAJacme.0001@mail.example.com>"    ],    "labels": [],    "waitingForReply": false,    "isAutoReply": false,    "isAutoForward": false,    "scheduledStatus": null,    "scheduledSendAt": null  }}