Docs
← chronapilot.com v 2026-05-12

Rate limits

ChronaPilot enforces per-key rate limits at the edge. Limits are designed to be invisible to well-behaved integrations.

Default limits

SurfaceLimitWindowConcurrency
REST (general)100 req/secrolling 1s5 concurrent
Free/Busy queries50 req/secrolling 1s5 concurrent
Voice WebSocket10 concurrent sessions
Smart Suggestions10 req/secrolling 1s2 concurrent
Webhook delivery (outbound)up to 24 retries / 72h

Limits are enforced per API key. OAuth tokens count against the issuing connected account's pool.

Per-resource sub-limits

A few endpoints have stricter limits than the platform-wide budget. They share the same 429 rate_limit_error shape:

EndpointLimit
POST /v1/events/{id}/departure/recompute4 / minute per event
POST /v1/connections/{id}/refresh1 / minute per connection
POST /v1/webhook_endpoints/{id}/test30 / hour per endpoint
POST /v1/voice/sessions60 / hour per user

Response headers

Every response includes:

HeaderMeaning
X-RateLimit-LimitMaximum requests in the current window.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix epoch seconds when the window resets.

When you exceed

You receive a 429 with:

JSON
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Retry after 1.2s.",
    "retry_after_seconds": 1.2
  }
}

A Retry-After header is also set. Back off and retry — preferably with jitter to avoid retry thunder.

Increasing limits

Custom limits are available on Scale and Enterprise plans. Email support@chronapilot.com with your typical and peak traffic patterns and we'll provision additional headroom — usually within one business day.