---
title: "Send transactional email"
method: POST
path: "/transactional/send"
tags: ["Transactional"]
---

# Send transactional email

`POST /transactional/send`

Queues a transactional email for sending. You can either:
- Provide a `slug` to use a saved template
- Provide `subject` and `body` to send custom content directly

**Recipients:**
- `to` can be a single email or an array of up to 50 emails
- Duplicate emails are automatically deduplicated

**Attachments:**
- Attachments can be provided as Base64-encoded content or URLs
- Maximum total attachment size: 40MB per email
- Any file type supported (PDFs, images, documents, etc.)

A successful response means the email was accepted for background processing. If a recipient is suppressed because of a bounce, complaint, or unsubscribe, the worker records the send as `suppressed` instead of delivering it.

Optionally set `from` (domain must be verified) and `replyTo` addresses.
Variables can be passed to customize the email content. Nested objects and arrays are supported for repeat blocks, such as `items`. Returns immediately with a job ID.

## Request body

- object
  - `to` union, required — Recipient email address(es). Can be a single email string or an array of up to 50 emails.
    - string, email
    - string[]
  - `slug` string — Slug of the transactional email template to use (mutually exclusive with subject/body)
  - `subscriberExternalId` string — Customer-owned subscriber ID for attaching analytics and localization on single-recipient sends. Only valid when sending to exactly one recipient.
  - `subject` string — Email subject (required if not using slug)
  - `body` string — Email body HTML content (required if not using slug)
  - `preview` string — Preview text for the email (only used with direct content)
  - `variables` object — Variables for template replacement (works with both modes). Values can be scalars, nested objects, or arrays used by repeat blocks. Raw HTML templates can use simple subscriber/custom-attribute conditionals such as `{{#if subscriber.plan}}...{{else}}...{{/if}}` and `{{#unless subscriber.plan}}...{{/unless}}`.
  - `from` string — Custom from address. Format: "Name <email>" or just "email". The domain must be verified for your account. If not verified, this field is silently ignored.
  - `replyTo` string — Reply-to address. Format: "Name <email>" or just "email". Can be any valid email address.
  - `attachments` Attachment[] — File attachments for the email. Each attachment must have a filename and either: - `content`: Base64-encoded file content - `path`: URL to fetch the file from Maximum total size: 40MB per email.
    - `filename` string, required — The filename for the attachment (including extension)
    - `content` string — Base64-encoded file content (mutually exclusive with path)
    - `path` string, uri — URL to fetch the file from (mutually exclusive with content)
    - `contentType` string — MIME type of the attachment (optional, auto-detected if not provided)

## Response `200`

Email queued successfully

- union
  - object
    - `success` boolean
    - `jobId` string
    - `to` union
      - string
      - string[]
    - `transactional` object
      - `id` string
      - `slug` string
      - `name` string
  - object
    - `success` boolean
    - `jobId` string
    - `to` union
      - string
      - string[]

## Other responses

- `400` — Bad request (validation error, missing variables, disabled template, attachment errors, etc.)
- `401` — Unauthorized
- `404` — Template not found
- `500` — Internal server error

## Changes

- **2026-05-13** `9a89cb9ec599` — 6 warning
  - removed the request property `bcc`
  - removed the request property `cc`
  - removed the optional property `oneOf[subschema #1: Slug-based response]/bcc` from the response with the `200` status
  - removed the optional property `oneOf[subschema #1: Slug-based response]/cc` from the response with the `200` status
  - …2 more
- **2026-05-05** `5449b620579f` — 1 info
  - added the new optional request property `subscriberExternalId`

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/transactional/send/post.md)

---

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