Skip to content

Compare

Email API alternatives, compared on guardrails

8 email APIs compared with AgentiSend on what an agent-held key needs: Resend, Amazon SES, AgentMail, Postmark, SendGrid, Mailgun, Loops, Plunk. Every row is…

ProviderA spending limit per keyWhat a refusal tells youA retry never sends twiceHow long the log keeps a message
AgentiSendEvery key is created with a send budget. The send path refuses with agent_budget_exceeded when it is spent, and a key cannot raise its own. The plan inclusion is a second ceiling (plan_limit_reached).Every refused request carries code, message, fix (the call that repairs it), docs_url and retryable.Idempotency-Key is accepted on every endpoint that changes something and remembered for 7 days.7 days on Free, 30 on Starter, 90 on Pro, 180 on Scale. It is part of the plan and there is no add-on to buy.
ResendThe pricing page lists API key permissions on every plan. It does not list a send budget per key.The rate-limit page names daily_quota_exceeded and monthly_quota_exceeded. A fix field naming the next call is not on that page.Idempotency-Key is supported on POST /emails and POST /emails/batch, kept for 24 hours. Keys can be up to 256 characters.The Free plan lists 30-day data retention. Enterprise says flexible data retention. The other plan bullets on the pricing page do not state a retention period.
Amazon SESA per-credential send budget is not on the pricing page or the account-sending page.PutAccountSendingAttributes documents BadRequestException and TooManyRequestsException. A fix field naming the next call is not on that page.The SendEmail reference does not document an idempotency key. A retried call is not described as returning the first result.The pricing page does not include a message log. It prices storage you configure yourself, including S3 and CloudWatch.
AgentMailPlan caps are on the pricing page (100 a day on Free, 1,000 a day on Developer). A per-key send budget is not.A fix field is not documented on the pricing page or the idempotency guide.Idempotency-Key on send expires 24 hours after the send completes. Create calls can also take a client_id, and a repeat returns the first resource.Storage is sold in gigabytes: 3 GB on Free and 10 GB on Developer. The pricing page links a message-expiry document and does not state a retention period in days.
PostmarkA per-key send budget is not on the pricing page. API permission controls are listed as a feature.A fix field naming the next call is not on the idempotency article or the webhooks overview.Postmark does not support an idempotency key. The support article says to detect duplicates yourself.45 days of activity on every listed plan. Pro and Platform can buy custom retention from 7 to 365 days.
SendGridThe pricing page lists API key permissions. It does not list a send budget per key.A fix field naming the next call is not on the pricing page or the mail-send reference.The mail-send reference does not document an idempotency key.Searchable email activity is 3 days on the 60-day column and on Essentials, and 7 days on Pro and Premier. More history is an add-on.
MailgunA per-key send budget is not on the pricing page. Free and Basic list 2 API keys.A fix field naming the next call is not on the pricing page or the webhook-signing page.An idempotency key is not documented on the pricing page or the webhook-signing page.Log retention is 1 day on Free and Basic, 5 days on Foundation, and 30 days on Scale. Scale lists message retention up to 7 days.
LoopsA per-key send budget is not on the pricing page or the MCP page.The send-transactional page documents 409 for a reused key, 404 when the template is missing, and 400 for other errors. A fix field naming the next call is not on that page.Idempotency-Key is optional, up to 100 characters. The send-transactional page says a key reused within 24 hours returns 409 Conflict.A retention period is not stated on the pricing page or the MCP page.
PlunkCaps are per project and per category, not per key. Crossing one returns 402 with error code BILLING_LIMIT_EXCEEDED. A per-key send budget is not on the billing page.The billing page names 402 and BILLING_LIMIT_EXCEEDED when a cap is hit. A fix field naming the next call is not on that page.An idempotency key is not documented on the billing page or the MCP guide.A retention period is not stated on the pricing page, the billing page or the MCP guide.

Each cell is a row from the full comparison, where its source and capture date are listed.

Every comparison