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

# Rate limits

> The per-minute and per-day request limits and the monthly credit allowance your plan sets, the 429 body, and what to do with it.

Three things bound how fast and how much you can call, and your plan sets all three. The **per-minute** and
**per-day limits** answer `429 rate_limited` with a `Retry-After` header once you spend the minute's or the day's
requests. Every call counts, charged or not. The **monthly credit allowance** answers `403 quota_exceeded` once you
spend it, until the billing period resets. On Growth and Scale, that answer comes once you reach the overage ceiling
instead.
[Plans and limits](/guides/plans-and-limits) has the numbers per plan and what a credit is.

## Handle a 429

```json theme={null}
{
  "type": "https://developers.investorlift.com/guides/concepts/errors#rate_limited",
  "title": "Rate limited",
  "status": 429,
  "code": "rate_limited",
  "instance": "/v1/deals",
  "request_id": "6f1c2a8e-..."
}
```

Wait `Retry-After` seconds, then retry. Do not retry immediately, and do not spread the same work across more keys.
`429` is the only status where a plain retry of the identical request is correct. For every other status, read
[Errors](/guides/concepts/errors) first.

<Note>
  Every charged response carries `X-Credits-Charged`, what it cost, and `X-Credits-Remaining`, the balance after it.
  The balance is recent to within a minute. The console's Keys and usage page shows the period's usage. A client that
  needs to pace its requests by the minute keeps its own count against the numbers on
  [Plans and limits](/guides/plans-and-limits).
</Note>

## Stay under the limits

* **Cache on `dataset_version`.** Every response carries it in `meta.coverage[]`, and it changes only when
  Investorlift rebuilds the tables. A cache keyed on it stays inside the [cache window](/guides/terms). Keep an entry
  for at most 30 days, and drop it within a business day of a version change. Check the current version at least once
  a business day with `GET /v1/dataset`, which the API does not meter, or with the `X-Dataset-Version` header. See
  [Coverage and freshness](/guides/concepts/coverage).
* **Ask for one page of what you will show.** `limit=20` behind a drawer costs at most 20 credits, where 100 rows you
  do not use can cost 100. A deal, investor or parcel your account already holds costs nothing
  again while the plan has credit. See [Plans and limits](/guides/plans-and-limits).
* **Use the summary instead of a count.** `/v1/deals/summary` gives the count in one call. A count that pages through
  every deal costs more.
* **Use cells for the map.** `/v1/deals/cells` returns counts per hexagon instead of thousands of deal rows, and it
  costs no credits. Every page of deals costs one credit per deal new to your account.

## Under load

Two more statuses come from the service, not from your budget:

* `503 pool_saturated` with `Retry-After: 1`. The service is at capacity and did not run your query. Retry in one
  second.
* `504 statement_timeout`. Your query passed the 10-second limit. A retry will not help. Narrow the radius or add
  filters.
* `503 ledger_unavailable` with `Retry-After: 5`. The service did not reach the credit ledger. It charged nothing and
  served nothing. Retry after that time.

## The CSV export

The one export on this host, the CSV of [a lender's loans](/api-reference/endpoints/lenders-loans#csv), has a budget of
its own beside the plan's limits. The budget is 12 exports a minute and one in flight at a time. The service counts
each per developer: your account alone, never the plan or the host as a whole. So another developer's export never
holds yours. Past either limit, the answer is `429 rate_limited` with `Retry-After`, as above.

## Partners and staff

Investorlift staff and contracted partners reach the internal host on the company network with a `gm_` key. That host
has no plan and no monthly allowance, and its limits are per minute and per bucket. More than one bucket can count a
request. The first bucket to reach zero returns `429 rate_limited` with `Retry-After` and a `retry_after` field in the
body. Every response the limiter counted carries the `x-ratelimit-limit`, `x-ratelimit-remaining` and
`x-ratelimit-reset` headers, but the `503 pool_saturated` that the in-flight cap answers before the count carries none.
Those three headers never appear on `api.investorlift.com`.

| Bucket      | Budget                                                     | Counted per                                                                       |
| ----------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Key         | 120 / min by default. A key can carry a budget of its own. | Your key                                                                          |
| IP          | 30 / min                                                   | The client address, for requests with no key or a bad one                         |
| User        | 240 / min                                                  | The pair (key, `X-On-Behalf-Of`)                                                  |
| CSV         | 12 / min                                                   | Your key, on `Accept: text/csv` requests only                                     |
| MCP contact | 30 / min                                                   | The pair (key, `X-On-Behalf-Of`), on MCP calls that actually serve contact fields |

The key bucket is the one you will meet. The user bucket is higher than the key bucket. It exists so that one person
inside your product cannot use the whole key's budget, not to cap your product. The CSV bucket is deliberately small,
because a CSV request can stream 50,000 rows. The internal host meters nothing per day or per month, and no budget
carries over. Each bucket refills continuously over its minute.


## Related topics

- [Plans and limits](/guides/plans-and-limits.md)
- [Errors over MCP](/mcp/errors.md)
- [Authentication](/guides/concepts/authentication.md)
- [List one lender's loans](/api-reference/endpoints/lenders-loans.md)
- [Privacy notice](/guides/privacy.md)
