Start
Build with RouteKite
Send transactional email, attach private files, and follow each message from acceptance to delivery.
On this page
Your first request
A RouteKite integration needs one verified Sending Address and one API key. Submit one recipient per request and keep the returned message ID.
Send an email
const response = await fetch("https://routekite.com/api/v1/emails", {method: "POST",headers: {Authorization: `Bearer ${process.env.ROUTEKITE_API_KEY}`,"Idempotency-Key": "order-123-confirmation","Content-Type": "application/json",},body: JSON.stringify({from: "updates@example.com",to: "customer@example.net",reply_to: "support@example.com",subject: "Your order is confirmed",preview_text: "Your receipt and delivery details are inside.",html: "<h1>Thank you</h1><p>Your order is confirmed.</p>",attachments: [{filename: "notes.txt",content_type: "text/plain",content: Buffer.from("Hello from RouteKite.").toString("base64"),},"c6ea638c-28a4-4b0c-a39d-74f1d29e1e9f",],}),});const email = await response.json();
202 Accepted
{"id": "7dd5da7f-40b0-4c29-bb78-7e0d95ef9eb7","object": "email","status": "queued","created_at": "2026-08-27T10:30:00.000Z"}
Start here
- 1
Verify a sending domain
Publish the required DNS records and wait until RouteKite marks the domain ready.
- 2
Add a Sending Address
Choose the exact address and sender name your application will use.
- 3
Create an API key
Create a workspace key with email:send access and store it only on your server.
- 4
Send and observe
Submit the email, store its ID, then retrieve the normalized delivery state.
What the public API supports
- Single and batch transactional email.
- HTML, plain text, or published transactional templates.
- Private uploads and per-message attachment retrieval.
- Normalized progress, events, and signed webhooks.
- Server-backed template draft, publish, duplicate, and version workflows.