- Two kinds of limit: per request and per plan
- What one Mail Send request can carry
- How the 1,000-recipient cap is counted
- Checking a request before you send it
- Rate-limit headers and the 429
- Your daily volume and your API keys
- How Postmark and Amazon SES compare
- My advice for small senders
- Frequently asked questions
SendGrid's v3 Mail Send API allows up to 1,000 recipients per email and a total message size under 30MB, including attachments. You can call the endpoint up to 10,000 times per second. How much email you can send each day depends on your plan, and the API documentation doesn't give that as a single number.
Two kinds of limit: per request and per plan
When people ask about SendGrid's sending limits they usually mean one of two things. The first is what a single API request can carry: recipients, size and extras. Those are fixed and documented. The second is how much you can send in a day, which is set by your plan rather than the API. This page covers the v3 Mail Send API; SMTP and Marketing Campaigns have their own rules.
What one Mail Send request can carry
| Item | Limit | Applies to |
|---|---|---|
| Total message size | Less than 30MB including attachments | v3 Mail Send API |
| Recipients per request | No more than 1,000 across to, cc and bcc | v3 Mail Send API |
| Request rate | Up to 10,000 requests per second | v3 Mail Send endpoint |
| Custom arguments length | Less than 10,000 bytes | v3 Mail Send API |
| reply_to_list entries | 1,000 per request | Each Mail Send request |
| API keys per account | 100 | Every SendGrid account |
| Daily email volume | Set by your plan, not stated as one number in these docs | All plans |
Two smaller rules are worth knowing. Unicode encoding isn't supported in the from field, so keep the sender name plain. And some high-volume accounts can use mail body compression, where the gzip file can be no more than 30mb.
How the 1,000-recipient cap is counted
The Twilio SendGrid Docs explain the detail people miss. The 1,000 limit counts to, cc and bcc together, across every object in the personalizations array of one request. So if you send to 400 people in to, with 300 cc'd and 301 bcc'd, you're over, even though no single field has 1,000. If your list is bigger, split it across several requests; at up to 10,000 requests a second, the request rate won't be the bottleneck.
Checking a request before you send it
- Add up to, cc and bcc across every personalization. Is it 1,000 or fewer?
- Is the whole message, attachments included, under 30MB? Large PDFs are the usual culprit; link to them instead.
- Are your custom arguments under 10,000 bytes?
- Is the from field free of Unicode characters?
Four quick checks, and most failed sends disappear.
Rate-limit headers and the 429
Every Web API response includes rate-limit headers showing how many requests remain in the current refresh period. Go over and you'll get HTTP 429. Then, for the rest of that refresh period, you can't make requests to that endpoint at all. Read the headers as you go and slow down before you reach zero, rather than waiting to be locked out.
Your daily volume and your API keys
The Mail Send endpoint is available on all plans, but the same plan-based limits on how much you can send still apply. The docs don't publish one daily number, so check your own account rather than relying on a number from a forum. If you're comparing providers on that basis, my head to head of SendGrid and Mailgun covers it.
On keys: each account can have up to 100 API keys, and the console shows a key only once, when you create it. Copy it straight into your password manager. Lose it and you'll need to create a new one.
How Postmark and Amazon SES compare
Postmark's send-email API limits recipients to 50 per message, counting To, Cc and Bcc together.
Amazon SES lists a maximum message size of 10 MB per message, including attachments, on its v1 API, and bases its quotas on recipients rather than messages.
Want AI doing the heavy lifting in your marketing?
I build the systems that handle the boring 80 percent, so you get your week back. Done properly, with the human kept in.
Whichever you use, sending within the limits is only half the job. My email deliverability checklist covers getting those emails into the inbox.
My advice for small senders
Send one personalised email per recipient rather than one email with hundreds of people in bcc. It keeps you well under the 1,000 cap, it's better for deliverability, and each person sees their own message. Keep attachments small, watch the rate-limit headers, and save your API key the moment it's shown.
Want your tool on this list? Featured spots and reviews here are paid partnerships. Here's how to partner with me.
Frequently asked questions
How many recipients can I send to in one SendGrid email?
Up to 1,000 in total across to, cc and bcc, per the Mail Send documentation.
What's the maximum email size?
Less than 30MB including attachments.
How many API calls per second?
Up to 10,000 requests per second to the v3 Mail Send endpoint.
What's my daily sending limit?
It depends on your plan. The docs say plan-based volume limits still apply and give no single number.
What happens when I hit the rate limit?
The API returns HTTP 429 and blocks further requests to that endpoint until the refresh period ends.

