Mail

Replace a draft

Replaces a saved draft in full. Drafts are replaced rather than patched: there is no coherent way to merge two versions of a message body.

PUT /v1/drafts/:id

Permission

The key must be granted mail.messages.write

A key without it gets 403 insufficient_scope, with the missing permission named in details.

Path parameters

Field Type Description
id required string

Request body

PUT, so this replaces the draft entirely. Anything you leave out is cleared, because there is no coherent way to merge two versions of a message body.

Field Type Description
to string[]
subject string
text string
html string

Request

curl https://api.veruapis.com/v1/drafts/:id \
  -X PUT \
  -H "Authorization: Bearer vak_live_..." \
  -H "Idempotency-Key: $(uuidgen)"

Idempotency-Key is required on every write. Retrying with the same key returns the original response rather than repeating the operation, so a timeout is something you retry rather than something you investigate.

Response

{
  "data": { ... },
  "meta": { "request_id": "req_01j8z9...", "timestamp": "2026-09-02T10:00:00Z" }
}

A worked example for this endpoint has not been written yet.

Errors

Every failure uses the same shape, with a stable string code you can branch on. See the error reference.

Related

PUT /v1/drafts/:id

id
Sends this body to your own workspace, for real. Edit it before running.