Migrate from Resend
Sendibl's sending API is shape-compatible with Resend's, and the official Resend SDKs support base-URL overrides. Most apps migrate with two environment variables — no code changes.
1. Add and verify your domains
Add each sending domain in the dashboard. If your DNS is on Cloudflare, the one-click auto-configure creates all records for you; otherwise publish the records shown and hit Verify.
send.yourdomain.com is identical to ours and can stay. Its MX record at the same host is not — after your domains verify, delete any MX pointing at feedback-smtp.us-east-1.amazonses.com. Two conflicting MX records stop the branded envelope sender from verifying, and your mail shows mailed-by: amazonses.com instead of your domain.2. Mint new API keys
Resend key secrets can't be exported, so create a fresh Sendibl key per app under API Keys.
3. Point your apps at Sendibl
If you use the official Resend SDKs, it's just environment config — the SDKs page covers every language (PHP, Go, Ruby, Rust, and the Java caveat) plus the full compatibility matrix:
RESEND_API_KEY=sb_... # your new Sendibl key RESEND_BASE_URL=https://api.sendibl.com # SDK reads this automatically
RESEND_API_KEY=sb_... RESEND_API_URL=https://api.sendibl.com
Calling the REST API directly? Replace https://api.resend.com with https://api.sendibl.com — the request and response shapes for sending match:
POST /emails {"from", "to", "subject", "html", "text", "cc", "bcc",
"reply_to", "headers", "attachments", ...}
POST /emails/batch [ up to 100 email objects ]
GET /emails/:id4. Test before you cut over
Send to the simulator addresses (delivered@test.sendibl.comand friends) to exercise your integration end-to-end with zero reputation risk, then send yourself a real email and check Gmail's show details panel: you want mailed-by: send.yourdomain.com and signed-by: yourdomain.com.
5. Clean up
Once traffic flows through Sendibl:
- Delete the old Resend MX at
send.*(if you haven't already) and theresend._domainkeyTXT record per domain. - Delete your Resend API keys, then the domains, then close the account.
sendibl-timestamp, sendibl-signature — see Webhooks), and test addresses live at @test.sendibl.com instead of @resend.dev.