Send a 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 or Get email tracking (single message timeline) 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 Transactional Email API v2 overview for trackingId vs messageId.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Send a transactional email over HTTP API v2 on Connect (https://connect.routee.net/transactional-email).

HTTP 200 means the message was accepted for processing, not delivered to the recipient's inbox. Delivery status arrives asynchronously via optional callbacks or the Email Tracking API.

Authentication

  1. Obtain a Bearer token with OAuth 2.0 client credentialsPOST https://auth.routee.net/oauth/token using HTTP Basic auth (Application ID : Application Secret), grant_type=client_credentials, and scope=transactional_email. See Get authenticated using your application credentials.
  2. Call this endpoint with Authorization: Bearer {access_token}.

Do not send a Principal header (or any account-id header). Routee resolves your tenant from the OAuth token.

Required field — isSingleChannel

ValueMeaning
trueCharge the single-channel transactional email subscription (default for Track A / go.routee.net API users).
falseCharge the standard multi-channel transactional email subscription.

This field is required on every send.

Example — cURL

# 1) Token (Basic auth with application credentials)
curl -s -X POST 'https://auth.routee.net/oauth/token' \
  -u 'YOUR_APPLICATION_ID:YOUR_APPLICATION_SECRET' \
  -d 'grant_type=client_credentials&scope=transactional_email'

# 2) Send (Bearer token from step 1)
curl -X POST 'https://connect.routee.net/transactional-email' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -d '{
    "from": { "name": "Acme", "address": "[email protected]" },
    "to": [{ "address": "[email protected]" }],
    "subject": "Order confirmed",
    "content": { "html": "<p>Thank you.</p>" },
    "isSingleChannel": true
  }'

Response

FieldDescription
trackingIdPrimary id for Search email tracking and Get email tracking (single message timeline).

Tracking rows typically appear within 1–2 minutes after a successful send.

Common HTTP 400 errors

errorCodeTypical cause
000000Invalid or unverified sending domain
000001Invalid sender address
000002Unverified sender
000003Message size limit exceeded
000004No active subscription
000005Insufficient subscription resources

Optional callback.statusCallback and callback.eventCallback (onOpen, onClick) receive HTTPS POST notifications as the message progresses.

Body Params
from
object
required
replyTo
object
to
array of objects
required
length ≥ 1
to*
string
required
string
cc
array of objects
cc
bcc
array of objects
bcc
customHeaders
array of objects
length ≤ 10
customHeaders
string
length ≤ 144
content
object
required
attachments
array of objects
attachments
date-time
integer
≥ 0

Time-to-live in minutes.

integer
≥ 0
footer
object
callback
object
string
length ≤ 80
dsn
object
boolean
required

When true, usage is charged against the account's single-channel transactional email subscription (Track A / go.routee.net default). When false, charges the standard multi-channel subscription. Required on every send.

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)

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json