POST
cURL
Sends a reply from the conversation’s mailbox to the person who wrote last, and files it in Sent. The reply keeps the conversation together in the recipient’s mail app. The reply can be plain text, formatted html with pictures in inline_images, or both, send_at holds it to send later, and draft_id names a draft of the same mailbox that it replaces (deleted once sent; anything that is not one of the mailbox’s drafts returns 404). See Formatted messages, pictures and scheduling for the rules. Send an Idempotency-Key header to retry safely: the same key with the same body within 24 hours returns the first reply instead of sending again, and the same key with a different body (including different pictures or send_at) returns 409 NOT_UNIQUE.
Needs an API key with full access.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Idempotency-Key
string

Same key and body within 24 hours returns the first reply without sending again; same key with a different body is 409 NOT_UNIQUE.

Required string length: 1 - 256

Path Parameters

id
string
required
Required string length: 1 - 64
Pattern: ^[A-Za-z0-9_-]+$
Example:

"cm9abc123"

Body

application/json
text
string

Plain-text reply body. Required unless html is given, when it defaults to a plain-text copy of the html.

Required string length: 1 - 2097152
html
string

Formatted body. Cleaned on the server with the sanitizer webmail uses (scripts, forms, event handlers, blocks and unsafe links are dropped) before it is sent. The mailbox signature goes above an element with class "ozi_quote" when there is one, else at the end. When text is left out it is made from the html.

Required string length: 1 - 2097152
inline_images
object[]

Up to 10 pictures shown in the html by cid:, sent as inline attachments. Every cid: the html shows must be supplied, and every picture supplied must be shown.

Maximum array length: 10
draft_id
string

A draft of the same mailbox this message replaces, such as the one a cancelled scheduled send became. It is deleted once the message is sent (or scheduled), as webmail does. Must be in the mailbox's Drafts folder, else 404.

Required string length: 1 - 64
Pattern: ^[A-Za-z0-9_-]+$
Example:

"cm9msg123"

send_at
string<date-time>

RFC 3339 time to send at, from now to a year ahead. The message waits in the mailbox's Scheduled folder until then and can be cancelled, moved or sent now through /v1/scheduled/{id}. Use a few seconds ahead for an undo window.

Example:

"2026-10-09T09:00:00Z"

expected_recipient
string

The address the caller approved the reply for. When it differs from the address the reply would go to (compared case-insensitively, display names ignored), nothing is sent and the response is 409 recipient_changed.

Required string length: 1 - 1024

Response

Sends a reply (plain text, or formatted with inline pictures) from the thread's mailbox to the latest sender, stored in Sent, or in Scheduled when send_at is given

id
string
required
sent_at
string<date-time>
required
scheduled
boolean
required

True when the message waits to send (send_at was given). It is then in the Scheduled folder until it goes.

scheduled_id
string

When scheduled: the id to cancel, move or send now through /v1/scheduled/{id}. The same as id.

send_at
string<date-time>

When scheduled: when it will be sent.