Skip to main content

Rate Limiting

All endpoints are limited to protect the mail2many API from abuse and to ensure fair usage.

Current limits

  • 600 requests per minute per API key
  • Maximum of 10 concurrent requests per API key

These limits apply per API key and within a time window.

Response headers

You can find the current rate-limit status in response headers:

HeaderDescription
X-RateLimit-LimitMaximum number of requests allowed in the current time window
X-RateLimit-RemainingRemaining number of requests in the current time window

For concurrent requests, the API also provides:

HeaderDescription
X-ConcurrencyLimit-LimitMaximum number of concurrent requests per API key
X-ConcurrencyLimit-RemainingRemaining number of concurrent requests

Behavior when limits are exceeded

When a limit is exceeded, the API returns 429 Too Many Requests.

Example for request-rate limit:

{
"status": "error",
"code": 429,
"message": "Too many requests. Please slow down.",
"error": "RATE_LIMIT_EXCEEDED",
"statusCode": 429
}

Example for concurrent-request limit:

{
"status": "error",
"code": 429,
"message": "Too many concurrent requests. Please wait for existing requests to complete.",
"error": "CONCURRENT_LIMIT_EXCEEDED",
"statusCode": 429,
"concurrencyLimit": 10,
"remaining": 0
}

Additional headers in 429 responses may include:

HeaderDescription
Retry-AfterSeconds to wait before retrying
X-RateLimit-ResetTime when the current rate-limit window resets (UTC epoch seconds)
  • Wait based on Retry-After or until the time window resets
  • Retry the rejected request afterward
  • Reduce your request rate permanently
  • Reduce concurrent requests (queue/worker limit)
  • Use retries with exponential backoff

For general retry strategies, see Fault Tolerance.