REST API
Rate Limiting
Rate limits, daily quotas, and how to handle 429 responses.
Rate limits
Emailens enforces per-minute rate limits and daily usage quotas.
Per-minute limits
| Auth status | Limit | Window |
|---|---|---|
| Anonymous | 30 req/min | Per IP address |
| Authenticated | 60 req/min | Per user account |
Daily quotas
| Plan | Previews/day |
|---|---|
| Free | 3 |
| Dev ($9/mo) | 50 |
| Pro ($19/mo) | Unlimited |
Response headers
Rate limit information is included in response headers:
| Header | Description |
|---|---|
X-RateLimit-Remaining | Requests remaining in current window |
Retry-After | Seconds to wait before retrying (on 429 responses) |
Handling 429 responses
When you hit a rate limit, the API returns HTTP 429:
{
"error": "Rate limit exceeded. Try again later."
}For daily quota limits:
{
"error": "Daily preview limit reached (50). Upgrade your plan for more.",
"limit": 50,
"plan": "dev"
}Retry strategy
- Read the
Retry-Afterheader - Wait the specified number of seconds
- Retry the request
For automated pipelines, use exponential backoff starting from the Retry-After value.