Skip to content

Rate Limits

Emitlo enforces rate limits per organization to ensure fair usage and protect deliverability.


Send limits

Rate limits are configured per organization based on your plan:

LimitDescription
Per-minuteMaximum emails per minute
Per-hourMaximum emails per hour
DailyMaximum emails per day

Your current limits are visible in the Dashboard → Overview under Sending Limits.


Rate limit headers

When you approach or exceed a limit, the API returns:

HTTP 429 Too Many Requests

HTTP/1.1 429 Too Many Requests
Retry-After: 47
Content-Type: application/json
{
"status": "error",
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded. Retry after 47 seconds."
}
}

Handling rate limits

Always implement retry logic with the Retry-After header:

async function sendWithRetry(payload, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch('https://api.emitlo.com/api/v1/messages', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}
return response.json();
}
throw new Error('Max retries exceeded');
}

High-volume sending

For high-volume use cases (newsletters, bulk notifications), use batch send to maximize throughput — up to 500 messages per API call.

If you need higher rate limits, contact support to discuss your requirements.