AgentiSend is a transactional email API and Resend alternative that accepts Resend-compatible requests, puts a send budget on every API key, and gives you one call that stops all sending. It is meant for apps that send receipts, password resets, sign-in codes and alerts, and for the AI agents those apps now run.
I'm Numan, and I built it. This post covers why, how it lines up against Resend on price and features, and where Resend is the better choice. Resend figures below are from Resend's own pricing and docs pages as of November 2026. AgentiSend figures are from agentisend.com and its pricing page.
Why I built it
Resend is a good product. Plenty of developers use it, it has React Email, and its free tier is useful. I'm not writing this to knock it.
What pushed me was a narrower problem. More and more code that sends email isn't a person clicking a button. It's an agent or a background job calling an API in a loop. If that loop goes wrong, nobody notices until a few thousand people get the same email.
So I wanted an email API where the limits are part of the key itself:
-
Every new API key is created with a send budget. When the budget is spent, the API refuses with
agent_budget_exceeded, and a key can't raise its own budget. -
One request stops everything.
POST /limits/kill-allpauses every key on the account. To stop one key, usePOST /limits/keys/{id}/kill. Both write an audit row. - Repeated sends that look like a loop are held. They wait in an approval queue until a person decides.
-
Every refusal tells you what to do next. The error carries a
code, amessage, afixnaming the call that repairs it, adocs_url, and whether it'sretryable. -
You can test without sending.
POST /emails/preflightruns every check a real send runs (domain, sandbox, suppression, budget, loop, content) and sends nothing.
The same operations and limits are available over REST and through a hosted MCP server at https://api.agentisend.com/mcp, so Claude, Cursor or any MCP client can send under the same rules as your code.
Switching from Resend: the request shape is the same
This was a hard requirement for me. If you already use Resend, moving shouldn't mean rewriting your call sites.
POST /emails, POST /emails/batch, GET/PATCH /emails/{id} and POST /emails/{id}/cancel accept Resend's request bodies, camelCase names included. You can point the official Resend Node SDK at AgentiSend by changing the base URL and the key:
import { Resend } from 'resend';
const resend = new Resend(process.env.AGENTISEND_API_KEY, {
baseUrl: 'https://api.agentisend.com',
});
await resend.emails.send({
from: 'Acme <receipts@acme.com>',
to: 'customer@example.com',
subject: 'Your receipt',
html: '<p>Thanks for your order.</p>',
});
For Python, set RESEND_API_URL=https://api.agentisend.com. There's also a compatibility client in the Node package (agentisend/compat-resend) if you'd rather change only the import line.
Two things differ on purpose, and the migration guide says so up front. First, keys have enforced budgets, so if you port a key that sends heavily, set its budget to your real volume before you cut over. Otherwise the first thing the migration does is stop. Second, domains have a region setting (us or eu) that defaults to us. Today all mail is still sent from US nodes, and eu domains move to EU sending when it ships.
AgentiSend vs Resend: side by side
| AgentiSend | Resend (as of Nov 2026) | |
|---|---|---|
| Free plan | 5,000 emails/month, 170/day, 3 domains, no card, no expiry | 3,000 emails/month, 100/day, 3 domains, free forever |
| First paid plan | Starter: $9/month for 30,000 emails | Pro: $20/month for 50,000 emails (no plan between Free and Pro) |
| 50,000 emails/month | Pro: $16/month | Pro: $20/month |
| 100,000 emails/month | Pro: $28/month | Pro: $35/month, or Scale: $90/month |
| Yearly billing | 40% off every paid plan | Monthly only, no annual discount |
| Pay-once option | Lifetime plans from $49 for 250,000 emails that don't expire | Not offered |
| Spending limit per key | Send budget on every key, enforced | API key permissions; no per-key send budget listed |
| Idempotency keys | Every mutating endpoint, kept 7 days | Sends, batches and some inbox actions, kept 24 hours |
| Message history | 7 / 30 / 90 / 180 days by plan | 30 days on Free, Pro and Scale |
| Default rate limit | 600 requests per key per 60 seconds | 10 requests per second per team |
| MCP server | Hosted, same operations and limits as REST | Remote and self-hosted MCP server |
| SMTP relay | Not documented; REST and MCP only | Yes, every plan |
| React Email | Not a replacement for it | Yes |
| Inbound email | Per-domain switch with one MX record | Every plan, plus 3 inboxes |
| Security reports | No SOC 2 report yet | SOC 2 Type II on every plan |
| DKIM key | 2048-bit RSA | 1024-bit (Resend explains why it considers this enough) |
| Dedicated IP | On request on Scale | $30/month add-on on Scale, for senders over 3,000 emails/day |
| Uptime commitment | 99.9% monthly on Scale | 99.99% SLA on Enterprise |
Sources: Resend pricing, Resend idempotency keys, Resend rate limits, Resend on 2048-bit DKIM, Resend llms.txt. AgentiSend: pricing, migration guide, llms.txt. The full, sourced comparison lives at agentisend.com/vs/resend.
A note on the price rows: at each volume Resend sells, AgentiSend's monthly price is 20% lower ($16 vs $20 at 50,000, $28 vs $35 at 100,000). The bigger difference is in billing terms. Resend is monthly only. AgentiSend has a 40% yearly discount and lifetime plans: $49 for 250,000 emails, $99 for 600,000, $199 for 1.5M and $349 for 3M. Each is sent at up to a monthly maximum, and the emails never expire.
How the limits behave when you hit them
I care about this more than the headline price, because it's what happens at 3 a.m.
On AgentiSend, sending pauses when you reach your plan's emails. Nothing extra is charged unless an owner turns overage on in billing settings and sets a ceiling. Overage is $0.75 per 1,000 on Starter, $0.72 on Pro and $0.60 on Scale, and sending stops at the ceiling you set. The free plan never charges overage.
On Resend, pay-as-you-go lets a paid plan keep sending past its quota at $0.90 per 1,000 on Pro. If you haven't turned it on, Resend notifies you and offers an upgrade.
Neither approach is wrong. If a hard stop would hurt you more than an unexpected bill, Resend's default may suit you better. If an unexpected bill is the bigger risk, especially with an agent holding the key, a hard stop is the safer default.
When to pick which
Pick Resend if:
- You build emails with React Email and want that workflow end to end.
- You need SMTP (a CMS, a legacy app, or a tool that only speaks SMTP).
- Your buyers ask for a SOC 2 Type II report. AgentiSend doesn't have one yet, and its security page says so.
- You want inboxes for agents with threads, or a dedicated IP at a published $30/month.
- You want the better-known API with a bigger ecosystem around it. That counts for something, and AgentiSend is the newer product.
Pick AgentiSend if:
- An AI agent or automated job holds the API key, and you want a send budget on that key, a kill switch, and loop detection without building them yourself.
- Price matters: a larger free plan, 20% less at every volume Resend sells, yearly billing, or a pay-once lifetime plan.
- You want longer message history on paid plans (90 days on Pro, 180 on Scale).
- You want refusals your code, or your agent, can act on, because every error names its fix.
One more thing to be clear about: AgentiSend is for email people expect to get. Cold email isn't a supported use, and the API refuses sends that look like it. Newsletters and announcements to people who opted in are fine, with topics and one-click unsubscribe headers built in.
FAQ
Is AgentiSend a drop-in replacement for Resend?
For sending, mostly yes. The core email endpoints accept Resend's request bodies, and the official Resend SDKs work when you change the base URL. Errors come back with Resend's top-level name, message and statusCode, plus AgentiSend's own error.code and error.fix. It isn't a replacement for React Email, and it doesn't document SMTP submission.
Is there a free plan?
Yes. Every account starts on Free: 5,000 emails a month, up to 170 a day, 3 sending domains, no card and no expiry. Test sends don't count toward it.
How much does AgentiSend cost after the free plan?
Starter is $9/month (30,000 emails), Pro is $16/month (50,000) or $28/month (100,000), and Scale starts at $72/month (100,000). Yearly billing takes 40% off. Lifetime plans run from $49 once for 250,000 emails.
How do I stop an AI agent from sending too much email?
Give the agent its own API key. Every new key is created with a budget. The key can't raise its own budget, and POST /limits/kill-all stops every key on the account. Sends that look like a loop wait for a person to approve them.
Can I keep data in the EU?
You can set a domain's region to eu. As of now, all mail is still sent from US nodes, and eu domains move to EU sending automatically when it ships.
Does AgentiSend have an MCP server?
Yes, hosted at https://api.agentisend.com/mcp (streamable HTTP, bearer auth). It has the same operations and limits as the REST API, so an agent can't do anything over MCP that the key's budget wouldn't allow over REST.
Try it
The free plan doesn't need a card, so the fastest way to judge it is to send something. Start at agentisend.com, read the docs, or go straight to the AgentiSend vs Resend comparison if you want every row with its source.
If you're on Resend and something in this comparison is wrong or out of date, tell me in the comments and I'll fix it. Pricing pages change, and I'd rather be corrected than quoted wrong.
Top comments (0)