Rate Limits
Each API key has its own bucket - keys from the same org do not collide.
| Route pattern | Per minute | Per hour | Per day | Burst (10s) |
|---|---|---|---|---|
| Default (everything else) | 60 | 1,000 | 10,000 | 10 |
POST /checkin-points/:id/scan | 120 | 3,000 | 10,000 | 30 |
When you exceed the limit
When the limit is exceeded, you receive 429 RATE_LIMIT_EXCEEDED with these
headers:
X-RateLimit-Limit: 60X-RateLimit-Remaining: 0X-RateLimit-Reset: 1780336500X-RateLimit-Window: minuteRetry-After: 42Respect Retry-After (seconds) and wait that long before retrying. For polling
integrations such as live dashboards, refresh every 30-60 seconds to stay well
below the limit.