Limits
Request, size, batch and rate limits enforced by the MailingCore API.
MailingCore enforces a small set of limits to protect deliverability and keep the platform fair. Each one returns a clear error when exceeded.
Request limits
| Limit | Value | On exceed |
|---|---|---|
| Recipients per batch send | 100 | 400 BATCH_LIMIT_EXCEEDED |
| Built message size | 10 MB | 413 EMAIL_TOO_LARGE |
| Subject length | 998 characters | 400 validation |
| Contacts per bulk import | 1 000 | 400 validation |
A batch counts each recipient against your quota, so a batch of 100 uses 100 emails.
Monthly email quota
Every plan includes a monthly email allowance. Usage is checked on projected usage — a batch of N counts as N up front:
| Usage | Behavior |
|---|---|
| < 80% | OK |
| 80–100% | OK + X-Quota-Warning header |
| 100–110% | Grace period — still sent, the owner is warned |
| > 110% | Hard block — 429 QUOTA_EXCEEDED |
Every send returns X-Quota-Limit, X-Quota-Used and X-Quota-Percentage. See Plans for per-plan allowances and Quota enforcement for the details.
Rate limits
| Scope | Limit |
|---|---|
| Authenticated requests | 300 / minute per user |
| Auth endpoints (login, register, 2FA, password reset) | 15 attempts / 15 minutes |
Rate-limited requests return 429. See Rate limits for headers and retry guidance.
Per-plan resource limits
Domains, team members and stored templates are capped per plan (for example Free: 1 domain / 1 member / 5 templates; Business: 20 / 50 / 500). See Plans for the full table.