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

# LumiID API Rate Limits: Plans, Headers, and Backoff

> LumiID rate limits range from 60 req/min on Free to custom on Enterprise. Read rate limit headers and handle 429 responses with exponential backoff.

LumiID enforces rate limits on all API requests to protect platform stability and ensure fair usage across every customer. Limits are applied per API key and are measured across two windows: requests per minute and requests per day. Understanding how limits work — and how to handle them gracefully — is an important part of building a reliable production integration.

## Limits by Plan

Your rate limit depends on the plan your organization is on. The table below shows the default limits for each tier.

| Plan | Requests per minute | Requests per day |
| - | - | - |
| Free | 60 | 1,000 |
| Pro | 300 | 10,000 |
| Business | 1,000 | 100,000 |
| Enterprise | Custom | Custom |

## Rate Limit Headers

Every API response includes headers that show your current usage against the active limit window. You can inspect these headers to proactively throttle your requests before hitting the limit.

```http theme={null}
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 241
X-RateLimit-Reset: 1714560000
```

| Header | Description |
| - | - |
| `X-RateLimit-Limit` | The maximum number of requests allowed in the current window for your API key. |
| `X-RateLimit-Remaining` | The number of requests you have left in the current window. |
| `X-RateLimit-Reset` | A Unix timestamp indicating when your current window resets and your full limit is restored. |

## Handling 429 Responses

When you exceed your rate limit, the API returns a `429 Too Many Requests` response. The response includes a `Retry-After` header telling you how many seconds to wait before retrying. Your integration should read this header and back off accordingly.

The example below shows a simple Python function that retries a request with exponential backoff when it receives a `429`:

```python theme={null}
import requests
import time

def verify_with_backoff(url, payload, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.post(url, json=payload, headers=headers)
        if response.status_code == 429:
            wait = 2 ** attempt  # exponential backoff: 1s, 2s, 4s
            print(f"Rate limited. Retrying in {wait}s...")
            time.sleep(wait)
            continue
        return response
    raise Exception("Max retries exceeded")
```

> [!WARNING]
>
> Repeatedly sending requests after receiving a `429` may result in a temporary ban on your API key. Always implement exponential backoff in your integration — do not retry immediately or in a tight loop.

## Increasing Your Limits

If your use case requires more capacity than your current plan provides, you have two options:

* **Upgrade your plan.** Moving from Free to Pro or Pro to Business will immediately increase both your per-minute and per-day limits. See the [plan upgrade guide](https://docs.lumiid.com/help/change-plan.md) for step-by-step instructions.
* **Contact LumiID for Enterprise quotas.** If your requirements exceed the Business plan limits, reach out to the LumiID team to discuss a custom quota that fits your volume and use case.


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