A clean REST API for transactional and broadcast mail: single sends, batches, scheduling, idempotency, tags, and attachments. Same endpoint, your IP, your logs, your reputation — via Postal under the hood, not a rented SES pool.
POST to /emails with a from, a to, and a body. Add scheduling, tagging, or idempotency by adding a key — no new endpoints, no separate marketing product to bolt on.
HTML or plain text, reply-to, CC/BCC, custom headers, and file attachments in a single JSON body. Get back a message ID you can trace all the way to delivery in your own logs.
POST an array to /emails/batch to fan out per-recipient messages in a single round trip. Each entry carries its own subject, body, and tags — ideal for digests and per-user notifications.
Add scheduled_at with an ISO timestamp or a natural offset like in 1 hour. mailstein holds the message and releases it at send time — no cron of your own required.
Pass an Idempotency-Key header and a retried request returns the original result instead of sending twice. Safe to replay after a timeout, a webhook redelivery, or a crashed worker.
Every send is queryable. Tags flow into analytics and webhooks; attachments ride along in the same request; every message lands in logs you host.
Attach key/value tags — type=receipt, tenant=acme — and they show up on the message, in delivery/open/bounce webhooks, and in analytics filters. Slice deliverability by whatever dimension your product cares about.
Include base64 content or a URL plus a filename and content type. PDFs, CSVs, and ICS invites go out inline — no separate upload step, no signed-URL dance.
Idiomatic clients with full types for the send, batch, schedule, and suppression calls — so your editor autocompletes the payload and catches a wrong field before you ship it.
Send a test, tail your event stream, and manage domains and API keys from the terminal. Wire it into CI to fire a smoke-test email on every deploy.
An MCP server exposes the same send and lookup tools to Claude and other agents, so an assistant can send and verify mail through your infrastructure — no scraping a dashboard.
Point any existing app, framework mailer, or off-the-shelf tool at mailstein over SMTP with a generated username and password. Same IP, same SPF/DKIM/DMARC signing, same suppression list, same logs as the REST API — migrate without rewriting your mail layer.
Free tier is 50 emails a month on one domain — no card. Wire up a send in a couple of minutes.
Start free →