---
title: "Send from an inbox"
method: POST
path: "/inboxes/{id}/messages"
---

# Send from an inbox

`POST /inboxes/{id}/messages`

## Request

- Base URL: `https://worker.openhelm.ai/v1`
- URL: `https://worker.openhelm.ai/v1/inboxes/{id}/messages`
- Auth: HTTP bearer

202 with `status`. `sent` went to SES; `pending_approval` means the inbox holds agent mail for a human and NOTHING has been delivered yet; `scheduled` will send later. `reply_to` states which address replies go to and WHY — `relay_fallback` means the branded domain cannot yet receive, so correlation runs over the relay instead. `suppressed` lists recipients dropped because they bounced, complained or opted out.

## Path parameters

- `id` string, required

## Request body

- object
  - `to` string: One address or a list.
  - `cc` string[]
  - `bcc` string[]
  - `subject` string, required
  - `body_markdown` string
  - `body_html` string
  - `text` string
  - `from_name` string
  - `reply_to` string: Overrides the correlation Reply-To. Doing so means replies no longer thread back automatically.
  - `send_class` 'transactional' | 'agent' | 'marketing': Which daily allowance this charges. Separate counters per class, so an outreach campaign can never starve a password reset. `marketing` and conversation-opening `agent` mail carry a one-click List-Unsubscribe header and are refused if the deployment has no unsubscribe secret. Absent ⇒ derived from the caller.
  - `scheduled_at` string: RFC 3339. Held until then by the scheduler drainer.
  - `client_id` string: Idempotency key — a repeat returns the original send.
  - `attachments` object[]: { filename, content_type, content_base64 }, 10 MB total.
  - `reply_to_thread_id` string
  - `in_reply_to_message_id` string
  - `force_approval` boolean: Hold this message for human approval even when the inbox is auto.

## Response `202`

Accepted

---

[API](https://skmtc.dev/openhelm/apis/openhelm-public-api.md) · [All operations](https://skmtc.dev/openhelm/apis/openhelm-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openhelm/apis/openhelm-public-api/revisions/2af88dc2f6a7?raw)
