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

# Rate limits

> 1000 requests per minute per key, and how to stay under it.

The API allows **1000 requests per 60 seconds per API key**. Exceeding it returns `429` with a `rate_limit_error`.

```json theme={null}
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Too many requests. Retry after 12 seconds.",
    "request_id": "req_abc123"
  }
}
```

## Handling 429

All three SDKs retry `429` automatically, up to three times, with exponential backoff. For most workloads you do not need to write any handling at all.

If you are managing retries yourself, back off exponentially with jitter rather than retrying on a fixed interval — a fleet of workers retrying in lockstep will simply re-collide.

```ts TypeScript icon="https://mintcdn.com/paragon-f28ba471/UuDHN4B1J-v_DThS/images/lang/typescript.svg?fit=max&auto=format&n=UuDHN4B1J-v_DThS&q=85&s=cba1e12257cdbf42b6c7a23031def04f" theme={null}
// Raise the retry budget for a bulk backfill.
const client = new Moneyline({ maxRetries: 6 });
```

```python Python icon="https://mintcdn.com/paragon-f28ba471/UuDHN4B1J-v_DThS/images/lang/python.svg?fit=max&auto=format&n=UuDHN4B1J-v_DThS&q=85&s=a9a026d5d8b16735c0cea1b7dd0ac6e5" theme={null}
client = Moneyline(max_retries=6)
```

```go Go icon="https://mintcdn.com/paragon-f28ba471/UuDHN4B1J-v_DThS/images/lang/go.svg?fit=max&auto=format&n=UuDHN4B1J-v_DThS&q=85&s=338b141516fd81c7c6c2302fdf1e318b" theme={null}
client, err := moneyline.NewClient("", moneyline.WithMaxRetries(6))
```

## Staying under the limit

The most effective lever is usually not concurrency control but avoiding the requests entirely:

* **Use webhooks instead of polling.** A worker polling `submission.status` every second burns the budget for one deal. Subscribing to `submission.processed` costs nothing. See [webhooks](https://docs.moneyline.co/guides/webhooks.md).
* **Raise `limit` on list calls.** One request at `limit=100` does the work of four at the default 25. See [pagination](https://docs.moneyline.co/guides/pagination.md).
* **Batch transaction writes.** `POST /v1/transactions` accepts an array.

> [!TIP]
>
> Limits are per key, so a separate key for a bulk backfill keeps it from starving
> your production traffic.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.