Transactional email service
Sendboy is an email API for the messages your product can’t lose: receipts, sign-in codes, password resets.
POST https://api.sendboy.app/emails { "from": "Acme <receipts@acme.com>", "to": "jane@example.com", "subject": "Your receipt #4021", "html": "<p>Thanks for your order.</p>" }
One authenticated POST sends an email, and every resource works the same way: domains, API keys, webhooks, batch and scheduled sends. Coming from Resend? The request and response are the same, so you change the base URL and the key.
| POST | /emails | Send one email |
| POST | /emails/batch | Send up to 100 at once |
| GET | /emails/:id | Status and last event |
| PATCH | /emails/:id | Reschedule |
| POST | /emails/:id/cancel | Cancel a scheduled send |
| POST | /domains | Add a domain, get its DNS records |
| POST | /webhooks | Get events on your server |
curl https://api.sendboy.app/emails \
-H "Authorization: Bearer $SENDBOY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <receipts@acme.com>",
"to": "jane@example.com",
"subject": "Your receipt #4021",
"html": "<p>Thanks for your order.</p>"
}'
{ "id": "01a19802-56a6-7706-8194-222d66e2b4e6" }One HTTPS request from any language, no SDK to install. Templates you write in the dashboard go out by alias, with your variables filled in.
const res = await fetch('https://api.sendboy.app/emails', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SENDBOY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: 'Acme <receipts@acme.com>',
to: 'jane@example.com',
subject: 'Your receipt #4021',
html: '<p>Thanks for your order.</p>',
}),
});
console.log(await res.json());
No SDK needed. It’s one HTTPS request with a JSON body.
We check the key, the sender domain, your plan and the suppression list, and answer right away.
Your email waits its turn under the sending rate limit, so a burst never gets throttled.
Signed with your domain’s DKIM key and handed to the mail network.
Receiving servers report deliveries, bounces and complaints. We check the signature on every report before we act on it.
Each event goes to your webhook, signed, and is retried for 28 hours if your server is down.

Hard bounces and complaints go on a suppression list, so you never mail a dead address twice. Teams whose bounce or complaint rate climbs are paused before they drag down delivery for everyone else.

Every plan includes the API, webhooks, the dashboard, suppression lists and DKIM on your domain.
$0/month
3,000 emails a month
For trying it out and side projects.
$10/month
50,000 emails a month
For a product with real users.
Start on Free. We move you to Pro by hand while billing is in beta.
Start free100,000 emails a month
For teams sending every day, at volume.
Pricing coming soon.
Enter your work email. You can send as soon as your domain is verified.