---
title: "Send raw MIME email"
method: POST
path: "/emails/raw"
tags: ["Emails"]
---

# Send raw MIME email

`POST /emails/raw`

Send a pre-formatted RFC 2822 MIME message. Use this for advanced
use cases or when migrating from systems that generate raw email content.

**Important:** The `rawMessage` field must be base64-encoded. Your raw MIME
message (with headers like From, To, Subject, Content-Type, followed by a
blank line and the body) must be encoded to base64 before sending.

## Request body

- object
  - `from` string, required — Sender email address. Must be from a verified domain. **Supported formats:** - Email only: `hello@yourdomain.com` - With display name: `Acme <hello@yourdomain.com>` - With quoted name: `"Acme Support" <support@yourdomain.com>` The domain portion must match a verified sending domain in your account.
  - `to` string[], required — Recipient email addresses
  - `rawMessage` string, required — Base64-encoded RFC 2822 MIME message. **You must base64-encode your raw email before sending.** The raw email should include headers (From, To, Subject, Content-Type, etc.) followed by a blank line and the message body.
  - `bounce` boolean, nullable — Whether this is a bounce message (accepts null)

## Response `200`

Email accepted

- SendEmailResponse
  - `success` true, required
  - `data` object, required
    - `id` string, required — Unique message ID (format: msg_{id}_{token})
    - `messageId` string — SMTP Message-ID header value
    - `to` string[], required — List of recipient addresses
    - `status` 'pending' | 'sent', required — Current delivery status
    - `sandbox` boolean — Whether this email was sent in sandbox mode. Only present (and true) for sandbox emails sent from @arkhq.io addresses.
  - `meta` ApiMeta, required
    - `requestId` string, required — Unique request identifier for debugging and support

## Other responses

- `400` — Invalid request parameters
- `401` — Invalid or missing API key
- `402` — Payment required - insufficient credits or billing not configured. This error occurs when: - Your organization doesn't have billing configured - Your credit balance is too low to complete the request **Error codes:** - `billing_not_configured` - Set up billing at arkhq.io/org/billing - `insufficient_balance` - Add credits to continue sending - `billing_error` - Billing system error, try again
- `422` — Request understood but cannot be processed
- `429` — Rate limit exceeded
- `500` — Internal server error

## Changes

- **2026-01-23** `c7a958bca791` — 6 info
  - added the optional property `error/hint` to the response with the `400` status
  - added the optional property `error/hint` to the response with the `401` status
  - added the optional property `error/hint` to the response with the `402` status
  - added the optional property `error/hint` to the response with the `422` status
  - …2 more
- **2026-01-23** `0a792ba31f5e` — 3 breaking, 1 info
  - the `to` request property's minItems was increased to `1`
  - the `from` request property's minLength was increased from `0` to `1`
  - the `rawMessage` request property's minLength was increased from `0` to `1`
  - the `from` request property format was generalized from `email` to no format
- **2026-01-23** `15736053ec21` — 3 breaking, 3 warning
  - added the new required request property `from`
  - added the new required request property `rawMessage`
  - added the new required request property `to`
  - removed the request property `data`
  - …2 more
- **2026-01-21** `34d225476c98` — 1 info
  - added the optional property `data/sandbox` to the response with the `200` status

[Change history](https://skmtc.dev/arkhq-io/apis/ark-email-api/changes/emails/raw/post.md)

---

[API](https://skmtc.dev/arkhq-io/apis/ark-email-api.md) · [All operations](https://skmtc.dev/arkhq-io/apis/ark-email-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/arkhq-io/ark-email-api/revisions/eafcdb767b21/schema)
