Rate Limits

Understand API usage limits

Mailpipe enforces rate limits to ensure fair usage and platform stability. Learn about tier limits, response headers, and retry strategies.

Tier Limits

Rate limits vary by subscription tier. All limits are applied per organization.

TierEmails / HourEmails / DayBurst Limit
Standard1001,00010 / second
Pro1,00050,00050 / second

Rate Limit Headers

Every API response includes rate limit headers so you can track your usage:

Response Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 2024-01-15T12:00:00Z

X-RateLimit-Limit — Maximum requests allowed in the current window

X-RateLimit-Remaining — Requests remaining in the current window

X-RateLimit-Reset — ISO 8601 timestamp when the window resets

Rate Limit Exceeded (429)

When you exceed your rate limit, the API returns a 429 Too Many Requests response with a Retry-After header.

429 Response
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2024-01-15T13:00:00Z

{
  "error": "Rate limit exceeded: hourly email limit reached"
}

Retry Strategies

Implement exponential backoff with jitter for the best retry behavior:

Node.js
async function sendWithRetry(payload, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch('/api/v1/outbound/{orgId}/send', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer mp_live_xxx',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(payload),
    });

    if (response.status !== 429) return response;

    const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
    const jitter = Math.random() * 1000;
    const delay = retryAfter * 1000 + jitter;

    console.log(`Rate limited. Retrying in ${delay / 1000}s...`);
    await new Promise(resolve => setTimeout(resolve, delay));
  }

  throw new Error('Max retries exceeded');
}

Check Your Quota

You can check your current quota at any time:

cURL
curl "https://api.mailpipe.dev/v1/outbound/{orgId}/send" \
  -H "Authorization: Bearer mp_live_xxx"
Response
{
  "orgId": "org_xxx",
  "tier": "standard",
  "used": 42,
  "remaining": 58,
  "limit": 100,
  "resetsAt": "2024-01-15T13:00:00Z"
}

Need Help?

Our team is here to help. Reach out if you have any questions.

Contact Support