# Rate limits

> One request budget per account, shared across everything you build on Inboundr.

Inboundr meters usage per **account**, not per key or per endpoint. Every
authenticated call — a REST request or an [MCP](/integrations/mcp) tool
invocation — draws from the same budget:

<Info>
  **5 requests per second, per account.** The [REST API](/api-reference/introduction)
  and the MCP server share one bucket, keyed to the owner of the API key. Extra
  keys don't buy extra throughput — they all spend from the same account budget.
</Info>

The window is a rolling one-second counter, so your allowance refreshes every
second rather than draining toward a distant monthly reset.

## Reading your budget on every response

You never have to guess where you stand — each response carries your current
state:

| Header | Tells you |
| --- | --- |
| `ratelimit-limit` | The ceiling for the window (`5`). |
| `ratelimit-remaining` | Calls still available this second. |
| `ratelimit-reset` | Seconds until the counter refreshes. |

When a call is rejected you also get a `retry-after` header (in seconds) and a
`429` with:

```json
{ "error": "Maximum 5 requests per second allowed. Upgrade or contact support for higher limits." }
```

## Staying under the limit

Because the budget is shared, the thing to watch isn't any single loop — it's
everything hitting Inboundr on your account at once.

<AccordionGroup>
  <Accordion title="Pace agent tool calls" icon="robot">
    An agent working through an inbox can fire tools quickly. Sequence its
    `list_emails` → `get_thread` calls rather than fanning them out in
    parallel, and it will comfortably stay within five per second.
  </Accordion>
  <Accordion title="Page, don't hammer" icon="layer-group">
    Reading a large mailbox? Raise `limit` (up to 100) and
    [paginate](/api-reference/pagination) instead of firing many small,
    concurrent list calls.
  </Accordion>
  <Accordion title="Honor retry-after" icon="clock-rotate-left">
    On a `429`, wait the number of seconds in `retry-after` before retrying, and
    back off further if you keep hitting the wall. Since the window is one
    second, a brief pause is usually all it takes.
  </Accordion>
</AccordionGroup>

<Note>
  Building something that legitimately needs more headroom? Reach out — higher
  per-account limits are available for high-volume workloads.
</Note>
