Skip to content

From Resend

A near-identical API shape, plus the parts that are deliberately different.

The short version

The request bodies are close enough that most migrations are a base URL and an API key.

Field mapping

ResendOutSend
fromfrom
toto
subjectsubject
htmlhtml
texttext
reply_toreplyTo (or reply_to)
headersheaders
scheduled_atscheduled_at
tags— not currently supported
- https://api.resend.com/emails
+ https://app.getoutsend.com/api/v1/emails

Event mapping

ResendOutSend
email.deliveredemail.delivered
email.bouncedemail.bounced
email.openedemail.opened
email.clickedemail.clicked
email.complainedemail.complained
email.delivery_delayeddelivery_delay event

Checklist

  1. Verify your domain and publish DKIM, SPF, and DMARC.
  2. Import your suppression list.
  3. Change the base URL and the API key. Rename reply_to if you prefer the camelCase form.
  4. Add an Idempotency-Key header to anything you retry.
  5. Point your webhook consumer at the new signature scheme.

Being fair about it

Resend is a genuinely good product with excellent developer experience, and it offers managed dedicated IPs — we are not going to tell you otherwise. The reasons to move are specific:

  • The core is open source and self-hostable. You can read how sending, suppression, and reputation scoring work, run the whole thing yourself, and leave whenever you like.
  • Events keep the provider’s raw payload, not only a normalised summary.
  • No venture capital, so there is no acquisition clock and no quarter where reliability loses to growth.
  • Published methodology for what we measure and how — see transparency.

If those do not matter for your use case, staying put is a reasonable decision.