Idempotency, on by default
Every write takes an idempotency key. Retry a timed-out request as many times as you like — it resolves to one send, never two.
The email API for developers
A single, well-typed request from the SDK you already use. Delivery, retries, and logs are handled. You write the call and move on.
npm install endpointNo credit card. 3,000 emails a month on the free tier.
import { Endpoint } from "endpoint"; const endpoint = new Endpoint(process.env.EP_KEY); const { id } = await endpoint.emails.send({ from: "ci@acme.dev", to: "dev@example.com", subject: "Your build passed", html: "<b>All 214 checks green.</b>",});And this comes back
One request, one predictable JSON body, one request id you can grep for in the logs. No polling, no guessing what state the send is in.
$ endpoint emails send --to dev@example.com < HTTP/2 200 OK< x-request-id: req_5b1e9c2a { "id": "em_9f2c4a7d", "object": "email", "status": "delivered", "to": "dev@example.com", "created_at": "2026-09-20T18:04:11Z", "latency_ms": 38}Built for the boring parts
The things you would otherwise build twice and still get wrong — retries, signatures, a sandbox that tells the truth — are the product.
Every write takes an idempotency key. Retry a timed-out request as many times as you like — it resolves to one send, never two.
Signed events, exponential backoff for three days, and one-click replay from the dashboard. Your consumer can go down without losing a thing.
Test keys, seeded data, and the same latency profile as live. What passes in test behaves identically the moment you flip to production.
Thirty days of full request and response bodies, a copyable curl to reproduce any call, and latency traces down to the millisecond.
Recently shipped
v2.6.0Sep 2026Queue up to 100 messages in a single idempotent call.
v2.5.0Aug 2026Route replies straight to a webhook as structured JSON.
v2.4.0Jul 2026Pin storage and processing to eu-central-1.
v2.3.0Jun 2026Send at a future timestamp, cancellable to the minute.
v2.2.0May 2026Programmatic bounce and complaint handling.
v2.1.0Apr 2026Fully typed clients for Node, Python 3.13, and Go.
Pricing
No per-seat fees, no charge for teammates, no surprise overage bill. You pay for the email you send, and the first few thousand are on us.
Everything you need to ship a side project.
For products in production with real traffic.
Volume pricing, residency, and a signed SLA.
Every endpoint has a runnable example in four languages and a copyable curl. Read for ten minutes, ship before lunch.
npm install endpoint