---
title: "Send a transactional email"
method: POST
path: "/transactional-email"
tags: ["Email API"]
---

# Send a transactional email

`POST /transactional-email`

Creates and queues a transactional email for delivery. Routed by **menshen** to the transactional-email service.

HTTP **200** means the message was **accepted for processing**, not delivered to the recipient's mailbox. Poll [Search email tracking](https://docs.routee.net/reference/search-email-tracking) or [Get email tracking (single message timeline)](https://docs.routee.net/reference/get-email-tracking-single) after a short delay (typically **1–2 minutes**), or use optional `callback` URLs on the send request.

The response `trackingId` is the primary id for log lookup. See [Email API](https://docs.routee.net/reference/ref-sub-email-api-v-2) for `trackingId` vs `messageId`.

## Headers

- `Authorization` string, required
- `Content-Type` string, required

## Request body

- CreateTransactionalEmailCommand
  - `from` EmailAddress, required
    - `address` string, email, required
    - `name` string
  - `replyTo` EmailAddress
    - `address` string, email, required
    - `name` string
  - `to` EmailAddress[], required
    - `address` string, email, required
    - `name` string
  - `cc` EmailAddress[]
    - `address` string, email, required
    - `name` string
  - `bcc` EmailAddress[]
    - `address` string, email, required
    - `name` string
  - `customHeaders` CustomHeader[]
    - `name` string, required
    - `value` string, required
  - `subject` string
  - `content` Content, required
    - `html` string, required
    - `text` string
  - `attachments` Attachment[]
    - `content` string, required — Base64-encoded file content.
    - `type` string, required — MIME type.
    - `filename` string, required
  - `scheduledDate` string, date-time
  - `ttl` integer — Time-to-live in minutes.
  - `maxAttempts` integer
  - `footer` Content
    - `html` string, required
    - `text` string
  - `callback` Callback
    - `statusCallback` StatusCallback
      - `strategy` 'OnChange' | 'OnCompletion', required
      - `url` string, uri, required
    - `eventCallback` EventCallback
      - `onClick` string, uri
      - `onOpen` string, uri
  - `label` string
  - `dsn` Dsn
    - `notify` string, required — Comma-separated FAILURE, DELAY, SUCCESS, NEVER.
    - `orcpt` string, email, required
    - `envid` string

## Response `200`

Message accepted for processing

- CreateTransactionalEmailView
  - `trackingId` string, required — Use with email tracking endpoints and callbacks.

## Other responses

- `400` — Validation or business rule failure (domain, sender, subscription, size limits)
- `401` — Missing or invalid Bearer token
- `403` — Insufficient role or OAuth scope (`transactional_email` required)

---

[API](https://skmtc.net/routee/apis/auth.md) · [All operations](https://skmtc.net/routee/apis/auth/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/routee/auth/revisions/5cef04e8f7d8/schema)
