Transactional Email API v2 — overview
HTTP OAuth workflow.
Transactional Email API v2 — overview
Start here: E-mail — product overview, prerequisites, HTTP vs SMTP paths, and full documentation map.
Routee Transactional Email API v2 lets you send one-to-one email and inspect delivery logs on Connect (https://connect.routee.net). This guide covers prerequisites, authentication, message identifiers, and the send → track workflow for the HTTP API.
Prerequisites
Before you integrate, ensure your Routee account has:
| Requirement | Description |
|---|---|
| Active subscription | A transactional email subscription with available sending capacity. |
| Verified sender | The from address (or domain) you use in send requests must be verified in your Routee account. |
| OAuth application | An application on go.routee.net with the Transactional Email role and scope transactional_email. |
API endpoints
All calls use the public Connect base URL: https://connect.routee.net.
| Operation | Method | Path |
|---|---|---|
| Send | POST | /transactional-email |
| Search logs | POST | /email/tracking |
| Message timeline | GET | /email/tracking/single/{trackingId} |
Send and tracking are separate routes but share the same OAuth account and transactional_email scope.
Authentication
- Create an application on go.routee.net and note the Application ID and Application Secret.
- Request a token:
curl -X POST 'https://auth.routee.net/oauth/token' \
-u 'APPLICATION_ID:APPLICATION_SECRET' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&scope=transactional_email'Use HTTP Basic authentication (-u id:secret) — not a JSON body — for the token request.
- Pass
Authorization: Bearer {access_token}on send and tracking calls.
Required product role: Transactional Email. OAuth scope: transactional_email (or all for portal-issued tokens).
For full token setup, see Get authenticated using your application credentials.
Identifier glossary
| Id | Source | Description |
|---|---|---|
| trackingId | Send response (POST /transactional-email) | Routee's message correlation id. Use this in your app after send. |
| messageId | Tracking responses | Message identifier in delivery logs. Always present on tracking rows. |
| Relationship | — | trackingId and messageId refer to the same message; either can be used for lookup. |
Lookup rule: pass either id to GET /email/tracking/single/{trackingId} or as the trackingId query parameter on POST /email/tracking.
Send → track workflow
- Send —
POST /transactional-emailwithisSingleChannel: truefor single-channel transactional billing. HTTP 200 and{ "trackingId": "…" }mean the message was accepted for processing, not delivered to the inbox. - Wait — allow 1–2 minutes for asynchronous processing before expecting log rows.
- Search —
POST /email/trackingwith a date range and optional filters to list recent messages. - Detail —
GET /email/tracking/single/{trackingId}for the full SMTP and event timeline. - Callbacks (optional) — set
callback.statusCallbackand/orcallback.eventCallbackon send for push notifications instead of polling. See Email tracking, statuses & callbacks.
SMTP alternative: You can also send via MailerQ at
smtp10.amdtelecom.net— see Email — HTTP API vs SMTP relay and Transactional Email — SMTP relay.
Example — send and track
# 1) Obtain token
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 email
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
}'
# 3) Search logs (after 1–2 minutes)
curl -X POST 'https://connect.routee.net/email/tracking?page=0&size=20' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-d '[]'
# 4) Full timeline for one message
curl -X GET 'https://connect.routee.net/email/tracking/single/TRACKING_ID_FROM_SEND' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
