Docs/Reference/Rate Limits

Rate Limits

IvyMail API rate limits and throttling. How to handle 429 responses and optimize your sending patterns.

IvyMail enforces API request rate limits to ensure fair usage and protect infrastructure stability. For sending volume limits (emails per hour/day/month), warmup periods, and reputation monitoring, see Sending Limits & Safety.

Current limits

EndpointLimitWindow
POST /v1/send30 requestsPer minute
All other endpoints60 requestsPer minute

Limits are per API key. Each key has independent counters.

Rate limit headers

Every response includes headers to help you track your usage:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Handling 429 responses

When you exceed the rate limit, the API returns 429 Too Many Requests:

JSON
{
  "success": false,
  "error": "Rate limit exceeded"
}

Recommended retry strategy

Use exponential backoff with jitter:

javascript
async function sendWithBackoff(payload, apiKey, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const resp = await fetch("https://api.ivymail.io/v1/send", {
      method: "POST",
      headers: {
        "x-api-key": apiKey,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(payload),
    });

    if (resp.status !== 429) return resp.json();

    const wait = Math.min(2 ** attempt * 1000, 10000);
    const jitter = Math.random() * 500;
    await new Promise((r) => setTimeout(r, wait + jitter));
  }
  throw new Error("Max retries exceeded");
}

Best practices

  • Batch recipients: Use the to array (up to 50 addresses) instead of making individual API calls.
  • Queue sends: If you send high volumes, use a job queue to smooth out request rates.
  • Check headers: Use X-RateLimit-Remaining to proactively slow down before hitting the limit.
  • Respect 429s: Always implement backoff. Continuing to send requests after a 429 will not speed up delivery.

Higher limits

If you consistently need higher rate limits, contact us to discuss your use case. We can adjust limits for production workloads that need higher throughput.


For AI agents & LLMs

If you're an AI agent making multiple API calls, be aware of these limits:

  • Sending: Max 30 emails/minute. Batch recipients in the to array (up to 50) instead of making separate calls.
  • Reading: Max 60 requests/minute for logs, stats, and domain endpoints.

If you receive a 429 response, wait 2^attempt seconds before retrying (max 3 retries). Check the X-RateLimit-Remaining header to pace your requests proactively.