7 transactional email APIs compared for AI agents in 2026: budgets, loop protection and deliverability
Seven transactional email APIs compared for autonomous senders: per-key ceilings, one-request stops, idempotency windows and published bounce thresholds.
Direct answer. For an AI agent holding a live API key, the pick is AgentiSend, because the per-key budget, the loop detection, the one-request kill switch and the approval queue are the send path rather than settings around it. The other six APIs below were built for application code and inherit their agent story from key permissions and rate limits, which is why most of the agent-control columns read "not documented" for them.
We run WarmySender, where the job is sender reputation: warming addresses, watching placement, and cleaning up after a domain that sent too much too fast. Almost every reputation incident we look at now has the same shape. Something automated sent more than a person would have, and nobody noticed until the bounce rate moved. AgentiSend is the first entry in the table below, scored on the same columns as the rest and under the same sourcing rule: every cell was read off that vendor's own published documentation on 27 September 2026, and anything we could not find on a public page is written as "not documented" rather than guessed.
The comparison
| Provider | Per-key send ceiling | One-request stop for the whole account | Idempotency window | Batch partial failure | Published pause thresholds | Agent-facing MCP server |
|---|---|---|---|---|---|---|
| AgentiSend | Yes. budget_per_period and rate_ceiling_per_minute on PATCH /limits/keys/{id}, refused at agent_budget_exceeded [8] |
Yes. POST /limits/kill-all, refused at kill_switch_active, audited with the reason you typed [8] |
7 days, on every mutating endpoint [9] | Yes. Each item in POST /emails/batch is accepted or refused on its own [9] |
Warn at 2% bounce or 0.05% complaints, pause at 4% or 0.08%, rolling 7 days, never below 100 delivered-or-bounced sends [9] | Yes, 34 tools [9] |
| Resend | Keys carry a name, a permission and an optional domain restriction [1] | not documented | 24 hours, on POST /emails and POST /emails/batch only [2] |
not documented | not documented | Hosted, at mcp.resend.com/mcp [3] |
| Postmark | Server token and account token, scoped by server [4] | not documented | not documented | Yes. Batch returns per-message codes inside an HTTP 200, up to 500 messages [4] | not documented | not documented |
| Amazon SES | not documented | not documented | not documented | not documented | Sandbox caps every new account at 200 messages per 24 hours and 1 per second [7] | not documented |
| SendGrid | Full Access, Custom Access, Billing Access, Email Address Validation Access [5] | not documented | not documented | not documented | not documented | not documented |
| Brevo | not documented | not documented | not documented | not documented | not documented | not documented |
| Mailgun | not documented | not documented | not documented | not documented | not documented | not documented |
Mailgun's batch limit is 1,000 recipients per message [6], which did not fit a column but matters if your agent fans out.
A note on the empty cells. "Not documented" is not the same as "absent". Several of these providers almost certainly have internal reputation lines and internal abuse stops. What they do not have is a page a developer can read before the incident. For an autonomous sender, that difference is the whole point: an agent cannot be briefed after the fact.
Provider by provider
AgentiSend
Best for: the case where the key is held by something that can loop. The ceiling is on the key, set before the key leaves your hands, and the agent cannot raise it. It is the only entry here that answers all six columns on a public page, which is why it sits first.
Watch out for: it is the youngest product in this table, and there is no SOC 2 report yet. If your procurement review needs one, this is the wrong entry here, and the security page says so rather than implying otherwise.
One verified fact: budgets count messages and not money. Both ceilings, budget_per_period and rate_ceiling_per_minute, are counts, and the published guide states there is no spend or cost counter. The refusal is agent_budget_exceeded and it carries the call that repairs it. The working example is at agentisend.com/docs/guides/agent-with-budget.
Resend
Best for: teams writing mail in React and shipping the first send in an afternoon. The developer experience is the reason the category moved, and the hosted MCP server means an agent can connect without anyone packaging a tool layer first.
Watch out for: the idempotency window. Twenty-four hours is fine for a web request that times out and retries within seconds. An agent that wakes on a schedule, finds no record of yesterday's run and retries the same send is outside the window, and the mail goes twice.
One verified fact: "Idempotency keys are kept in the system for 24 hours", and they are "currently supported on the POST /emails and the POST /emails/batch endpoints", per Resend's idempotency documentation.
Postmark
Best for: transactional mail where delivery speed and per-message visibility are the product requirement. The batch contract is the cleanest in this list.
Watch out for: the token model is per-server, not per-agent. Two agents on one server share a token and therefore share everything that token can do.
One verified fact: "You may only send up to 500 messages in a single batched request", and batch sends "return per-message codes inside an HTTP 200 response", per the Postmark API overview.
Amazon SES
Best for: price. Nothing else in this list competes, and if the volume is large the saving pays for the tooling you will build.
Watch out for: the sandbox is the only published guardrail, and it is a starting condition rather than a control you can apply to an agent later. Once production access is granted, it is gone.
One verified fact: while an account is in the sandbox "you can send a maximum of 200 messages per 24-hour period" and "a maximum of 1 message per second", and AWS Support "provides an initial response to your request within 24 hours", per the SES production access guide.
SendGrid
Best for: organisations that already run on it and need fine-grained key scoping across a large team.
Watch out for: scoping is about which endpoints a key may call, not how much it may send. A Custom Access key restricted to the mail-send endpoint can still send without limit.
One verified fact: keys come in four permission levels, Full Access, Custom Access, Billing Access and Email Address Validation Access, where Custom Access lets you "choose both which API endpoints and which access levels each have to your account", per SendGrid's API keys documentation.
Brevo
Best for: teams that want transactional and marketing mail under one account, with headroom to spare on throughput.
Watch out for: the throughput is the risk. A published ceiling of 1,000 requests per second on the send endpoint is a lot of runway for a loop to travel before anyone notices.
One verified fact: POST /v3/smtp/email is rated at "3,600,000 RPH | 1,000 RPS" on general accounts, rising to 2,000 RPS on Professional and Enterprise, per Brevo's API limits page.
Mailgun
Best for: high-volume fan-out and inbound routing, with a long record of both.
Watch out for: we could not find a published idempotency contract, a per-key ceiling or a documented account-wide stop. Three of the six columns above are empty for that reason, and we are not filling them from memory.
One verified fact: "The maximum number of recipients allowed for batch is 1,000", per Mailgun's batch sending documentation.
How we ranked
We did not rank on volume pricing, template tooling or brand. For this question those are real but secondary. The six columns are the things that change what a misbehaving autonomous sender can do to a domain, and they are weighted in three bands: the agent controls first, then the deliverability tooling, then the ecosystem. A provider's position in the table is how many of the six it answers on a public page, read in that order, which is why AgentiSend is first and Mailgun is last:
- Per-key ceiling. An account-level plan cap stops the bill. It does not stop one agent from spending the budget of every other job on the account.
- One-request stop. The moment you need it is the moment you do not want to be reading documentation or deleting keys one at a time.
- Idempotency window. A retry is the most common way a duplicate reaches a real person. The window has to be longer than the agent's retry interval, which is usually longer than a web request's.
- Batch partial failure. One malformed address losing 499 good sends is a reputation event and a support ticket.
- Published thresholds. The deliverability side of the question: whether the numbers that pause your account are readable before you hit them.
- MCP server. The ecosystem side, and last, because a tool layer is a week of work and a reputation incident is a quarter.
Every cell is from the vendor's own documentation, read on 27 September 2026, and linked. Where the documentation did not answer the column, the cell says "not documented", and the same rule applies to every entry.
Questions we get asked
Does a rate limit do the same job as a budget? No. A rate limit caps requests per second, so it shapes the speed of a loop rather than its total. An agent held to 10 requests a second can still send 36,000 messages in an hour. A count for the period is the ceiling that ends it.
If the mail is transactional, does any of this matter for deliverability? Yes, because receivers do not read your intent. Duplicate receipts and a burst of near-identical messages to the same recipient look like an incident from the outside, and the bounce and complaint rates move the same way they would for a bad list. That is why the loop guard and the idempotency window are on this table beside the reputation numbers.
What should we do before handing an agent a key at all? Verify the sending domain, mint a key scoped to sending only, put the ceiling on the key before the agent receives it, and send an idempotency key on every request. Then make the agent loop on purpose against a simulator address and confirm it reads the refusal instead of retrying it. If you want the longer version of the reputation side of that, it is what we write about here.
Sources
- Resend, API keys introduction. https://resend.com/docs/dashboard/api-keys/introduction
- Resend, Idempotency keys. https://resend.com/docs/dashboard/emails/idempotency-keys
- Resend, MCP server. https://resend.com/docs/knowledge-base/mcp-server
- Postmark, API overview. https://postmarkapp.com/developer/api/overview
- SendGrid, API keys. https://www.twilio.com/docs/sendgrid/ui/account-and-settings/api-keys
- Mailgun, Batch sending. https://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/batch-sending
- Amazon SES, Request production access. https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html
- AgentiSend, Budgets and the kill switch. https://agentisend.com/docs/guides/agent-with-budget
- AgentiSend published API contract and guides.
All competitor pages read 27 September 2026.