Using API v1? See what changes in v2, or the v1 docs
RATE_LIMIT_EXCEEDED
The request rate exceeds this plan's rate limit.
HTTP status: 429. Retrying the same request may succeed.
What to do
Wait for the Retry-After interval, cache reads, and use webhooks instead of polling. Higher plans have higher limits.
Hint returned with the error: Wait for the interval in the Retry-After header, then retry the request.
Why it happens
- Sustained traffic above the plan's rate limit
Endpoints that return it
- List accounts
GET /v2/accounts - Create a virtual account
POST /v2/accounts - Get an account
GET /v2/accounts/{accountId} - Update an account
PATCH /v2/accounts/{accountId} - Delete an account
DELETE /v2/accounts/{accountId} - Import accounts
POST /v2/accounts/import - List account imports
GET /v2/accounts/imports - Get the status of several accounts
GET /v2/accounts/status - Get calendar settings
GET /v2/accounts/{accountId}/settings - Update calendar settings
PATCH /v2/accounts/{accountId}/settings - Get the status of an account
GET /v2/accounts/{accountId}/status - List working locations
GET /v2/accounts/{accountId}/working-locations - Get an account import
GET /v2/accounts/imports/{importId} - Retry an account import
POST /v2/accounts/imports/{importId}/retry - Connect an account with a code
POST /v2/connect/accounts - Get a sign-in URL
GET /v2/connect/oauth - Create a connect session
POST /v2/connect/sessions - Get a connect session
GET /v2/connect/sessions/{id} - List calendar groups
GET /v2/calendar-groups - Create a calendar group
POST /v2/calendar-groups - List calendars
GET /v2/calendars - Create a calendar
POST /v2/calendars - Get color palettes
GET /v2/colors - Rename a calendar group
PATCH /v2/calendar-groups/{groupId} - Delete a calendar group
DELETE /v2/calendar-groups/{groupId} - Get a calendar
GET /v2/calendars/{calendarRef} - Update a calendar
PATCH /v2/calendars/{calendarRef} - Delete a calendar
DELETE /v2/calendars/{calendarRef} - Subscribe to a calendar
POST /v2/calendars/subscribe - List categories
GET /v2/calendars/{calendarRef}/categories - Create a category
POST /v2/calendars/{calendarRef}/categories - Get a calendar's feed
GET /v2/calendars/{calendarRef}/feed - Enable a calendar's feed
PUT /v2/calendars/{calendarRef}/feed - Disable a calendar's feed
DELETE /v2/calendars/{calendarRef}/feed - List calendar permissions
GET /v2/calendars/{calendarRef}/permissions - Share a calendar
POST /v2/calendars/{calendarRef}/permissions - Unsubscribe from a calendar
DELETE /v2/calendars/{calendarRef}/subscription - Update a category
PATCH /v2/calendars/{calendarRef}/categories/{categoryId} - Delete a category
DELETE /v2/calendars/{calendarRef}/categories/{categoryId} - Rotate a feed's link
POST /v2/calendars/{calendarRef}/feed/rotate - Update a calendar permission
PATCH /v2/calendars/{calendarRef}/permissions/{permissionId} - Delete a calendar permission
DELETE /v2/calendars/{calendarRef}/permissions/{permissionId} - List events
GET /v2/events - Create an event
POST /v2/events - Get an event
GET /v2/events/{eventId} - Update an event
PATCH /v2/events/{eventId} - Delete an event
DELETE /v2/events/{eventId} - Import an event
POST /v2/events/import - Create an event from text
POST /v2/events/quick - List an event's attachments
GET /v2/events/{eventId}/attachments - Attach a link
POST /v2/events/{eventId}/attachments - Forward an invitation
POST /v2/events/{eventId}/forward - List occurrences of a recurring event
GET /v2/events/{eventId}/instances - Move an event to another calendar
POST /v2/events/{eventId}/move - Respond to an invitation
POST /v2/events/{eventId}/respond - Delete an attachment
DELETE /v2/events/{eventId}/attachments/{attachmentId} - Upload a file to an event
POST /v2/events/{eventId}/attachments/file - Dismiss a reminder
POST /v2/events/{eventId}/reminder/dismiss - Snooze a reminder
POST /v2/events/{eventId}/reminder/snooze - Download an attachment
GET /v2/events/{eventId}/attachments/{attachmentId}/content - Get free/busy for one account
GET /v2/free-busy - Get free/busy for several accounts
POST /v2/free-busy - Find meeting times
POST /v2/meeting-times - List rooms and resources
GET /v2/rooms - List meetings
GET /v2/meetings - Create a meeting
POST /v2/meetings - Get a meeting
GET /v2/meetings/{meetingId} - Update a meeting
PATCH /v2/meetings/{meetingId} - Delete a meeting
DELETE /v2/meetings/{meetingId} - List invitations
GET /v2/invitations - Get an invitation
GET /v2/invitations/{invitationId} - List webhook endpoints
GET /v2/webhooks - Create a webhook endpoint
POST /v2/webhooks - Get a webhook endpoint
GET /v2/webhooks/{webhookId} - Update a webhook endpoint
PATCH /v2/webhooks/{webhookId} - Delete a webhook endpoint
DELETE /v2/webhooks/{webhookId} - List webhook deliveries
GET /v2/webhooks/deliveries - List webhook event types
GET /v2/webhooks/event-types - List webhook events
GET /v2/webhooks/events - Stream sandbox webhook events
GET /v2/webhooks/listen - Replay failed webhook deliveries
POST /v2/webhooks/{webhookId}/replay - Retrieve the signing secret
GET /v2/webhooks/{webhookId}/secret - Send a test delivery
POST /v2/webhooks/{webhookId}/test - Get a webhook delivery
GET /v2/webhooks/deliveries/{deliveryId} - Get a webhook event
GET /v2/webhooks/events/{eventId} - Rotate the signing secret
POST /v2/webhooks/{webhookId}/secret/rotate - Replay a webhook delivery
POST /v2/webhooks/deliveries/{deliveryId}/replay - Import extended properties into metadata
POST /v2/metadata/import - List metadata imports
GET /v2/metadata/imports - Get a metadata import
GET /v2/metadata/imports/{importId} - Cancel a metadata import
DELETE /v2/metadata/imports/{importId} - List API keys
GET /v2/keys - Get an API key
GET /v2/keys/{keyId} - Rotate an API key
POST /v2/keys/{keyId}/rotate - Get the sandbox
GET /v2/sandbox - Reset the sandbox
POST /v2/sandbox/reset - Simulate an external change
POST /v2/sandbox/simulate-change - Simulate a Zoom meeting event
POST /v2/sandbox/simulate-meeting - Simulate an invitation response
POST /v2/sandbox/simulate-reply - Get usage by day
GET /v2/usage - List request logs
GET /v2/logs - Get a request log
GET /v2/logs/{traceId}