---
title: "Update a draft"
method: PATCH
path: "/v1/inboxes/{inbox_id}/drafts/{draft_id}"
tags: ["Inboxes"]
---

# Update a draft

`PATCH /v1/inboxes/{inbox_id}/drafts/{draft_id}`

## Request

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

Omitted fields stay as they are; null clears one. The result must keep at least one non-empty field and at most 50 recipients. A sent draft, or one being sent, returns 409. Not in Resend: pass revision (from the draft object) to make the edit land only on that version; if the draft changed since, nothing is written and the answer is 409 with code draft_changed and the current revision. Requires the inbound:read scope.

## Path parameters

- `inbox_id` string, required
- `draft_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
  - `revision` integer: Only write if the draft is still at this revision. Not in Resend.

## Response `200`

The saved draft

- 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

- `400`: Bad request - check your payload
- `401`: Invalid or missing API key
- `403`: Forbidden - domain not verified or insufficient permissions
- `404`: Resource not found
- `409`: Conflict - the resource already exists or changed meanwhile
- `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)
