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

# Cutshort API Rate Limits: Quotas, Headers, and Backoff Guide

> Cutshort API rate limits by endpoint, response headers for quota tracking, and best practices including exponential backoff to stay within your limits.

The Cutshort API enforces rate limits to ensure fair access across all customers. Limits apply per API key and vary by endpoint. When you exceed a limit, the API returns HTTP `429` with a `Retry-After` header telling you how many seconds to wait.

## Default Rate Limits

| Endpoint category    | Requests per minute | Daily limit |
| -------------------- | ------------------- | ----------- |
| Candidate search     | 60                  | 5,000       |
| Candidate profile    | 120                 | 10,000      |
| Job management       | 30                  | 1,000       |
| Sourcing / shortlist | 10                  | 200         |
| Invites              | 20                  | 500 per job |
| Webhooks             | 30                  | 500         |

<Note>
  Enterprise plans have higher limits. Contact support to increase your quota.
</Note>

## Rate Limit Headers

Every API response includes headers that show your current usage window:

| Header                  | Description                                    |
| ----------------------- | ---------------------------------------------- |
| `X-RateLimit-Limit`     | Maximum requests allowed in the current window |
| `X-RateLimit-Remaining` | Requests remaining in the current window       |
| `X-RateLimit-Reset`     | Unix timestamp when the window resets          |
| `Retry-After`           | Seconds to wait before retrying (only on 429)  |

Example response headers:

```http theme={null}
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1705312800
```

## Best Practices

1. Cache search results when the same query is run frequently.
2. Use `per_page=50` to reduce the number of requests needed to paginate results.
3. Check `X-RateLimit-Remaining` before bulk operations.
4. Implement exponential backoff for `429` responses.
5. Distribute large batch operations over time rather than sending all at once.

## Exponential Backoff Example

```python theme={null}
import time, random

def exponential_backoff(attempt: int, base_delay: float = 1.0) -> float:
    delay = base_delay * (2 ** attempt) + random.uniform(0, 1)
    return min(delay, 60)  # Cap at 60 seconds

# Usage
for attempt in range(5):
    try:
        result = make_api_call()
        break
    except RateLimitError:
        delay = exponential_backoff(attempt)
        print(f"Rate limited. Retrying in {delay:.1f}s")
        time.sleep(delay)
```
