> ## Documentation Index
> Fetch the complete documentation index at: https://docs.madiad.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limits

> How many requests you can make per minute, and what happens when you exceed it.

MADIAD Hub applies a per-customer request rate limit. Publishing is unlimited on every paid plan, so for a publish call this rate limit is the only thing you can hit:

* **Rate limit** — how fast you can call the API, checked on every authenticated request.
* **Metered allowances** — FFmpeg minutes, profiles, and daily DMs are still capped by plan; posts are not. See [Usage](/concepts/usage) for your current figures.

The two are independent — you can have your entire FFmpeg allowance left and still get rate-limited by bursting too many requests too quickly.

## The limit

* **Fixed 60-second window**, tracked per customer account (not per API key or per profile).
* **Default: 120 requests/minute.** Higher limits are available for high-volume integrations — contact support if you need a higher ceiling.
* It's a **fixed window**: the counter resets on each 60-second boundary, so usage doesn't carry over to the next window.

## When you exceed it

The API returns:

```
HTTP/1.1 429 Too Many Requests
Retry-After: 60
```

```json theme={null}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded (120/min). Slow down and retry shortly."
  }
}
```

See [Errors](/concepts/errors) for the full error code reference.

## Handling 429s

* **Respect `Retry-After`.** The header tells you exactly how long to wait (in seconds) before your next attempt — don't retry sooner.
* **Back off exponentially** on repeated 429s if you're calling in a loop or from a queue worker, rather than hammering the endpoint every time the window resets.
* **Spread out bursts.** If you're fanning out many posts at once (e.g. bulk scheduling from a script), add a small delay between requests instead of firing them all concurrently.

<Tip>
  If a request that creates something (like a post) gets rate-limited and you retry it, send the same `Idempotency-Key` you used on the first attempt — see [Idempotency](/concepts/idempotency). That way a retry can never create a duplicate.
</Tip>

## If the limiter itself has a problem

The rate limiter fails **open**: if the underlying check errors out for any reason, MADIAD Hub lets the request through rather than blocking it. A limiter outage on our side will never be the reason your legitimate traffic gets blocked.
