sendboy

Transactional email service

Ship emails,
not infrastructure.

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>"
}
  1. 0 msaccepted200 · domain verified, recipient not suppressed
  2. 9 msqueuedwaiting its turn under the sending rate limit
  3. 0.4 ssentDKIM-signed for acme.com and sent
  4. 2.1 sdeliveredaccepted by the receiving mail server
  5. 2.2 swebhookemail.delivered → your endpoint, 200

A simple API.

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/emailsSend one email
POST/emails/batchSend up to 100 at once
GET/emails/:idStatus and last event
PATCH/emails/:idReschedule
POST/emails/:id/cancelCancel a scheduled send
POST/domainsAdd a domain, get its DNS records
POST/webhooksGet 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" }

Works with your stack.

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.

send.mjs
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.

After you hit send.

  1. Accepted

    We check the key, the sender domain, your plan and the suppression list, and answer right away.

  2. Queued

    Your email waits its turn under the sending rate limit, so a burst never gets throttled.

  3. Sent

    Signed with your domain’s DKIM key and handed to the mail network.

  4. Delivered, or not

    Receiving servers report deliveries, bounces and complaints. We check the signature on every report before we act on it.

  5. Reported to you

    Each event goes to your webhook, signed, and is retried for 28 hours if your server is down.

Workers at the pneumatic tube terminal of the New York post office in 1914, a large curved tube rising from the floor.
New York’s post office pneumatic tube terminal, 1914. A letter went in and came out across the city minutes later.

Reputation, guarded.

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.

4%
bounce rate over 7 days that pauses sending
0.08%
complaint rate that does the same
28 h
of webhook retries if your server is down
10/s
API requests per team, before we ask you to slow down
An 1888 map of the Paris pneumatic tube network: lines radiating between telegraph offices across the city.
The Paris pneumatic tube network, 1888.

Free to start.

Every plan includes the API, webhooks, the dashboard, suppression lists and DKIM on your domain.

Pro

$10/month

50,000 emails a month

For a product with real users.

  • No daily cap
  • 10 domains
  • Logs kept 3 days

Start on Free. We move you to Pro by hand while billing is in beta.

Start free

Scale

100,000 emails a month

For teams sending every day, at volume.

  • No daily cap
  • 1,000 domains
  • Logs kept 7 days

Pricing coming soon.

Send your first email.

Enter your work email. You can send as soon as your domain is verified.