---
title: "Create a draft"
method: POST
path: "/v1/inboxes/{inbox_id}/drafts"
tags: ["Inboxes"]
---

# Create a draft

`POST /v1/inboxes/{inbox_id}/drafts`

## Request

- Base URL: `https://smtpfa.st/api`
- URL: `https://smtpfa.st/api/v1/inboxes/{inbox_id}/drafts`
- Auth: HTTP bearer

Create a draft for a person to review and send. Nothing is sent, so it needs only the inbound:read scope: give an agent a key without email:send and every message it writes waits here for approval. Omit thread_id for a new conversation; send thread_id and reply_to_email_id together for a reply (recipients are not copied, set to before sending). At least one of to, cc, bcc, subject, text or html must be non-empty; 50 recipients at most; subject up to 900 characters (Resend allows 2000; a longer subject could never be sent here). Returns 201 for a new draft, or 200 when an unsent reply draft for that message already exists, updated with the fields sent.

## Path parameters

- `inbox_id` string, required

## Request body

- object
  - `to` union
    - string
    - string[]
  - `cc` union
    - string
    - string[]
  - `bcc` union
    - string
    - string[]
  - `subject` string, nullable
  - `html` string, nullable
  - `text` string, nullable
  - `thread_id` string: The thread to reply in. Send with reply_to_email_id.
  - `reply_to_email_id` string: The message to reply to. Send with thread_id.

## Response `200`

The existing reply draft, updated

- InboxDraft
  - `object` string
  - `id` string
  - `type` 'standalone' | 'reply'
  - `to` string[], nullable
  - `cc` string[]
  - `bcc` string[]
  - `subject` string, nullable
  - `html` string, nullable
  - `text` string, nullable
  - `thread_id` string, nullable
  - `reply_to_email_id` string, nullable
  - `email_id` string, nullable: The queued email once sent
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `created_via` 'api' | 'dashboard': Who wrote the draft. Not in Resend.
  - `sent_at` string, date-time, nullable: Not in Resend
  - `revision` integer: Goes up with every edit. Pass it to send or update to act only on this version. Not in Resend.
  - `thread_subject` string, nullable: The subject of the thread a reply draft answers. Not in Resend.

## Other responses

- `201`: The new draft
- `400`: Bad request - check your payload
- `401`: Invalid or missing API key
- `403`: Forbidden - domain not verified or insufficient permissions
- `404`: Resource not found
- `422`: The request is well formed but cannot be carried out in the current state, for example an unpublished template
- `429`: Rate limit exceeded - retry after the period indicated in the Retry-After header
- `500`: Internal server error

---

[API](https://skmtc.dev/smtpfa/apis/smtpfast-api.md) · [All operations](https://skmtc.dev/smtpfa/apis/smtpfast-api/llms.txt) · [OpenAPI document](https://skmtc.dev/smtpfa/apis/smtpfast-api/revisions/79dda742f53e?raw)
