Rate Limits
Monthly, daily, and hourly send limits and how to check your current usage.
Molted Email enforces rate limits across three time windows to protect deliverability and prevent abuse.
Rate limit windows
| Window | Reset cycle |
|---|---|
| Monthly | Resets on the 1st of each month (UTC). |
| Daily | Resets at midnight UTC. |
| Hourly | Resets at the top of each hour (UTC). |
Limits for each window depend on your plan. See Billing & Plans for the full table.
Checking usage
Use the GET /v1/me/usage endpoint to check your current usage:
curl https://api.molted.email/v1/me/usage \
-H "Authorization: Bearer YOUR_API_KEY"Response
{
"monthly": {
"used": 42,
"limit": 1000,
"remaining": 958
},
"daily": {
"used": 12,
"limit": 200,
"remaining": 188
},
"hourly": {
"used": 3,
"limit": 50,
"remaining": 47
}
}What happens when a limit is exceeded
When any window's limit is reached, subsequent send requests are blocked with reason rate_limited:
{
"requestId": "req_abc123",
"status": "blocked",
"reason": "rate_limited"
}The request is not queued. You must wait for the window to reset or upgrade your plan.
Sends can also be blocked for billing reasons:
trial_not_activated— the tenant is in trial state and hasn't started a paid trial via Stripe Checkout yet.subscription_expired— the tenant's subscription has been cancelled or a payment has failed.
Storage quota
In addition to send rate limits, each plan has a storage quota that limits total message body and attachment storage. When the storage limit is exceeded, attachment uploads are blocked with reason storage_limit_exceeded:
{
"statusCode": 403,
"message": "Storage limit exceeded. Used: 1073741824 bytes, limit: 1073741824 bytes."
}Existing data remains accessible. See Storage & Attachments for details on storage limits and retention.
Best practices
- Monitor usage with
GET /v1/me/usagebefore large batch sends. - Spread sends across hours to avoid hitting hourly limits.
- If you regularly hit limits, consider upgrading your plan.