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

# Send an email

`POST /emails`

## Request

- Base URL: `https://api.mepmail.dev`
- URL: `https://api.mepmail.dev/emails`
- Auth: HTTP bearer

Queues one email for delivery, now or at scheduled_at, from a verified domain of the team.

## Headers

- `Idempotency-Key` string

## Request body

- SendEmailRequest
  - `from` string, required: Sender, "Name <user@domain>" or bare address; the domain must be verified for the team
  - `to` union, required: Recipient address or list of up to 50
    - string
    - string[]
  - `subject` string, required: Subject line
  - `html` string: HTML body; at least one of html/text is required
  - `text` string: Plain-text body; at least one of html/text is required
  - `cc` union: Cc address or list
    - string
    - string[]
  - `bcc` union: Bcc address or list
    - string
    - string[]
  - `reply_to` union: Reply-To address or list
    - string
    - string[]
  - `scheduled_at` string: Deliver later: ISO 8601 with offset, or relative like "in 2 hours" (an ISO 8601 datetime with offset (e.g. "2026-09-01T12:00:00Z") or a relative time like "in 5 mins", "in 2 hours", or "in 1 day"); max 30 days ahead
  - `tags` object[]: Key/value labels attached to the email for filtering
    - `name` string, required
    - `value` string, required
  - `topic_id` string, uuid, nullable: Topic id: recipients opted out of the topic are skipped and an unsubscribe link is added
  - `attachments` object[]: Attachments with base64 content (no remote paths)
    - `filename` string, required
    - `content` string
    - `content_type` string
    - `content_id` string
    - `path` string
  - `headers` object: Extra message headers (transport headers are rejected)
  - `template` unknown

## Response `200`

Email accepted

- SendEmailResponse
  - `id` string, uuid, required

## Other responses

- `401`: Missing, malformed or invalid API key
- `403`: Restricted API key
- `404`: Not found
- `409`: Idempotency conflict
- `422`: Validation error
- `429`: Sending quota exceeded, or the rate limit was exceeded (see Retry-After)

---

[API](https://skmtc.dev/mepmail/apis/mepmail-api.md) · [All operations](https://skmtc.dev/mepmail/apis/mepmail-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mepmail/apis/mepmail-api/revisions/262a89f73730?raw)
