---
title: "Send an email"
method: POST
path: "/api/emails/{address}/send"
tags: ["Email"]
---

# Send an email

`POST /api/emails/{address}/send`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/emails/{address}/send`
- Auth: HTTP bearer

Send an email from a mailbox identified by its full email address. The server runs a mandatory versioned policy first: objective safety failures are denied while reputation and content-quality findings are returned as warnings. For a collaborative threaded reply, pass the compose lease, observed reply_version, and a stable idempotency key; the server atomically rejects stale or double replies immediately before sending. Maximum 20 unique recipients per message. Rate limit: 100 recipients per hour per mailbox.

## Path parameters

- `address` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `to` union, required: Recipient email address(es)
    - string
    - string[]
  - `cc` union: CC recipient(s)
    - string
    - string[]
  - `bcc` union: BCC recipient(s)
    - string
    - string[]
  - `subject` string
  - `text` string: Plain text body
  - `html` string: HTML body
  - `reply_to` string: Reply-To address
  - `in_reply_to` string: Message-ID of the email being replied to (for threading)
  - `references` string: Space-separated Message-ID chain (for threading)
  - `idempotency_key` string: Stable key that prevents duplicate sends
  - `send_at` string, date-time: Schedule the send (ISO 8601, 30 seconds to 30 days out). The message is stored with status 'scheduled' and dispatched server-side; move it to trash before then to cancel. Attachments are not supported with send_at yet.
  - `coordination` object: Required for a guarded collaborative reply.
    - `thread_key` string, required
    - `client_id` string, required
    - `lease_id` string, required
    - `expected_reply_version` integer, required
  - `allow_risky_content` boolean: Deprecated compatibility field. Public HTTPS third-party auth links are allowed with a warning; objective safety blocks cannot be overridden.
  - `attachments` object[]: File attachments (max 10, max 40MB total). Content must be base64-encoded.
    - `content` string, required: Base64-encoded file content
    - `filename` string, required: Filename with extension
    - `content_type` string: MIME type (optional)

## Response `200`

Email sent

- object
  - `id` string
  - `message_id` string: RFC 5322 Message-ID
  - `from` string
  - `to` string
  - `bcc` string, nullable: Bcc recipient(s) you sent to, echoed back on your own outbound message only; never delivered as a header and never present on a message you received.
  - `status` string
  - `attachments_count` integer
  - `suppressed` string[]
  - `deliverability` object: Versioned policy report applied to this send; inspect decision and categorized checks

## Other responses

- `400`: Unsafe message blocked by the deliverability policy
- `409`: Compose lease missing/expired, or another reply advanced the observed reply_version. The error `current` field contains the coordination snapshot.
- `429`: Rate limit exceeded (100/hr per mailbox)

---

[API](https://skmtc.dev/domani/apis/domani-run-api.md) · [All operations](https://skmtc.dev/domani/apis/domani-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domani/apis/domani-run-api/revisions/7679f8159533?raw)
