Understand API usage limits
Mailpipe enforces rate limits to ensure fair usage and platform stability. Learn about tier limits, response headers, and retry strategies.
Rate limits vary by subscription tier. All limits are applied per organization.
| Tier | Emails / Hour | Emails / Day | Burst Limit |
|---|---|---|---|
| Standard | 100 | 1,000 | 10 / second |
| Pro | 1,000 | 50,000 | 50 / second |
Every API response includes rate limit headers so you can track your usage:
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
When you exceed your rate limit, the API returns a 429 Too Many Requests response with a Retry-After header.
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"
}Implement exponential backoff with jitter for the best retry behavior:
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');
}You can check your current quota at any time:
curl "https://api.mailpipe.dev/v1/outbound/{orgId}/send" \
-H "Authorization: Bearer mp_live_xxx"{
"orgId": "org_xxx",
"tier": "standard",
"used": 42,
"remaining": 58,
"limit": 100,
"resetsAt": "2024-01-15T13:00:00Z"
}