Send email with
one API call.
A REST API designed by people who have to use it. Idempotency keys, tagged sends, full event streams, and SDKs that look like the docs.
1curl 'https://api.sendly.now/emails' \2 -X POST \3 -H "Authorization: Bearer sk_live_…" \4 -H "Idempotency-Key: ord_8f2a1c" \5 -H "Content-Type: application/json" \6 -d '{7 "from": "Acme <hello@acme.com>",8 "to": "jane@example.com",9 "subject": "Welcome to Acme, Jane.",10 "html": "<p>Your account is ready.</p>",11 "tags": ["onboarding", "welcome"]12 }'
Built to send at scale.
A REST API with idempotency keys baked in, queued by region, retried with exponential backoff, and signed webhooks for every event. Nothing falls on the floor.
Every event,
as it happens.
HMAC-signed payloads, automatic retries with exponential backoff, dead-letter inspection. Server-Sent Events too if you'd rather stream straight to your dashboard.
{ "type": "email.delivered", "id": "evt_3d9c2b", "created_at": "2026-05-24T14:32:09Z", "data": { "email_id": "msg_8f2a1c4b9d", "to": "jane@example.com", "tags": ["onboarding", "welcome"], "latency_ms": 142 } }
Write emails in React.
First-class React Email support. Components, props, themes — the same toolchain you already use, rendered to inbox-perfect HTML on send.
1// emails/welcome.tsx 2import { Html, Heading, Text, Button } from '@react-email/components' 3 4export default function Welcome({ name, url }) { 5 return ( 6 <Html> 7 <Heading>Welcome to Acme, {name}.</Heading> 8 <Text>Your account is ready. Here's what 9 to do next…</Text> 10 <Button href={url}>Set up your domain</Button> 11 </Html> 12 ) 13} 14 15Sent via sendly.emails.send({ react: <Welcome … /> })
Welcome to Acme, Jane.
Your account is ready. Here's what to do next — verify your sending domain and ship your first email in under five minutes.
If you get stuck, reply to this email and we'll write back personally.
Write, design, send.
No code required.
For the marketers on your team — a visual composer that produces the same React Email components your transactional pipeline already uses.
A new way to write to your customers.
This week, Sendly ships a visual composer alongside the React Email pipeline you already know. Same components, same theme tokens — now with a drag handle.
Designed for the marketers on your team. Reviewed by the engineers who own the codebase.
One contact, complete history.
Every send, open, click and bounce attached to a single record. Build live segments on any property — they update the moment a contact changes.
Reach inboxes, not spam.
DKIM, SPF and DMARC records generated for every domain you add. Continuous reputation monitoring, automatic suppression lists.
Everything in your control.
Your stack, first-class support.
Hand-written SDKs that mirror the docs verbatim. Type-safe end to end. Versioned in lockstep with the API.
import { Sendly } from 'sendly-sdk' const sendly = new Sendly(process.env.SENDLY_KEY) await sendly.emails.send({ from: 'Acme <hello@acme.com>', to: 'jane@example.com', subject: 'Welcome.', react: <Welcome name="Jane" /> })
from sendly import Sendly sendly = Sendly(key=os.environ['SENDLY_KEY']) sendly.emails.send( from_='Acme <hello@acme.com>', to='jane@example.com', subject='Welcome.', html=render(welcome, name='Jane'), )
Or keep the SDK you already run — Sendly speaks the transactional-send APIs of Resend, SendGrid, Postmark, Mailgun, and Plunk. Swap the base URL and the key. Migration guides
Three lines.
One inbox.
Install the SDK, paste your API key, send. The dev-mode CLI watches your templates and renders live previews so you ship intentionally, not anxiously.
An endpoint for agents.
Sendly runs a remote Model Context Protocol server, so an AI client can work in your account directly. You choose what it may do: permissions that cannot be undone — sending mail, revoking API keys — are never granted by default. They sit unchecked behind a warning, and you tick them yourself.
claude mcp add --transport http sendly https://app.sendly.now/api/mcpclaude mcp add --transport http sendly https://app.sendly.now/api/mcp \
--header "Authorization: Bearer sk_…"pk_ keys are refused.Stamp something today.
A free API key, three lines of code, and your first message lands in seconds. No card, no overage email, no surprises.