Rate Limit Tiers
| Operation Type | Rate Limit | Endpoints |
|---|---|---|
| Read Operations (GET) | 200 requests/min | List/get company, workspaces, templates, signing requests, webhooks, settings |
| Write Operations (POST/PUT/PATCH/DELETE) | 120 requests/min | Create/update/delete workspaces, templates, signing requests, company info, settings |
| Webhook CRUD Operations | 60 requests/min | Create, update, delete webhooks |
| Webhook Test | 10 requests/min | Send test webhook |
| API Key Regeneration/Expiration | 1 request/min | Regenerate or expire workspace API keys |
| Webhook Secret Rotation | 1 request/min | Rotate webhook signing secret |
Rate Limit Headers
Every API response includes headers showing your current rate limit status:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed per minute for this endpoint |
X-RateLimit-Remaining | Number of requests remaining in current window |
X-RateLimit-Reset | Unix timestamp when the rate limit resets |
Rate Limit Exceeded Response
When you exceed the rate limit, the API returns a429 Too Many Requests response:
Retry-After header indicates how many seconds to wait before retrying.
Best Practices for Rate Limits
- Monitor rate limit headers - Check
X-RateLimit-Remainingto know when you’re approaching the limit - Implement exponential backoff - When receiving 429 errors, wait progressively longer between retries
- Cache responses - Store frequently-accessed data to reduce API calls
- Batch operations - Use comprehensive update endpoints (PUT) instead of multiple PATCH requests
- Use webhooks - Subscribe to events instead of polling for status changes
- Respect Retry-After - Always wait the specified time before retrying