For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
contact@agentmail.ccDiscord
DocumentationAPI ReferenceKnowledge BaseChangelog
DocumentationAPI ReferenceKnowledge BaseChangelog
    • Introduction
  • Getting Started
    • What is AgentMail?
    • What can I do with an inbox?
    • Creating your first inbox
    • Getting your API key
  • Agent Patterns
    • Handling inbound emails
    • Allowlists & blocklists
    • Managing threaded conversations
    • Human-in-the-loop workflows
    • Pods for multi-tenant email
    • Using labels to track state
  • Domains & Deliverability
    • Custom domain setup
    • SPF, DKIM, and DMARC setup
    • Emails going to spam
    • Warming Up
    • MX record conflicts
  • Troubleshooting
    • API 403 error
    • Rate limits
    • Preventing duplicate sends
    • Domain not verifying
    • Emails bouncing
    • Why are my emails not showing up?
  • DNS Guides
    • Cloudflare
    • GoDaddy
    • Route 53 (AWS)
    • Namecheap
LogoLogo
contact@agentmail.ccDiscord
On this page
  • Sending limits by plan
  • API rate limits
  • Tips for high-volume agents
  • Need higher limits?
Troubleshooting

What are the rate limits?

Understand AgentMail's rate limits and how to work within them.
Was this page helpful?
Edit this page
Previous

How do I prevent duplicate sends?

Use idempotency to avoid sending the same email twice.
Next
Built with

AgentMail is built for high-volume agent workflows. Limits vary by plan.

Sending limits by plan

PlanEmails per monthInboxesCustom domains
Free3,0003None
Developer10,0001010
Startup150,000150150
EnterpriseCustomCustomCustom

For full plan details, see the pricing page.

API rate limits

All API endpoints are rate-limited per API key. If you exceed the limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how long to wait before retrying.

TypeScript
1import { AgentMailClient } from "agentmail";
2
3const client = new AgentMailClient({ apiKey: "am_..." });
4
5async function sendWithRetry(inboxId: string, params: any, maxRetries = 3) {
6 for (let attempt = 0; attempt < maxRetries; attempt++) {
7 try {
8 return await client.inboxes.messages.send(inboxId, params);
9 } catch (error: any) {
10 if (error.statusCode === 429 && attempt < maxRetries - 1) {
11 const retryAfter = parseInt(error.headers?.["retry-after"] || "5");
12 await new Promise((r) => setTimeout(r, retryAfter * 1000));
13 } else {
14 throw error;
15 }
16 }
17 }
18}

Tips for high-volume agents

Distribute sends across inboxes. Sending from multiple inboxes improves deliverability and avoids per-address throttling by mailbox providers. Instead of 1,000 emails from 1 inbox, send 10 emails each from 100 inboxes.

Use idempotency keys for resource creation. The clientId parameter on create operations (inboxes, pods, webhooks, drafts) prevents duplicate resources on retries. For preventing duplicate email sends, track sent message IDs in your application or use the draft workflow.

Implement exponential backoff. When you receive a 429 response, wait for the duration specified in the Retry-After header before retrying. Increase the wait time with each consecutive retry.

Monitor your usage. Track your sending volume against your plan limits. You can view usage in the AgentMail Console.

Need higher limits?

If you need higher sending volumes or more inboxes than your current plan allows, contact support@agentmail.cc or visit the pricing page for enterprise options.