Rate limits
Requests are limited per second and per month. When you exceed the monthly limit, credits (if any) are consumed automatically. Response headers expose current limits and remaining usage.
Response headers
X-RateLimit-Limit-Second— per-second capX-RateLimit-Remaining-Second— remaining this secondX-RateLimit-Limit-Month— monthly quotaX-RateLimit-Remaining-Month— remaining this monthX-API-Plan— your plan name
HTTP 429
Per-second limit:
json
{
"success": false,
"error": "rate_limit_exceeded",
"message": "Per-second limit of 25 req/s exceeded (startup plan).",
"upgrade_url": "https://freecustom.email/api/pricing"
}Monthly quota exhausted (no credits):
json
{
"success": false,
"error": "monthly_quota_exceeded",
"message": "Monthly quota of 500,000 requests exhausted.",
"hint": "Purchase request credits (never expire) or upgrade your plan.",
"credits_url": "https://freecustom.email/api/credits",
"upgrade_url": "https://freecustom.email/api/pricing"
}Use the Retry-After header (seconds) when present to back off.