# Rate limits & quotas

> The API allows 10 requests per second per account by default. Plans set daily and monthly sending quotas; deliveries are paced per account.

Source: https://docs.pidgely.com/rate-limits/

Three different limits apply to an account. They protect the platform and your sender reputation, and each one fails in its own, recognizable way.

| Limit | Applies to | When exceeded |
|---|---|---|
| Request rate | API requests per second, per account | `429 rate_limit_exceeded` with `Retry-After` |
| Sending quotas | Recipients accepted per UTC day and per month | `429 daily_quota_exceeded` / `monthly_quota_exceeded` |
| Delivery pacing | How fast accepted mail leaves the MTA | Nothing fails: deliveries are spread over time |

## Request rate

The default is **10 requests per second per account**, with bursts up to twice that. The limit is shared by every API key and dashboard session of the account. When you exceed it:

```http
HTTP/1.1 429 Too Many Requests
Retry-After: 1
Content-Type: application/json

{"statusCode":429,"name":"rate_limit_exceeded","message":"Too many requests. Please limit the number of requests per second."}
```

Wait for the number of seconds in `Retry-After`, then retry. There are no `ratelimit-*` headers.

To send many emails, use [`POST /emails/batch`](https://docs.pidgely.com/api-reference/emails/send-batch/): one request carries up to 100 emails, so 10 requests per second can submit up to 1,000 emails per second. If you need a higher request rate, [contact support](https://docs.pidgely.com/support/).

## Sending quotas

Quotas count **accepted recipients**: an email to three recipients uses three. Recipients that are on your [suppression list](https://docs.pidgely.com/guides/suppressions/) are not delivered and do not count.

- The **daily** quota resets at 00:00 UTC.
- The **monthly** quota follows the UTC calendar month.
- A [batch](https://docs.pidgely.com/api-reference/emails/send-batch/) that would go over the daily quota is rejected as a whole.
- Quota errors do not include `Retry-After`. Broadcasts that hit a quota pause and resume automatically the next UTC day ([Broadcasts](https://docs.pidgely.com/guides/broadcasts/#quotas)).

### Plans

| Plan | Emails per month | Daily cap | Sending domains |
|---|---|---|---|
| Free | 10,000 | 500 | 1 |
| Starter | 50,000 | — | 3 |
| Growth | 250,000 | — | 10 |
| Scale | 1,000,000 | — | Unlimited |

Prices and overage are on [pidgely.com/#pricing](https://pidgely.com/#pricing). New accounts start in a **sandbox** on the Free plan: the sandbox applies the Free plan's quotas and domain limit, with no other restriction on what you can send or to whom.

## Delivery pacing

Accepting an email and delivering it are separate steps. Each account delivers at its own contracted rate: a burst from one customer is spread over time instead of starving everyone else, and receiving servers see a steady stream. You don't need to throttle on your side: send as fast as the request rate allows and Pidgely schedules the deliveries.

## Reputation guard

To protect your domain and the shared IPs, sending is **paused automatically** when, over the last 7 days:

- the bounce rate is above **4%** (evaluated once at least 200 messages were delivered or bounced), or
- the complaint rate is above **0.1%** (evaluated once at least 1,000 messages were delivered).

While paused, new sends get `403 validation_error` (`sending is paused for this account: …`) and queued messages wait. Clean your list (see [Deliverability](https://docs.pidgely.com/guides/deliverability/)) and [contact support](https://docs.pidgely.com/support/) to resume.
