# Usage limits

> Recipient counts, batch size, attachment size, and the daily sending quota.

| Limit | Value |
| --- | --- |
| Recipients per email (`to`) | 1–50 |
| `cc` / `bcc` recipients | up to 50 each |
| Emails per batch (`POST /emails/batch`) | up to 100 |
| Attachment size (per file) | up to 25 MB |
| Total attachments per email | up to 40 MB |
| Daily sending quota | per-account (defaults to a conservative cap; raised on request) |

When a send would exceed your daily quota, the request is **rejected** with a `429 daily_quota_exceeded` — it is not queued or partially sent. Wait until the quota resets (or request a higher cap) and retry.

> **Warning:** Sending requires production access on the account. Until granted, sending is capped to sandbox limits (verified recipients only).

## Rate limits

The **send endpoints** (`POST /emails` and the transactional send API) are rate-limited **per client IP** to absorb bursts — on the order of a few dozen send requests per minute. Exceeding that rate returns a `429 rate_limit_exceeded` response. Other endpoints are not subject to this per-request cap; your sustained sending volume is governed by your account quotas (below) rather than a strict per-second limit.

To stay within the limit, reduce the rate at which you call the send endpoints — for example by introducing a queue or lowering the number of concurrent requests — and honor the `retry-after` header when you receive a `429`.

### Rate-limit response headers

Responses from the rate-limited send endpoints include headers describing your current rate-limit window (the draft-6 lowercase form of the [IETF RateLimit Headers draft](https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-ratelimit-headers-06)):

| Header | Description |
| --- | --- |
| `ratelimit-limit` | Maximum number of requests allowed within a window. |
| `ratelimit-remaining` | How many requests you have left within the current window. |
| `ratelimit-reset` | How many seconds until the limits are reset. |
| `retry-after` | How many seconds you should wait before making a follow-up request. |

## Email quota headers

In addition to rate limits, responses return headers that track your email sending quotas:

| Header | Description |
| --- | --- |
| `x-mailblastr-daily-quota` | Your used daily email sending quota. Only sent to accounts subject to a daily cap. |
| `x-mailblastr-monthly-quota` | Your used monthly email sending quota. |

When you exceed a quota you receive a `429` with either `daily_quota_exceeded` (reached your daily email quota — wait until 24 hours have passed or upgrade) or `monthly_quota_exceeded` (reached your monthly email quota — upgrade to increase it). Both sent and received emails count towards these quotas.
