One API for every email provider
Send email through Resend, Postmark, SendGrid, Mailgun, Amazon SES or Cloudflare with the same TypeScript code. Switching providers is a one-line change.
Why emails-sdk
One API
send() and sendBatch() take the same message and return the same result, whichever provider you use.Swap providers in one line
Each provider is its own import. Change the import and its options, and the rest of your code stays the same.
Zero dependencies
Built only on web standards like
fetch, so it runs on Node.js and edge runtimes without pulling in a provider SDK.Typed errors
Every failure is an
EmailError with a normalized code, such as auth, rate_limited or validation.Batch sending
Uses the provider's batch endpoint where there is one, and returns a result for every message.
Local provider
Prints emails to the console during development and records them for assertions in your tests.