Default limits
| Window | Limit |
|---|---|
| Per minute | 60 requests |
| Per day | 10,000 requests |
Response headers
Every API response includes headers showing your current rate limit status:| Header | Description |
|---|---|
X-RateLimit-Limit-Minute | Maximum requests allowed per minute |
X-RateLimit-Remaining-Minute | Requests remaining in the current minute window |
X-RateLimit-Reset-Minute | Unix timestamp when the minute window resets |
X-RateLimit-Limit-Day | Maximum requests allowed per day |
X-RateLimit-Remaining-Day | Requests remaining in the current day window |
X-RateLimit-Reset-Day | Unix timestamp when the day window resets |
Retry-After | Seconds to wait before retrying (only present on 429 responses) |
Handling rate limits
When you exceed the limit, the API returns a429 status code with a rate_limited error:
Retry-After header to determine how long to wait before retrying.
Best practices
- Check the headers. Monitor
X-RateLimit-Remaining-Minuteto stay within limits proactively. - Use filters. Narrow your
GET /v1/contactsrequests with filters likeemailoremail_permissionto reduce the number of calls needed. - Cache responses. Avoid making the same request repeatedly when the data hasn’t changed.
- Implement backoff. If you receive a
429, wait the number of seconds specified inRetry-Afterbefore retrying. For repeated failures, use exponential backoff.
Need higher limits? Contact support@privy.com to discuss your use case.