# AgentiSend > AgentiSend is a transactional email API for AI agents. Send over REST or MCP. Base URL: https://api.agentisend.com Auth: `Authorization: Bearer as_…` on every request. MCP server: https://api.agentisend.com/mcp (streamable HTTP, bearer auth) Docs: https://agentisend.com/docs Sign up: https://agentisend.com/#get-started ## Reading this site as a machine Complete static HTML, readable without JavaScript, no user-agent branching: identical bytes. Markdown twin: `.md`. `Accept: text/markdown` returns that twin as `text/markdown; charset=utf-8` with `Vary: Accept`. - https://agentisend.com/openapi.json — OpenAPI 3.1 for every operation. - https://agentisend.com/llms-full.txt — Every page as Markdown. API reference: /llms-api.txt. - https://agentisend.com/llms-api.txt — Every API reference page as Markdown, concatenated. - https://agentisend.com/pricing.json — List prices, as integer minor units. - https://agentisend.com/.well-known/agent-skills/index.json — The published agent skill. - https://agentisend.com/status.json — Live per-component availability and the daily-uptime history. ## Figures - 251 API operations, 122 error codes, 51 webhook event types. - Batch: up to 500 messages in one `POST /emails/batch`. - Rate ceiling: 600 requests per key per 60 seconds by default. - A new key is created with a budget already on it: the plan's inclusion per monthly period (5,000 on Free). - List endpoints page at up to 100 rows. - Retention: 7d/30d/90d/180d. - Enforcement acts on bounce rate at 2% (warn) then 4% (pause). From 100 delivered-or-bounced sends in the window the rate itself is judged; before that, only 5+ bounces or 3+ complaints with a rate over the line at the low end of its 95% confidence range. Spam and content refusals count as bounces. Each recipient counts once in the window, however often it bounced. - Complaint rate at 0.05% (warn) then 0.08% (pause). The ladder never enters a throttle rung. Complaint counts come from mailbox providers that send us feedback reports; Gmail, Yahoo and Outlook do not send them to us today, so a complaint rate of 0 is not evidence that nobody complained. - A failed webhook delivery is retried 10 times, then dead-lettered. The waits are on the webhooks guide. - SLA: 99.9% monthly uptime on Scale, credits 10% / 25% / 50% below 99.9% / 99.5% / 99%. ## Plans Every account starts on the Free plan: 5,000 emails a month, no card, no expiry. Real sends work once a domain is verified; Free also stops at 170 a day. - Free (free, no card): 5,000 emails/month, 170/day, 7-day retention, 3 domains, no paid overage. - Starter ($9/month, or $5.40/month billed yearly at $64.80 (40% off)): 30,000 emails/month, 30-day retention, 3 domains, opt-in overage $0.75/1,000. - Pro ($16/month, or $9.60/month billed yearly at $115.20 (40% off)): 50,000 emails/month, 90-day retention, 10 domains, opt-in overage $0.72/1,000, rungs: 100,000 for $28/month. - Scale ($72/month, or $43.20/month billed yearly at $518.40 (40% off)): 100,000 emails/month, 180-day retention, 1,000 domains, opt-in overage $0.60/1,000, rungs: 200,000 for $128/month, 500,000 for $280/month, 1,000,000 for $520/month, 1,500,000 for $660/month, 2,500,000 for $920/month. - Lifetime 250k ($49 once, nothing renews): 250,000 emails that never expire, up to 25,000 a month, Starter's domains, seats and history. Refunded only before any email is sent on it. - Lifetime 600k ($99 once, nothing renews): 600,000 emails that never expire, up to 50,000 a month, Pro's domains, seats and history. Refunded only before any email is sent on it. - Lifetime 1.5M ($199 once, nothing renews): 1,500,000 emails that never expire, up to 100,000 a month, Pro's domains, seats and history. Refunded only before any email is sent on it. - Lifetime 3M ($349 once, nothing renews): 3,000,000 emails that never expire, up to 100,000 a month, Pro's domains, seats and history. Refunded only before any email is sent on it. ## For agents A question page is listed by URL alone; its slug is the question. - https://agentisend.com/about — About AgentiSend: AgentiSend is a transactional email API for AI agents. - https://agentisend.com/agents — Agent quickstart: Six numbered steps from no account to a delivered email, with the exact request and the exact response shape for each. - https://agentisend.com/contact — Contact: Write to hello@agentisend.com for a product question or an abuse report. - https://agentisend.com/how-agents-see-this-site — How agents see this site: What a crawler or a model gets when it fetches these pages, and the exact curl that proves each claim. - https://agentisend.com/email-for-ai-agents — Email API for AI agents: what to require and 7 options compared: An AI agent should send email through an API that caps it, detects its loops, can be stopped by a human and explains its own refusals. - https://agentisend.com/agent-email-budgets — Agent email budgets: To cap how much email an AI agent can send, give it its own API key and set a budget on that key with PATCH /limits/keys/{id}. - https://agentisend.com/agent-email-loop-detection — Agent email loop detection: To stop an AI agent from sending the same email in a loop, send through a key whose recent history is checked before every send. - https://agentisend.com/agent-email-approvals — Agent email approvals: To require human approval before an AI agent sends email, let the send be held. - https://agentisend.com/agent-email-guardrails — Do I need to build my own email guardrails for an AI agent?: No. - https://agentisend.com/send-email-from-cursor - https://agentisend.com/send-email-from-claude-code - https://agentisend.com/send-email-from-claude-desktop - https://agentisend.com/support-for-agents — Support for agents: Diagnose with explain_email, why_was_this_not_sent and the status page, then a person opens a support request. - https://agentisend.com/send-email-from-windsurf - https://agentisend.com/send-email-from-vs-code - https://agentisend.com/send-email-from-codex - https://agentisend.com/send-email-from-gemini-cli - https://agentisend.com/send-email-from-lovable - https://agentisend.com/send-email-from-bolt - https://agentisend.com/send-email-from-v0 - https://agentisend.com/send-email-from-replit - https://agentisend.com/why-was-my-email-delayed - https://agentisend.com/why-did-my-email-bounce - https://agentisend.com/what-does-domain-not-verified-mean - https://agentisend.com/does-agentisend-have-a-free-plan - https://agentisend.com/how-do-i-test-email-sending-without-delivering-anything - https://agentisend.com/how-do-i-send-email-from-a-cloudflare-worker - https://agentisend.com/how-do-i-send-email-from-aws-lambda - https://agentisend.com/how-do-i-stop-an-ai-agent-from-sending-too-many-emails - https://agentisend.com/how-do-i-verify-a-sending-domain-on-cloudflare - https://agentisend.com/how-do-i-verify-a-sending-domain-on-namecheap - https://agentisend.com/how-do-i-verify-a-sending-domain-on-godaddy - https://agentisend.com/how-do-i-verify-a-sending-domain-on-route-53 - https://agentisend.com/how-do-i-verify-a-sending-domain-on-google-domains - https://agentisend.com/how-do-i-verify-a-sending-domain-on-porkbun - https://agentisend.com/how-do-i-verify-a-sending-domain-on-hostinger - https://agentisend.com/how-do-i-schedule-an-email-to-send-later - https://agentisend.com/how-do-i-cancel-a-scheduled-email - https://agentisend.com/how-do-i-send-many-emails-in-one-request - https://agentisend.com/how-do-i-send-an-email-with-an-attachment - https://agentisend.com/how-do-i-set-reply-to-cc-and-bcc-on-an-email - https://agentisend.com/how-do-i-stop-my-code-from-sending-the-same-email-twice - https://agentisend.com/how-do-i-know-if-my-email-was-delivered - https://agentisend.com/how-do-i-handle-rate-limits - https://agentisend.com/how-do-i-send-an-email-from-a-template - https://agentisend.com/how-do-i-tag-emails-and-find-them-later - https://agentisend.com/how-do-i-verify-a-webhook-signature - https://agentisend.com/why-did-my-webhook-stop-receiving-events - https://agentisend.com/how-do-i-replay-webhook-events - https://agentisend.com/how-do-i-remove-an-address-from-the-suppression-list - https://agentisend.com/how-do-i-add-an-unsubscribe-link-to-my-emails - https://agentisend.com/how-do-i-export-my-email-data - https://agentisend.com/how-do-i-rotate-an-api-key-without-downtime - https://agentisend.com/how-long-does-agentisend-keep-my-emails - https://agentisend.com/can-i-keep-my-email-data-in-the-eu - https://agentisend.com/how-do-i-send-email-from-node-js - https://agentisend.com/why-are-my-emails-going-to-spam - https://agentisend.com/why-does-my-email-say-delivered-but-the-recipient-did-not-get-it - https://agentisend.com/should-i-send-email-from-a-subdomain-or-the-root-domain - https://agentisend.com/what-does-account-sandboxed-mean - https://agentisend.com/how-do-i-set-up-dmarc-for-my-sending-domain - https://agentisend.com/can-i-have-two-spf-records-on-one-domain - https://agentisend.com/how-do-i-put-a-spending-limit-on-an-ai-agent - https://agentisend.com/how-do-i-require-human-approval-before-an-ai-agent-sends-email - https://agentisend.com/how-do-i-see-everything-my-ai-agent-sent - https://agentisend.com/how-do-i-stop-prompt-injection-in-email-my-agent-reads - https://agentisend.com/how-do-i-pause-an-ai-agent-that-is-sending-email - https://agentisend.com/which-api-key-permission-should-an-ai-agent-have - https://agentisend.com/how-do-i-restrict-an-api-key-to-one-domain - https://agentisend.com/how-many-recipients-can-one-email-have - https://agentisend.com/how-do-i-revoke-an-ai-assistant-connection - https://agentisend.com/how-do-i-find-out-why-an-email-was-not-sent - https://agentisend.com/how-do-i-check-my-sending-reputation - https://agentisend.com/what-does-partially-verified-mean-for-a-domain - https://agentisend.com/why-did-my-domain-verification-fail - https://agentisend.com/how-long-does-domain-verification-take - https://agentisend.com/how-do-i-wait-for-a-domain-to-verify-from-a-script - https://agentisend.com/what-is-the-return-path-record-for - https://agentisend.com/what-does-a-spam-complaint-do-to-my-account - https://agentisend.com/how-do-i-get-notified-when-domain-verification-breaks - https://agentisend.com/what-does-approval-required-mean - https://agentisend.com/what-does-kill-switch-active-mean - https://agentisend.com/send-email-from-the-vercel-ai-sdk - https://agentisend.com/what-does-agent-budget-exceeded-mean - https://agentisend.com/send-email-from-mastra - https://agentisend.com/what-does-rate-limit-exceeded-mean - https://agentisend.com/send-email-from-langchain - https://agentisend.com/what-does-suppressed-recipient-mean - https://agentisend.com/send-email-from-the-openai-agents-sdk - https://agentisend.com/what-does-plan-limit-reached-mean - https://agentisend.com/send-email-from-crewai - https://agentisend.com/what-does-restricted-api-key-mean - https://agentisend.com/what-does-idempotency-payload-mismatch-mean - https://agentisend.com/how-do-i-invite-a-teammate-and-set-their-role - https://agentisend.com/what-does-dkim-key-mismatch-mean - https://agentisend.com/how-do-i-control-account-notifications - https://agentisend.com/what-does-spf-conflict-mean - https://agentisend.com/how-do-i-close-my-account - https://agentisend.com/what-does-dns-unreachable-mean - https://agentisend.com/what-does-domain-check-window-expired-mean - https://agentisend.com/what-happens-when-i-hit-my-plan-limit - https://agentisend.com/how-do-i-see-my-usage - https://agentisend.com/what-does-rate-ceiling-exceeded-mean - https://agentisend.com/how-do-i-let-an-ai-agent-send-email - https://agentisend.com/how-do-i-send-an-email-when-a-custom-event-happens - https://agentisend.com/how-do-i-create-a-segment-of-contacts - https://agentisend.com/which-email-apis-have-an-mcp-server - https://agentisend.com/send-email-from-claude - https://agentisend.com/send-email-from-zed - https://agentisend.com/send-email-from-opencode - https://agentisend.com/send-email-from-cline - https://agentisend.com/can-an-ai-agent-receive-email - https://agentisend.com/how-do-i-limit-who-can-email-my-ai-agent - https://agentisend.com/is-agentisend-safe-to-use-in-production - https://agentisend.com/how-do-i-get-email-events-without-a-public-webhook-url - https://agentisend.com/how-do-i-verify-a-sending-domain-on-squarespace - https://agentisend.com/how-do-i-verify-a-sending-domain-on-wix - https://agentisend.com/how-do-i-verify-a-sending-domain-on-ionos - https://agentisend.com/how-do-i-verify-a-sending-domain-on-ovh - https://agentisend.com/how-do-i-verify-a-sending-domain-on-gandi - https://agentisend.com/how-do-i-verify-a-sending-domain-on-digitalocean - https://agentisend.com/how-do-i-verify-a-sending-domain-on-vercel - https://agentisend.com/how-do-i-verify-a-sending-domain-on-netlify - https://agentisend.com/can-an-ai-agent-sign-up-for-agentisend-by-itself - https://agentisend.com/how-do-i-receive-email-at-my-own-domain - https://agentisend.com/how-do-i-read-a-reply-without-the-quoted-history - https://agentisend.com/how-do-i-get-the-text-of-an-email-attachment - https://agentisend.com/how-do-i-hold-suspicious-email-until-a-person-reviews-it - https://agentisend.com/what-does-inbound-verdict-review-mean - https://agentisend.com/how-do-i-reply-to-an-email-my-agent-received - https://agentisend.com/how-does-an-ai-agent-read-a-one-time-code-from-email - https://agentisend.com/how-do-i-give-each-ai-agent-its-own-email-address - https://agentisend.com/how-do-i-hand-dns-setup-to-the-person-who-owns-the-domain - https://agentisend.com/what-does-agent-unconfirmed-mean - https://agentisend.com/what-does-recipient-ramp-mean - https://agentisend.com/how-do-i-block-a-sender-from-emailing-my-agent - https://agentisend.com/email-api-with-spending-limits - https://agentisend.com/stop-an-ai-agent-sending-emails-in-a-loop - https://agentisend.com/transactional-email-api-for-ai-agents ## Compare and decide - https://agentisend.com/pricing — every tier and limit; the same table as /pricing.json. - https://agentisend.com/faq — the questions people ask before they switch. - https://agentisend.com/security — how to report a security issue, and what the service does with one. - https://agentisend.com/status — per-component health and 90 days of measured availability. - https://agentisend.com/changelog — product announcements, newest first. - https://agentisend.com/terms — the terms of use. - https://agentisend.com/vs/resend — AgentiSend vs Resend: transactional email API comparison - https://agentisend.com/vs/ses — AgentiSend vs Amazon SES: price, pause, and logs - https://agentisend.com/vs/agentmail — AgentiSend vs AgentMail: inboxes or outbound guardrails - https://agentisend.com/vs/postmark — AgentiSend vs Postmark: history, inbound, and budgets - https://agentisend.com/vs/sendgrid — AgentiSend vs SendGrid: the 60-day offer and budgets - https://agentisend.com/vs/mailgun — AgentiSend vs Mailgun: region choice and budgets - https://agentisend.com/vs/loops — AgentiSend vs Loops: contact pricing and a hosted MCP - https://agentisend.com/vs/plunk — AgentiSend vs Plunk: per-email price and inbound - https://agentisend.com/vs/mailtrap — AgentiSend vs Mailtrap: sandbox, inbound, and budgets - https://agentisend.com/vs/cloudflare-email — AgentiSend vs Cloudflare Email Service: inbound routing and budgets - https://agentisend.com/vs/brevo — AgentiSend vs Brevo: EU hosting, logs, and budgets - https://agentisend.com/alternatives — Email API alternatives compared — AgentiSend - https://agentisend.com/alternatives/resend — Resend alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/ses — Amazon SES alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/agentmail — AgentMail alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/postmark — Postmark alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/sendgrid — SendGrid alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/mailgun — Mailgun alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/loops — Loops alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/plunk — Plunk alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/mailtrap — Mailtrap alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/cloudflare-email — Cloudflare Email Service alternative for AI agents: AgentiSend compared (2026) - https://agentisend.com/alternatives/brevo — Brevo alternative for AI agents: AgentiSend compared (2026) ## When to use AgentiSend - An agent holds the API key. The key is created with a budget, and a refusal carries a code, a message and a fix. - A Resend integration moves across with `import { Resend } from 'agentisend/compat-resend'`. ## When not to - Pick Amazon SES when price per message is the deciding number, or when you need a signed business associate agreement for health data. AgentiSend does not sign that agreement. https://agentisend.com/vs/ses - Pick AgentMail when the job is an inbox and an identity per agent. AgentiSend does not sell inboxes. https://agentisend.com/vs/agentmail ## Pages - https://agentisend.com/privacy — Privacy - https://agentisend.com/aup — Acceptable use - https://agentisend.com/dpa — Data processing addendum - https://agentisend.com/subprocessors — Subprocessors - https://agentisend.com/policy/enforcement — Enforcement policy - https://agentisend.com/policy/retention — Retention policy - https://agentisend.com/docs/guides — Guides — AgentiSend docs - https://agentisend.com/docs/api — API reference — AgentiSend docs ## Writing - https://agentisend.com/blog - https://agentisend.com/blog/category/agents - https://agentisend.com/blog/category/guardrails - https://agentisend.com/blog/category/receiving - https://agentisend.com/blog/an-agent-that-signs-itself-up — An agent that signs itself up — AgentiSend blog - https://agentisend.com/blog/inbound-is-where-agents-get-hurt — Mail an agent reads is where it gets hurt — AgentiSend blog - https://agentisend.com/blog/one-mx-record-and-your-agent-can-receive — One MX record, and your agent can receive — AgentiSend blog - https://agentisend.com/blog/how-loop-detection-decides-a-send-is-a-repeat — How loop detection decides a send is a repeat, and what it holds - https://agentisend.com/blog/what-an-agent-should-do-with-a-refusal — What an agent should do with a refusal: code, fix, retry_after_seconds - https://agentisend.com/blog/why-every-api-key-is-created-with-a-budget — Why every API key is created with a budget — AgentiSend blog ## Use cases - https://agentisend.com/use-cases — Use cases — AgentiSend - https://agentisend.com/use-cases/support-agent-replies — Support agent replies — AgentiSend - https://agentisend.com/use-cases/receipts-from-a-store-agent — Receipts from a store agent — AgentiSend - https://agentisend.com/use-cases/sign-in-codes — Sign-in codes — AgentiSend - https://agentisend.com/use-cases/agent-daily-digest — Agent daily digest — AgentiSend - https://agentisend.com/use-cases/alerts-from-a-monitoring-agent — Alerts from a monitoring agent — AgentiSend - https://agentisend.com/use-cases/approval-gated-announcements-to-existing-customers — Approval-gated announcements to existing customers - https://agentisend.com/use-cases/onboarding-sequence-run-by-an-agent — Onboarding sequence run by an agent — AgentiSend ## Glossary - https://agentisend.com/glossary — Glossary — AgentiSend - https://agentisend.com/glossary/budget-period — Budget period — AgentiSend - https://agentisend.com/glossary/rate-ceiling — Rate ceiling — AgentiSend - https://agentisend.com/glossary/kill-switch — Kill switch — AgentiSend - https://agentisend.com/glossary/approval-queue — Approval queue — AgentiSend - https://agentisend.com/glossary/loop-detection — Loop detection — AgentiSend - https://agentisend.com/glossary/standing — Standing — AgentiSend - https://agentisend.com/glossary/enforcement-ladder — Enforcement ladder — AgentiSend - https://agentisend.com/glossary/sandbox — Sandbox — AgentiSend - https://agentisend.com/glossary/simulator-address — Simulator address — AgentiSend - https://agentisend.com/glossary/idempotency-key — Idempotency key — AgentiSend - https://agentisend.com/glossary/retry-after-seconds — retry_after_seconds — AgentiSend - https://agentisend.com/glossary/fix-field — Fix field — AgentiSend - https://agentisend.com/glossary/hard-bounce — Hard bounce — AgentiSend - https://agentisend.com/glossary/soft-bounce — Soft bounce — AgentiSend - https://agentisend.com/glossary/block-bounce — Block bounce — AgentiSend - https://agentisend.com/glossary/policy-bounce — Policy bounce — AgentiSend - https://agentisend.com/glossary/complaint-rate — Complaint rate — AgentiSend - https://agentisend.com/glossary/suppression — Suppression — AgentiSend - https://agentisend.com/glossary/verp — VERP — AgentiSend - https://agentisend.com/glossary/dkim-alignment — DKIM alignment — AgentiSend - https://agentisend.com/glossary/spf-alignment — SPF alignment — AgentiSend - https://agentisend.com/glossary/dmarc-alignment — DMARC alignment — AgentiSend - https://agentisend.com/glossary/feedback-loop — Feedback loop — AgentiSend - https://agentisend.com/glossary/dead-letter — Dead letter — AgentiSend - https://agentisend.com/glossary/webhook-signing — Webhook signing — AgentiSend - https://agentisend.com/glossary/mcp-scope — MCP scope — AgentiSend - https://agentisend.com/glossary/inbound-thread — Inbound thread — AgentiSend - https://agentisend.com/glossary/plan-inclusion — Plan inclusion — AgentiSend - https://agentisend.com/glossary/human-action-required — Human action required — AgentiSend - https://agentisend.com/glossary/preflight — Preflight — AgentiSend - https://agentisend.com/glossary/scheduled-send — Scheduled send — AgentiSend - https://agentisend.com/glossary/batch — Batch — AgentiSend - https://agentisend.com/glossary/return-path — Return path — AgentiSend - https://agentisend.com/glossary/sending-domain — Sending domain — AgentiSend - https://agentisend.com/glossary/full-access — Full access — AgentiSend - https://agentisend.com/glossary/sending-access — Sending access — AgentiSend - https://agentisend.com/glossary/list-unsubscribe — List-Unsubscribe — AgentiSend - https://agentisend.com/glossary/overage — Overage — AgentiSend - https://agentisend.com/glossary/appeal — Appeal — AgentiSend - https://agentisend.com/glossary/signature-tolerance — Signature tolerance — AgentiSend - https://agentisend.com/glossary/topic — Topic — AgentiSend - https://agentisend.com/glossary/stream — Stream — AgentiSend ## Templates - https://agentisend.com/templates — Email templates — AgentiSend - https://agentisend.com/templates/sign-in-code — Sign-in code — AgentiSend - https://agentisend.com/templates/password-reset — Password reset — AgentiSend - https://agentisend.com/templates/welcome — Welcome — AgentiSend - https://agentisend.com/templates/receipt — Receipt — AgentiSend - https://agentisend.com/templates/invoice — Invoice — AgentiSend - https://agentisend.com/templates/shipping-update — Shipping update — AgentiSend - https://agentisend.com/templates/approval-request — Approval request — AgentiSend - https://agentisend.com/templates/budget-warning — Budget warning — AgentiSend - https://agentisend.com/templates/agent-daily-report — Agent daily report — AgentiSend - https://agentisend.com/templates/scheduled-send-confirmation — Scheduled send confirmation — AgentiSend - https://agentisend.com/templates/account-paused — Account paused — AgentiSend ## Tools - https://agentisend.com/tools — Free email tools — AgentiSend - https://agentisend.com/tools/dns-check — DNS check — AgentiSend - https://agentisend.com/tools/bounce-decoder — Bounce decoder — AgentiSend - https://agentisend.com/tools/agent-budget-calculator — Agent budget calculator — AgentiSend ## Guides - https://agentisend.com/docs/guides/quickstart — Quickstart: Verify a domain, create a key, send the first email — in Node, Python or curl. - https://agentisend.com/docs/guides/agents — Agents — MCP and the CLI: Connect Claude Code, Cursor, Windsurf, VS Code or any remote-MCP client to the same API your code uses. - https://agentisend.com/docs/guides/sdks — SDKs: Install the Node, Python, PHP or Go client, or the MCP server and the CLI, and send one email. - https://agentisend.com/docs/guides/api-conventions — API conventions: Auth, the error envelope, idempotency, rate limits, pagination and request ids, with the numbers the API enforces. - https://agentisend.com/docs/guides/billing — Billing: What counts as an email, monthly, yearly and lifetime plans, plan changes, overage, failed payments, cancellation and closing. - https://agentisend.com/docs/guides/budgets-and-the-kill-switch — Budgets and the kill switch: Per-key spend ceilings, what happens when one is reached, and the one request that stops everything. - https://agentisend.com/docs/guides/approvals — Approvals: When a send waits for a person, how the queue behaves, and what an agent sees while it waits. - https://agentisend.com/docs/guides/deliverability — Deliverability: The published thresholds, what happens at each one, and how to read the reputation panel. - https://agentisend.com/docs/guides/trust-and-enforcement — Trust and enforcement: The enforcement ladder, what each rung does, how to appeal, and what we will not do. - https://agentisend.com/docs/guides/support — Support: Open a request from the console, attach files, follow the thread there and by email, and reopen or rate it once resolved. - https://agentisend.com/docs/guides/webhooks — Webhooks: Signing, verification, the retry schedule, replay, and what happens to a dead letter. - https://agentisend.com/docs/guides/domains-and-dns — Domains and DNS: The records to publish, what verification checks, the US / EU region choice, TLS mode, and the customer return-path host. - https://agentisend.com/docs/guides/templates — Templates: Storing a template, rendering it, versioning, and why the variables are declared. - https://agentisend.com/docs/guides/migrating-from-resend — Migrating from Resend: What stays the same, how error names map, and what differs. - https://agentisend.com/docs/guides/audience — Audience: Contacts, segments and topics in the console, and what an unsubscribe is allowed to undo. - https://agentisend.com/docs/guides/broadcasts — Broadcasts: One message to one segment, drafted, optionally scheduled, snapshotted at send, with a delivery state for every member. - https://agentisend.com/docs/guides/automations — Automations: A trigger and ordered steps, or a graph with delays, waits and conditions; a version saved on enable, and every run recorded step by step. - https://agentisend.com/docs/guides/inbound — Receiving and replying: Read received mail and thread your replies. - https://agentisend.com/docs/guides/test-addresses — Test addresses: Every address at simulator.agentisend.com, the events each one produces, what gets suppressed, and the Resend test addresses they replace. - https://agentisend.com/docs/guides/mcp — AgentiSend MCP server — send email from Claude, Cursor and any MCP client: Every tool with the scopes it needs, the rate-limit table, the JSON-RPC error codes, and what an agent cannot do. - https://agentisend.com/docs/guides/nextjs - https://agentisend.com/docs/guides/supabase - https://agentisend.com/docs/guides/better-auth - https://agentisend.com/docs/guides/authjs - https://agentisend.com/docs/guides/hono - https://agentisend.com/docs/guides/express - https://agentisend.com/docs/guides/sveltekit - https://agentisend.com/docs/guides/agent-with-budget - https://agentisend.com/docs/guides/python - https://agentisend.com/docs/guides/vercel-ai-sdk - https://agentisend.com/docs/guides/langchain - https://agentisend.com/docs/guides/fastify - https://agentisend.com/docs/guides/migrating-from-postmark — Migrating from Postmark: How a Postmark payload and webhook map onto this API, and what is refused on day one. - https://agentisend.com/docs/guides/astro - https://agentisend.com/docs/guides/migrating-from-sendgrid — Migrating from SendGrid: How a SendGrid mail-send payload maps onto this API, and what is refused on day one. - https://agentisend.com/docs/guides/migrating-from-mailgun — Migrating from Mailgun: How a Mailgun HTTP send maps onto this API, and what is refused on day one. - https://agentisend.com/docs/guides/nuxt - https://agentisend.com/docs/guides/migrating-from-ses — Migrating from Amazon SES: How an Amazon SES SendEmail call maps onto this API, and what is refused on day one. - https://agentisend.com/docs/guides/react-router - https://agentisend.com/docs/guides/n8n — Send email from n8n: The AgentiSend node and trigger for n8n: send and check email from a workflow or an AI Agent, and start workflows on delivery, bounce, open and click. - https://agentisend.com/docs/guides/nestjs - https://agentisend.com/docs/guides/fastapi - https://agentisend.com/docs/guides/flask - https://agentisend.com/docs/guides/django - https://agentisend.com/docs/guides/nodejs - https://agentisend.com/docs/guides/console-api-keys — API keys - https://agentisend.com/docs/guides/go - https://agentisend.com/docs/guides/console-team — Team - https://agentisend.com/docs/guides/php - https://agentisend.com/docs/guides/console-security — Security - https://agentisend.com/docs/guides/laravel - https://agentisend.com/docs/guides/console-billing — Billing and overage - https://agentisend.com/docs/guides/rails - https://agentisend.com/docs/guides/console-notifications — Notifications - https://agentisend.com/docs/guides/remix - https://agentisend.com/docs/guides/bun - https://agentisend.com/docs/guides/console-agents — Agents - https://agentisend.com/docs/guides/console-logs — Logs - https://agentisend.com/docs/guides/deno - https://agentisend.com/docs/guides/claude-agent-sdk - https://agentisend.com/docs/guides/console-metrics — Metrics - https://agentisend.com/docs/guides/openai-agents-sdk - https://agentisend.com/docs/guides/crewai - https://agentisend.com/docs/guides/mastra - https://agentisend.com/docs/guides/langchain-python ## Operations Full text of every operation: https://agentisend.com/llms-api.txt. The index of pages is https://agentisend.com/docs/api. - accounts: `GET /account`, `PATCH /account`, `DELETE /account`, `GET /account/export`, `PATCH /account/onboarding` - agent-actions: `GET /agent-actions`, `POST /agent-actions/{id}/approve`, `POST /agent-actions/{id}/reject` - agents: `POST /agent/sign-up`, `POST /agent/verify` - api-keys: `GET /api-keys`, `POST /api-keys`, `PATCH /api-keys/{id}`, `DELETE /api-keys/{id}`, `POST /api-keys/{id}/rotate` - appsumo: `GET /appsumo/callback`, `GET /appsumo/license`, `POST /appsumo/redeem`, `POST /appsumo/webhook` - segments: `GET /audiences`, `POST /audiences`, `GET /audiences/{id}`, `DELETE /audiences/{id}`, `GET /segments`, `POST /segments`, `GET /segments/{id}`, `PATCH /segments/{id}`, `DELETE /segments/{id}`, `GET /segments/{id}/members` - contacts: `GET /audiences/{audienceId}/contacts`, `POST /audiences/{audienceId}/contacts`, `GET /audiences/{audienceId}/contacts/{id}`, `PATCH /audiences/{audienceId}/contacts/{id}`, `DELETE /audiences/{audienceId}/contacts/{id}`, `GET /contact-properties`, `POST /contact-properties`, `GET /contact-properties/{id}`, `PATCH /contact-properties/{id}`, `DELETE /contact-properties/{id}`, `GET /contacts`, `POST /contacts`, `POST /contacts/batch`, `GET /contacts/imports`, `POST /contacts/imports`, `GET /contacts/imports/{id}`, `GET /contacts/{id}`, `PATCH /contacts/{id}`, `DELETE /contacts/{id}`, `POST /contacts/{id}/resubscribe`, `GET /contacts/{id}/segments`, `POST /contacts/{id}/segments/{segment_id}`, `DELETE /contacts/{id}/segments/{segment_id}`, `GET /contacts/{id}/topics`, `PATCH /contacts/{id}/topics`, `GET /segments/{id}/contacts` - audit: `GET /audit-log` - automations: `GET /automations`, `POST /automations`, `GET /automations/{id}`, `PATCH /automations/{id}`, `DELETE /automations/{id}`, `POST /automations/{id}/disable`, `POST /automations/{id}/duplicate`, `POST /automations/{id}/enable`, `GET /automations/{id}/runs`, `GET /automations/{id}/runs/{run_id}`, `POST /automations/{id}/stop`, `GET /automations/{id}/versions`, `GET /events`, `POST /events`, `POST /events/send`, `GET /events/{id}`, `PATCH /events/{id}`, `DELETE /events/{id}` - usage: `GET /billing`, `GET /usage` - billing: `POST /billing/checkout`, `POST /billing/checkout/lifetime`, `GET /billing/invoices`, `GET /billing/invoices/open`, `POST /billing/invoices/{id}/opened`, `PUT /billing/overage`, `GET /billing/plan`, `POST /billing/plan`, `POST /billing/portal`, `GET /billing/subscription`, `POST /webhooks/stripe` - broadcasts: `GET /broadcasts`, `POST /broadcasts`, `GET /broadcasts/{id}`, `PATCH /broadcasts/{id}`, `DELETE /broadcasts/{id}`, `POST /broadcasts/{id}/archive`, `POST /broadcasts/{id}/cancel`, `GET /broadcasts/{id}/clicked-links`, `POST /broadcasts/{id}/duplicate`, `GET /broadcasts/{id}/messages`, `GET /broadcasts/{id}/preview`, `GET /broadcasts/{id}/recipients`, `POST /broadcasts/{id}/send`, `GET /broadcasts/{id}/stats` - dedicated-ips: `GET /dedicated-ips`, `POST /dedicated-ips`, `GET /dedicated-ips/ramp`, `GET /dedicated-ips/route-decision/{messageId}`, `DELETE /dedicated-ips/{id}` - deliverability: `GET /deliverability/dmarc`, `GET /deliverability/domains`, `GET /deliverability/domains/{id}`, `POST /deliverability/domains/{id}/snapshot` - domains: `GET /domains`, `POST /domains`, `GET /domains/check`, `POST /domains/claim`, `GET /domains/setup/{token}`, `GET /domains/{id}`, `PATCH /domains/{id}`, `DELETE /domains/{id}`, `GET /domains/{id}/claim`, `POST /domains/{id}/claim/verify`, `GET /domains/{id}/connect`, `GET /domains/{id}/events`, `GET /domains/{id}/inbound-rules`, `POST /domains/{id}/inbound-rules`, `POST /domains/{id}/inbound-rules/batch/add`, `POST /domains/{id}/inbound-rules/batch/remove`, `DELETE /domains/{id}/inbound-rules/{rule_id}`, `GET /domains/{id}/setup`, `POST /domains/{id}/setup-link`, `DELETE /domains/{id}/setup-link`, `POST /domains/{id}/verify`, `GET /domains/{id}/wait` - emails: `GET /emails`, `POST /emails`, `POST /emails/batch`, `POST /emails/bulk-cancel`, `GET /emails/export.csv`, `POST /emails/lint`, `POST /emails/preflight`, `GET /emails/receiving`, `GET /emails/receiving/refusals`, `GET /emails/receiving/threads`, `GET /emails/receiving/{id}`, `DELETE /emails/receiving/{id}`, `GET /emails/receiving/{id}/attachments`, `GET /emails/receiving/{id}/attachments/{aid}`, `GET /emails/receiving/{id}/raw`, `POST /emails/receiving/{id}/release`, `POST /emails/receiving/{id}/reply`, `GET /emails/{id}`, `PATCH /emails/{id}`, `DELETE /emails/{id}`, `GET /emails/{id}/attachments`, `GET /emails/{id}/attachments/{aid}`, `POST /emails/{id}/cancel`, `GET /emails/{id}/eml`, `GET /emails/{id}/events`, `GET /emails/{id}/explain`, `GET /emails/{id}/mime`, `POST /emails/{id}/reschedule`, `POST /emails/{id}/share` - metrics: `GET /emails/metrics`, `GET /metrics` - meta: `GET /health`, `GET /openapi.json`, `GET /status`, `GET /status/history`, `GET /tools/dns/{domain}` - team: `POST /invite/{token}/accept`, `GET /team/invites`, `POST /team/invites`, `DELETE /team/invites/{id}`, `GET /team/me`, `GET /team/members`, `POST /team/members`, `PATCH /team/members/{id}`, `DELETE /team/members/{id}` - limits: `GET /limits/keys`, `GET /limits/keys/{id}`, `PATCH /limits/keys/{id}`, `POST /limits/keys/{id}/kill`, `POST /limits/keys/{id}/resume`, `POST /limits/kill-all`, `POST /limits/resume-all` - logs: `GET /logs`, `GET /logs/{id}` - notifications: `GET /notifications`, `GET /notifications/preferences`, `PATCH /notifications/preferences`, `POST /notifications/read`, `POST /notifications/{id}/read` - oauth: `GET /oauth/grants`, `DELETE /oauth/grants/{id}` - support: `GET /support`, `POST /support`, `GET /support/answers`, `GET /support/answers/{slug}`, `POST /support/answers/{slug}/helpful`, `GET /support/attachments/{id}/download`, `GET /support/config`, `GET /support/known-issues`, `POST /support/known-issues/{id}/subscribe`, `GET /support/search`, `POST /support/uploads`, `GET /support/{ref}`, `POST /support/{ref}/csat`, `POST /support/{ref}/messages`, `POST /support/{ref}/reopen`, `POST /support/{ref}/resolve` - suppressions: `GET /suppressions`, `POST /suppressions`, `POST /suppressions/batch/add`, `POST /suppressions/batch/remove`, `GET /suppressions/{id}`, `DELETE /suppressions/{id}` - templates: `GET /templates`, `POST /templates`, `GET /templates/{id}`, `PATCH /templates/{id}`, `DELETE /templates/{id}`, `GET /templates/{id}/diff`, `POST /templates/{id}/duplicate`, `POST /templates/{id}/publish`, `POST /templates/{id}/render`, `POST /templates/{id}/rollback`, `GET /templates/{id}/versions`, `GET /templates/{id}/versions/{n}` - topics: `GET /topics`, `POST /topics`, `GET /topics/{id}`, `PATCH /topics/{id}`, `DELETE /topics/{id}` - trust: `POST /trust/appeal`, `GET /trust/remediation`, `POST /trust/remediation`, `GET /trust/standing`, `GET /trust/thresholds` - webhooks: `GET /webhooks`, `POST /webhooks`, `GET /webhooks/{id}`, `PATCH /webhooks/{id}`, `DELETE /webhooks/{id}`, `GET /webhooks/{id}/dead-letters`, `GET /webhooks/{id}/deliveries`, `GET /webhooks/{id}/events`, `GET /webhooks/{id}/events/{event_id}`, `GET /webhooks/{id}/events/{event_id}/attempts`, `POST /webhooks/{id}/events/{event_id}/replay`, `POST /webhooks/{id}/replay`, `POST /webhooks/{id}/rotate-secret`, `POST /webhooks/{id}/signing-secret/rotate` ## Errors Every 4xx and 5xx carries `code`, `message`, `fix` and `docs_url`. The codes are listed under their statuses; each one's message and fix are in the catalogue at https://agentisend.com/docs/errors, and in llms-full.txt. - 400: `validation_error`, `invalid_idempotency_key`, `invalid_cursor`, `plan_not_purchasable`, `stripe_signature_invalid`, `support_upload_rejected`, `appsumo_license_not_confirmed`, `appsumo_ticket_invalid`, `sign_in_check_required` - 401: `agent_signup_code_rejected`, `missing_api_key`, `session_required`, `mfa_required`, `appsumo_signature_invalid` - 402: `overage_cap_reached`, `daily_limit_reached`, `agent_budget_exceeded`, `plan_limit_reached` - 403: `sending_domain_blocked`, `young_domain_held`, `domain_sending_disabled`, `inbound_sender_refused`, `domain_not_verified`, `onboarding_recipient_not_a_member`, `onboarding_sender_unavailable`, `account_suspended`, `account_sandboxed`, `agent_unconfirmed`, `recipient_ramp`, `human_action_required`, `csrf_origin_rejected`, `charge_not_this_account`, `invalid_api_key`, `restricted_api_key`, `insufficient_role`, `invite_email_mismatch`, `domain_scope_violation`, `dedicated_ip_assigned_by_us`, `approval_required`, `staff_review_required`, `trust_paused`, `kill_switch_active` - 404: `billing_customer_missing`, `not_found`, `session_expired`, `support_ticket_not_found` - 405: `method_not_allowed` - 409: `domain_already_exists`, `template_name_taken`, `template_alias_taken`, `template_in_use`, `segment_in_use`, `contact_resubscribe_required`, `email_still_scheduled`, `domain_verified_elsewhere`, `domain_not_claimable`, `return_path_subdomain_in_use`, `overage_not_on_plan`, `term_not_on_sale`, `subscription_active`, `portal_change_unavailable`, `already_in_account`, `idempotency_in_flight`, `idempotency_payload_mismatch`, `approval_expired`, `support_closed`, `support_reopen_expired`, `support_merge_conflict`, `support_reply_too_soon`, `appsumo_license_linked`, `appsumo_license_inactive`, `lifetime_sold_on_appsumo` - 410: `support_attachment_expired` - 413: `payload_too_large`, `support_upload_too_large` - 415: `unsupported_media_type` - 422: `missing_required_field`, `invalid_from_address`, `invalid_parameter`, `invalid_attachment`, `invalid_region`, `tracking_subdomain_unverified`, `tracking_subdomain_cannot_be_removed`, `domain_field_immutable`, `open_tracking_on_transactional`, `header_replaced`, `html_clipped_by_gmail`, `link_domain_listed`, `domain_blocklisted`, `mailbox_provider_domain`, `onboarding_shape_refused`, `dkim_key_mismatch`, `domain_check_window_expired`, `spf_conflict`, `spf_lookup_limit`, `review_sandbox_recipient_only`, `suppressed_recipient`, `agent_signup_refused`, `content_refused`, `recipient_blocklisted`, `last_owner_required`, `seat_limit_reached`, `invite_not_valid`, `key_budget_exceeds_plan`, `domain_limit_reached`, `webhook_endpoint_limit_reached` - 429: `onboarding_daily_cap_reached`, `trust_throttled`, `invite_limit_reached`, `rate_ceiling_exceeded`, `daily_quota_exceeded`, `monthly_quota_exceeded`, `rate_limit_exceeded`, `support_rate_limited`, `appsumo_lookup_limited` - 500: `internal_server_error` - 503: `dns_unreachable`, `service_unavailable`, `billing_not_configured`, `rate_limiter_unavailable`, `sending_paused_everywhere`, `support_draft_unavailable` ## Events Full catalogue: https://agentisend.com/docs/events. - Email: `email.queued`, `email.sent`, `email.delivered`, `email.delivery_delayed`, `email.bounced`, `email.complained`, `email.opened`, `email.clicked`, `email.failed`, `email.scheduled`, `email.canceled`, `email.suppressed` - Domain: `domain.created`, `domain.verified`, `domain.failed`, `domain.updated`, `domain.deleted`, `domain.blocklisted`, `inbound.refused_by_rule` - Suppression: `suppression.added`, `suppression.removed` - Limit: `limit.warning`, `limit.exceeded` - Agent: `agent.approval_requested`, `agent.approved`, `agent.rejected`, `agent.killed` - Audience and campaigns: `contact.created`, `contact.updated`, `contact.deleted`, `segment.joined`, `segment.left`, `segment.created`, `segment.updated`, `segment.deleted`, `broadcast.scheduled`, `broadcast.sent`, `broadcast.updated`, `automation.triggered`, `email.received`, `email.received.held`, `topic.created`, `topic.updated`, `topic.deleted`, `contact.subscribed`, `contact.unsubscribed` - Trust: `trust.warning`, `trust.throttled`, `trust.paused`, `trust.appealed`, `trust.restored` ## What this service will not do - No cold outreach: no lead database, no scraping, no bulk import of addresses nobody asked for. Unsolicited sending is refused. - No silent overage: sends stop at the inclusion and nothing is auto-charged unless you turned overage on with a ceiling.