One email
| What | Limit |
|---|---|
| Recipients | 50 across to, cc and bcc together, each address once |
| Reply-To addresses | 50 |
| Subject | One line, 1 to 998 characters |
| Body | html, text or both |
| Attachments | 20, base64 in the request; executable file types are refused |
| Headers | 20: X-* (not X-SES-*), List-Unsubscribe, List-Unsubscribe-Post, List-Id, In-Reply-To, References, Auto-Submitted |
| Tags | 10 name and value pairs |
| scheduled_at | At most 72 hours ahead |
Content we refuse
Before an email is queued, we check three things, and refuse it with 422 validation_error if any is true:
- the From name or domain imitates a bank, a payments company or a government body on our list;
- a link goes through a URL shortener, which hides where it leads;
- an attachment is a program, such as .exe, .js or .apk.
The message says which, and nothing is counted against your caps. In a batch, one refused email refuses the batch.
One request
| What | Limit |
|---|---|
| Size | 4 MB, attachments included; larger is refused with 413 |
| Emails in a batch | 1 to 100 |
| Emails in a page of GET /emails | 1 to 100, 20 unless asked |
| Idempotency-Key | 1 to 256 printable ASCII characters, kept 24 hours |
One key
Each API key may make 10 requests a second, with bursts of up to 20. Past that the answer is 429 rate_limited with retry-after. A batch is one request.
Your plan
Each plan has a cap a day and a cap a month — see pricing. Caps count recipients, not requests: an email to three people counts three. Days and months run on Lagos time. An email counts on the day it is to go, so a scheduled email counts on the day it is scheduled for, a moved one moves with it, and a canceled one is given back.
A new account is in the sandbox: it sends only to its own members’ confirmed addresses, at most 100 a day, until we approve it. Once approved, an account starts at 1,000 a day (or its plan’s cap, if lower) while it warms up.
At a cap, new emails are refused with 429 quota_exceeded, and retry-after says when the day or month starts again.