---
title: "Rate limits"
url: https://docs.light-ai.app/rate-limits.md
canonical_url: https://docs.light-ai.app/rate-limits
last_updated: 2026-10-13
summary: "Per-key, per-organization and per-source request limits, the headers that report them and how to back off."
api_status: beta
related:
  - https://docs.light-ai.app/errors
  - https://docs.light-ai.app/idempotency
  - https://docs.light-ai.app/pagination
---

# Rate limits

> Per-key, per-organization and per-source request limits, the headers that report them and how to back off.

| Limit | Default |
| --- | --- |
| Per key: reads | 120 a minute |
| Per key: writes | 60 a minute |
| Per organization (all keys and partners; live and test counted separately): reads | 300 a minute |
| Per organization: writes | 120 a minute |
| Per partner key | 600 a minute in total, plus each organization's limits |
| Per inbound source | 60 a minute by default, plus a daily limit (default 500; at most 2,000, or 500 in URL mode) |
| Mockup generations | 3 running at once per organization |
| Test webhooks | 30 test sends an hour, 500 test deliveries a day per organization |

Over a limit the answer is `429` [`rate_limited`](https://docs.light-ai.app/errors#rate_limited) (or [`daily_cap_reached`](https://docs.light-ai.app/errors#daily_cap_reached)) with `Retry-After` in seconds. A `429` for a per-minute limit also carries `RateLimit-Policy`, `RateLimit` and `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.

## Staying under

- Use webhooks or `GET /v1/events?sort=sync_asc` instead of polling every list.
- Use `limit=100` for syncs and follow `next_cursor`.
- Back off on `429`: wait `Retry-After`, then retry with the same `Idempotency-Key`.

Need more? E-mail [support@light-ai.app](mailto:support@light-ai.app) with your use case. The per-minute key and organization limits are the same for every organization; account caps (the number of keys, inbound sources and webhook endpoints, and the daily lead cap) can be raised per organization.
