Skip to content
NewA free test that shows whether your emails will reach the inbox.

Send your app's emails with one API call

Sign-up codes, receipts and password resets, sent from your own domain.

What it does

Three things you get, in plain words.

  • Sends from your domain

    Mail goes out as noreply@yourcompany.com. It is signed with your own domain key, so inboxes can tell it is really from you.

  • Schedules and batches

    Send up to 100 emails in one request, or pick a time up to 30 days ahead. You can move or cancel a scheduled email.

  • Protects your reputation

    Addresses that bounce or complain are blocked automatically. If problems pile up, we pause sending before your domain gets hurt.

One request, one email

Verify your domain once, then send with a single POST. The fields match Resend, so most code moves over unchanged.

curl https://api.mailbay.dev/v1/emails \
  -H "Authorization: Bearer $MAILBAY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <noreply@acme.com>",
    "to": ["ada@example.com"],
    "subject": "Your receipt",
    "html": "<p>Thanks for your order.</p>",
    "text": "Thanks for your order."
  }'

# {"id": "eml_01jc2m5x7t3v8q0w4r6y9z1a2b"}

The Idempotency-Key header makes a retry safe: the same key within 24 hours returns the first result instead of sending twice.

Example: one email, followed from send to delivered

  1. RequestPOST /v1/emails from noreply@acme.comqueued
  2. Mail serverAccepted for ada@example.comsent
  3. InboxAda's mail server took itdelivered

If an address does not exist, the status becomes bounced and the address is blocked from now on.

Limits, honestly

What it does not do, so you can decide before you start.

  • Your domain must be verified before you can send from it. Until then you can only email your own team and our test addresses.
  • At most 50 recipients and 25 MB per message.
  • No open or click tracking. We do not rewrite your links or add tracking pixels.
  • No stored templates, no React email rendering and no topics. Send the finished HTML yourself.
  • Mail goes out through Amazon SES on shared IP addresses. There are no dedicated IPs.
  • New accounts can send 100 emails a day for the first 7 days. The free plan includes 3,000 emails a month and 3 domains.

Questions

Can I use my existing Resend code?

Mostly, yes. POST /v1/emails takes the same fields as Resend, and the Resend SDK works if you set RESEND_BASE_URL to https://api.mailbay.dev/v1. We tested sending and fetching an email this way. Fields we do not support, such as template or react, return a clear 400 error that names the field.

Do I need to run an SMTP server?

No. We run it. If your tool only speaks SMTP, such as Nodemailer or Supabase, use smtp.mailbay.dev on port 465 or 587 with the username mailbay and your API key as the password.

What happens when an email bounces?

If the address does not exist, or the person marks the email as spam, we add the address to your suppression list and stop sending to it. You can read the list and remove an entry if the address works again.

Is there a Node SDK?

There is one in our repository, but it is not on npm yet, so there is nothing to install for now. The REST API, the Resend SDK and SMTP all work today.

Try it on the free plan.

The free plan has 3 inboxes, 3,000 emails a month and 3 custom domains. No card needed.