High-throughput transactional email for AWS Lambda, Vercel & Cloudflare
Deliver emails from ephemeral serverless functions without connection pooling overhead or slow SMTP handshakes. Global Anycast routing ensures low-latency dispatches.
Drop into your application in under 60 seconds
Native typed interfaces with zero unnecessary dependencies. Built for standard fetch and modern edge runtimes.
import { SadaSend } from 'sadasend';
const sadasend = new SadaSend(process.env.SADASEND_API_KEY!);
export default async function handler(req: Request): Promise<Response> {
const { recipient, orderId } = await req.json();
const result = await sadasend.emails.send({
from: 'billing@yourdomain.com',
to: recipient,
subject: `Order Confirmation #${orderId}`,
html: `<p>Your order <strong>#${orderId}</strong> is confirmed.</p>`,
tags: ['serverless', 'order-confirm']
});
return new Response(JSON.stringify({ id: result.id }), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
}Engineered for high deliverability and zero incident risk
Every layer from edge connection pooling to per-key rate limits is designed to keep critical transactional dispatches fast, reliable, and contained.
Zero Cold-Start Overhead
Native HTTP REST endpoints eliminate slow TCP TLS handshakes and connection pool exhaustion common to traditional SMTP libraries.
Global Anycast Edge Network
API requests resolve to our nearest edge point-of-presence worldwide, reducing function execution duration and AWS Lambda bills.
Built-in Retry & Exponential Backoff
The SDK automatically respects HTTP 429 and Retry-After headers, avoiding dropped messages during serverless function bursts.
Automatic Idempotency Keys
Prevent duplicate customer emails when serverless functions retry upon ephemeral runtime timeouts or container recycles.
SadaSend vs Legacy SMTP on Serverless
Traditional SMTP libraries create connection leaks and 500ms+ cold starts in serverless functions. SadaSend REST dispatches in under 20ms.
| Feature & Capability | SadaSend | Legacy SMTP on Serverless |
|---|---|---|
| Cold-Start Latency | One HTTPS call, no TCP handshake | 450ms - 1,200ms (TCP Handshake) |
| Connection Pooling Required | No (Stateless REST) | Yes (Database / SMTP proxy) |
| Cloudflare Workers & Vercel Edge Support | ||
| Automatic Idempotency Key Defense |
Start with 3,000 emails every month at zero cost
No artificial paywalls on security. Unlike legacy providers that reserve recipient allowlists or dedicated IP pools for high enterprise tiers, every SadaSend account receives full safety controls from day one.
Everything you need to know about serverless email API
Clear, transparent answers on deliverability, API authentication, and rate limits.
Related developer guides and architectural tutorials
Explore step-by-step production implementation blueprints, benchmarks, and protocols.
REST API Reference & Endpoints
Complete REST API reference for sending emails, managing API keys, tracking delivery events, and configuring recipient allowlists with low latency.
Official Client SDKs (TypeScript & Python)
Official zero-dependency client SDKs for SadaSend. TypeScript and Python packages are live on npm and PyPI with typed results and auto-idempotency.
API Error Codes & Troubleshooting
HTTP status codes, machine-readable error reasons, and step-by-step remediation guides for API key rate limits, circuit breakers, and bounce handling.
Cloudflare Workers & Hono at the Edge: Ultra-Low Latency Email Dispatch
Execute email dispatch within 5ms of your users globally by deploying lightweight Hono applications to Cloudflare Workers.
How to Send Transactional Email with Bun and TypeScript (Zero Dependencies)
Stop wrestling with bloated Node.js polyfills. Learn how to send transactional emails in Bun with sub-millisecond cold starts and full TypeScript type safety.
Building a transactional email queue on Bun and BullMQ without losing messages
The worst bug an email service can have is not a crash. It is accepting a message, returning 202, and never sending it.
Why your transactional email goes to spam
People assume transactional mail is exempt from filtering because it was requested. Mailbox providers do not know that, and mostly do not care.
SPF, DKIM and DMARC: what each one actually does
Three records, endlessly confused with each other. Here is the mental model that makes them stop being confusing, and the two mistakes that cause most failures.