Rate Limits
Rate limits are per API key using a sliding window. Exceeding a limit returns 429 with rate limit headers.
Limits by endpoint
| Endpoint Group | Limit |
|---|---|
POST /v1/clay/enrich |
5 / 60s |
POST /v1/research, POST /v1/enrich |
10 / 60s |
POST /v1/research/bulk, POST /v1/lists, POST /v1/lists/{id}/analyze |
2 / 60s |
POST /v1/research/{id}/sequence |
20 / 60s |
| All other endpoints | 60 / 60s |
Rate limit headers
Every response includes rate limit information:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Max requests allowed in the window |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | Unix timestamp when the window resets |
| Retry-After | Seconds to wait (only on 429 responses) |
Handling rate limits
The Python SDK automatically retries on 429 responses with exponential backoff (up to 3 retries by default):
# Automatic retries (default: 3)
client = AuggieClient("aug_your_key", max_retries=3)
# Disable retries
client = AuggieClient("aug_your_key", max_retries=0)
# Catch rate limits manually
from auggie import RateLimitError
try:
result = client.research("https://example.com")
except RateLimitError as e:
print(f"Retry after {e.retry_after} seconds")