Email infrastructure for developers

Ship email with complete confidence.

A developer-first email platform with a clean API, real-time event tracking, broadcast campaigns, and deliverability tools, all from one dashboard.

AWS SES

Delivery backbone

REST + SMTP

Two sending methods

7 SDKs

TS, Python, Go, PHP, Rust, Java, .NET

send-email.ts
1import { Sendry } from 'sendry-sdk';
2
3const sendry = new Sendry('sn_live_...');
4
5await sendry.emails.send({
6 from: 'hello@yourapp.com',
7 to: 'user@example.com',
8 subject: 'Welcome aboard',
9 html: '<p>Thanks for signing up!</p>',
10});

Track every event

Real-time visibility into delivery, opens, and clicks.

email.delivered
+0.8s
email.opened
+4m 12s
email.clicked
+4m 38s

Webhooks built in

HMAC-signed payloads delivered to your endpoint for every event. Automatic retries with exponential backoff.

Everything you need to ship email

From sending to tracking to compliance: one platform, no duct tape.

REST API & SMTP relay

Send via clean REST endpoints or drop-in SMTP on port 2525. Same delivery pipeline, same tracking, your choice.

Analytics & reports

Delivery metrics, open rates, click rates, cohort analysis, and industry benchmarks. Schedule CSV reports to your inbox.

Open & click tracking

Automatic pixel and link tracking. Know when every email is opened and every link is clicked, in real time.

Webhooks

HMAC-signed event delivery for sends, bounces, complaints, opens, and clicks. Automatic retries with exponential backoff.

Inbound email

Receive and parse incoming email. Forward structured payloads to your systems via signed webhooks, and close the loop on two-way email.

Teams & scoped keys

Multi-seat orgs with owner, admin, and member roles. Scoped API keys: full access, sending access, or read-only.

Broadcast campaigns

Schedule marketing campaigns to entire audiences. Tracks opens, clicks, bounces, and unsubscribes per campaign.

Dedicated IPs & warmup

Provision dedicated sending IPs with automated warmup scheduling. Protect your reputation on high-volume workloads.

Deliverability

Land in the inbox, not the spam folder

Domain authentication, suppression management, and compliance tooling work together to protect your sender reputation.

Learn more

Domain verification

SPF, DKIM, and DMARC checks

Suppression lists

Auto-suppress bounces & complaints

Unsubscribe management

RFC 8058 one-click unsubscribe

Blocklist monitoring

Real-time checks across 15+ RBLs

Bounce handling

Hard bounce detection & filtering

BIMI authentication

Brand logo in the inbox

Build emails with React

Use React Email components to build type-safe, responsive templates with Tailwind CSS. Preview locally, render server-side, and send via the API.

Component-based email templates
Tailwind CSS support in emails
Local preview with hot reload
welcome.tsx
1import { Html, Head, Body, Text } from '@react-email/components';
2import { Tailwind } from '@react-email/tailwind';
3
4export default function Welcome({ name }) {
5 return (
6 <Tailwind>
7 <Html>
8 <Body className="bg-white font-sans">
9 <Text className="text-xl font-bold">
10 Welcome, {name}!
11 </Text>
12 </Body>
13 </Html>
14 </Tailwind>
15 );
16}
Official SDKs

Your language, our infrastructure

Official SDKs for TypeScript, Python, Go, PHP (Laravel), Rust, Java, and .NET. Plus a CLI (`sendry`), MCP server for AI agents, Zapier app, n8n node, and Vercel AI SDK adapter. Typed responses, automatic retries, full API coverage. Or use the REST API directly. It’s just HTTP.

TypeScript SDK with full type inference
Python (sync + async), Go, PHP, Rust, Java & .NET SDKs
`sendry` CLI + MCP server (101 tools for Claude / Cursor / Codex)
Zapier app, n8n node & Vercel AI SDK adapter
Laravel service provider + facade for drop-in install
SMTP relay, works with any language or framework
Idempotency keys and automatic retry logic
Read the docs
send.tsTypeScript
import { Sendry } from 'sendry-sdk';
const sendry = new Sendry(process.env.SENDRY_API_KEY);
await sendry.emails.send({
  from: 'noreply@yourapp.com',
  to: 'user@example.com',
  subject: 'Your order shipped',
  html: '<p>Track it at <a href="#">here</a>.</p>',
});
send.pyPython
from sendry import Sendry
client = Sendry(api_key=os.environ["SENDRY_API_KEY"])
client.emails.send({
  "from": "noreply@yourapp.com",
  "to": "user@example.com",
  "subject": "Your order shipped",
  "html": "<p>Track your order inside.</p>",
})
send.goGo
client := sendry.NewClient(os.Getenv("SENDRY_API_KEY"))
_, err := client.Emails.Send(ctx, &sendry.EmailParams{
  From:    "noreply@yourapp.com",
  To:      []string{"user@example.com"},
  Subject: "Your order shipped",
  HTML:    "<p>Track your order inside.</p>",
})
send.phpPHP
use Sendry\Sendry;
$sendry = new Sendry(env('SENDRY_API_KEY'));
$sendry->emails->send([
  'from'    => 'noreply@yourapp.com',
  'to'      => 'user@example.com',
  'subject' => 'Your order shipped',
  'html'    => '<p>Track your order inside.</p>',
]);
send.rsRust
use sendry::{Sendry, SendEmail};
let client = Sendry::new(std::env::var("SENDRY_API_KEY")?);
client.emails().send(SendEmail {
    from: "noreply@yourapp.com".into(),
    to: vec!["user@example.com".into()],
    subject: "Your order shipped".into(),
    html: Some("<p>Track your order inside.</p>".into()),
    ..Default::default()
}).await?;
Send.javaJava
Sendry sendry = new Sendry(System.getenv("SENDRY_API_KEY"));
sendry.emails.send(Map.of(
  "from", "noreply@yourapp.com",
  "to", "user@example.com",
  "subject", "Your order shipped",
  "html", "<p>Track your order inside.</p>"
));
Send.cs.NET
var sendry = new SendryClient(Environment.GetEnvironmentVariable("SENDRY_API_KEY"));
await sendry.Emails.SendAsync(new SendEmailParams {
    From = "noreply@yourapp.com",
    To = "user@example.com",
    Subject = "Your order shipped",
    Html = "<p>Track your order inside.</p>"
});
send.shCLI
sendry login   # one-time auth
sendry emails send \
  --from noreply@yourapp.com \
  --to user@example.com \
  --subject "Your order shipped" \
  --html "<p>Track your order inside.</p>"

Trusted by engineering teams

Sendry's API is exactly what we needed: clean, predictable, and the tracking just works out of the box. We were sending in production within an hour.

Maya R.

Engineering Lead · Series A SaaS

We replaced our in-house SES wrapper with Sendry. The webhook reliability and real-time analytics alone saved us a sprint every quarter.

Daniel K.

CTO · B2B Fintech

Scoped API keys and suppression lists meant we could give our client teams access without worrying about them nuking our sender reputation.

Priya S.

Platform Engineer · Agency & Tooling

Start free. Scale without surprises.

3,000 emails/month free, forever. Upgrade to Pro for $18/mo and unlock 50,000 emails, broadcast campaigns, analytics exports, and more. Significantly more affordable than the competition.

Free

$0

3k emails/mo

Side projects & prototypes

Pro

$18/mo

50k emails/mo

Growing products

Business

$79/mo

200k emails/mo

Production workloads

Enterprise

Custom

Unlimited

High-volume & compliance

Your next email is one API call away.

Create a free account in 60 seconds. No credit card required. Upgrade when you’re ready to scale.