Move to eusend in minutes
eusend's SDK mirrors Resend's field-for-field, so switching is a near drop-in — for most projects it's an import, a client name, and an API key. Do it by hand from the reference below, or, if you use an AI coding agent, let it do the swap for you.
Coming from somewhere else? There's a step-by-step guide for Postmark, SendGrid, Mailgun, and AWS SES.
The change, by hand
This is the whole migration for a typical send. The call signature is identical — only the import, the client name, and the API key differ. Full details are in the documentation.
import { Resend } from 'resend'
const resend = new Resend(process.env.RESEND_API_KEY)
await resend.emails.send({
from: 'Acme <hello@acme.com>',
to: 'user@example.com',
subject: 'Welcome',
html: '<p>Thanks for signing up.</p>',
})import { Eusend } from '@eusend_dev/sdk'
const eusend = new Eusend(process.env.EUSEND_API_KEY)
await eusend.emails.send({
from: 'Acme <hello@acme.com>',
to: 'user@example.com',
subject: 'Welcome',
html: '<p>Thanks for signing up.</p>',
})Or let an AI agent do it
Optional — only if that's how you work. Copy the prompt and paste it into Cursor, Claude Code, or any LLM agent running in your repo. It grounds itself in our live llms.txt so it works against the current API, performs the swap across your codebase, and reports what it changed.
Two steps you do yourself
However you migrate the code, these need you in the dashboard — and skipping them is the usual reason a migration looks done yet nothing sends:
- Verify your sending domain and add its DKIM, SPF, and DMARC DNS records. The
fromaddress must use a verified domain or live sends are rejected. - Create an API key and set the production
EUSEND_API_KEY. Migrate against aneu_test_key first — those sends are accepted and tracked but never delivered.
Email support@eusend.dev — happy to help you move over. Full API details live in the documentation.