Rate limits & quotas
Per-workspace request rate limits, daily and monthly email quotas, pay-as-you-go limits.
Request rate limit
The public API allows 10 requests per second per workspace by default. All API keys of a workspace share the same budget, and it covers every /api/v1 endpoint, MCP tools/call requests and SMTP messages. Every /api/v1 response carries the current state:
ratelimit-limit: 10 ratelimit-remaining: 7 ratelimit-reset: 1
ratelimit-reset is the number of seconds until the window resets. Over the limit, the API answers 429 rate_limit_exceeded with a retry-after header (seconds). Need more throughput? Use batch sends (up to 100 emails per request) or contact support.
Email quotas
Quotas count recipients, not API calls: an email to 3 addresses in to plus 2 in cc uses 5. Every accepted transactional email counts from the moment it is accepted (queued, scheduled, sent, delivered, bounced, …); only emails that end failed or canceledgive their quota back. The check and the insert are atomic, so parallel requests can't overshoot.
| Limit | Window | Error when exceeded |
|---|---|---|
| Daily limit (e.g. 100/day on Free) | UTC calendar day | 429 daily_quota_exceeded |
| Monthly quota (e.g. 3,000 on Free) | Free: UTC calendar month. Paid: your billing period. | 429 monthly_quota_exceeded |
| Pay-as-you-go overage cap | Billing period | 429 overage_cap_reached |
| Pay-as-you-go spend limit (optional) | Billing period | 429 spend_limit_reached |
Plan limits are listed on the pricing page. Broadcast emails don't count toward the transactional quota — Marketing plans limit contacts instead (see Broadcasts).
Pay-as-you-go
On a paid plan with pay-as-you-go enabled, sending continues past the monthly quota and the overage is billed in whole buckets of 1,000 emails, rounded up. Two guards stop runaway costs: an overage cap (by default five times the plan quota) and an optional spend limit you set in Settings → Usage. With pay-as-you-go disabled, sending stops at the quota.
Scheduled and batch sends
- A scheduled email counts toward the period it is scheduled to be sent in, and is checked again when it goes out.
- A batch is all-or-nothing: if the batch's recipients don't fit, no email in it is accepted.
Other limits
| Limit | Value |
|---|---|
| Recipients per email (to + cc + bcc) | 50 |
| Emails per batch request | 100 |
How far ahead scheduled_at may be | 30 days |
| Tags per email | 50 |
| Idempotency-Key length / retention | 256 characters / 24 hours |
| Request body size | 8 MiB |
| SMTP message size | 10 MB |
Warm-up and automatic pauses
403 sending_paused) to protect deliverability for everyone.