Self-hosted Resend: switch with one line
An open-source email API that speaks the Resend API. Keep the resend SDK, change the base URL, and send from our hosted service or your own servers. AGPL-3.0.
import { Resend } from 'resend';
// Before: const resend = new Resend(process.env.RESEND_API_KEY);
const resend = new Resend(process.env.SCRIBASE_MAIL_KEY, {
baseUrl: 'https://mail-api.scribase.com',
});
await resend.emails.send({
from: 'Acme <hello@acme.com>',
to: ['you@example.com'],
subject: 'It works',
html: '<p>Sent through Scribase Mail Studio.</p>',
});# No code change: the resend SDK reads this variable
RESEND_BASE_URL=https://mail-api.scribase.comSame request and response shapes for emails, batch, domains, API keys, contacts, audiences, broadcasts, templates and webhooks. See the migration guide for the full list, including what is not supported yet.
The switch in 30 seconds
Short walkthroughs of Mail Studio, published weekly.
Keep the Resend SDK, change the base URL
Scribase Mail Studio is a Resend-compatible email API: keep the Resend SDK and change one line. Made with Menivor.
Transcript
Moving off Resend usually means rewriting your email code. Not here. Scribase Mail speaks the Resend API, so the official Node, Python and Go SDKs work as they are. Point the base URL at mail-api dot scribase dot com and send. Open source, with a free plan. Try it at mail dot scribase dot com.
The parts of an email API you actually use
Resend-compatible API
Emails, batch, scheduled sends, attachments, tags, idempotency keys, domains, API keys, contacts, audiences, segments, topics, broadcasts and templates, in the same request and response shapes.
Signed webhooks
email.sent, delivered, bounced, complained, opened, clicked, received and more, signed in the Svix format, so resend.webhooks.verify() and the svix library verify them unchanged.
Inbound email
Point an MX record at the inbound server and received mail shows up under /emails/received with attachments and an email.received webhook.
Open and click tracking
First-party tracking pixel and signed redirect links, switched per domain with open_tracking and click_tracking.
Agent tools
An MCP server and a CLI ship in the repository (packages/mcp-server, packages/cli), so a coding agent can send, list and manage domains.
Warm-up and abuse controls
New senders start on warm-up caps, reputation auto-pause stops a bad sender early, and content screening plus a review queue protect the shared sending reputation.
How it compares
From each project's public README, docs and pricing page, checked October 2026. Not affiliated with any of them.
| Scribase Mail Studio | Resend | useSend | Postal | |
|---|---|---|---|---|
| Source code | AGPL-3.0 | Closed (SDKs are MIT) | AGPL-3.0 | MIT |
| Self-host | Yes | No | Yes | Yes |
| Hosted plan | Yes | Yes | Yes | No |
| Works with the resend SDK (baseUrl) | Yes | Yes | No | No |
| Sending path | SMTP relay | Managed | AWS SES | Own MTA and IPs |
| Inbound email | Yes | Yes | No | Yes |
| Svix-format signed webhooks | Yes | Yes | No | No |
| Hosted price for 50,000 emails a month | $20 | $20 | See their pricing | Your servers |
Scribase Mail Studio is a fork of useSend and keeps its AGPL-3.0 license. Resend is a trademark of its owner.
Same price points, open code
Billed monthly. Paid plans have no monthly hard stop: sends above the quota are billed per 1,000. Warm-up caps apply to every new sender.
Free
$0 / month
For trying the API and low-volume projects.
- 3,000 emails per month
- 100 emails per day
- 1 domain
- 1 contact book
- 1 team member
- 1 webhook
Pro
Most teams$20 / month
For products sending to real customers.
- 50,000 emails per month
- No daily plan cap
- 10 domains
- Contact books, team members and webhooks without a plan limit
- $0.90 per 1,000 extra emails
Scale
$90 / month
For teams with high volume and many domains.
- 100,000 emails per month
- No daily plan cap
- 1,000 domains
- Contact books, team members and webhooks without a plan limit
- $0.90 per 1,000 extra emails
Run it on your own servers
One repository: the dashboard, the Resend-compatible API, the inbound mail server, the MCP server and the CLI. Docker image and compose file included. AGPL-3.0, so the code you run stays inspectable.
git clone https://github.com/caelum0x/scribase-mail-studio
cd scribase-mail-studio
# follow the self-host section of the READMEBefore you switch
Do I have to change my code?
Usually one line. The resend Node SDK accepts a baseUrl option and also reads the RESEND_BASE_URL environment variable, so pointing it at https://mail-api.scribase.com with a Scribase Mail key is enough for the endpoints we serve.
Is it affiliated with Resend?
No. Scribase Mail Studio is an independent project that implements the same public REST API shapes so existing code and SDKs keep working.
What is it built on?
It is a fork of useSend (AGPL-3.0) with a Resend-compatible API layer, Svix-format webhooks, inbound email, an MCP server, a CLI, and warm-up and abuse controls added. The full source is public.
Can I self-host it?
Yes. The repository has a Docker image, a compose file and a self-host guide. Under AGPL-3.0 you can run and modify it; if you offer a modified version to users over a network, you share its source.
Why can a new account not send to anyone right away?
New senders start on warm-up caps and verified domains, so one bad sender cannot hurt delivery for everyone else. Limits rise as your sending stays clean.