Skip to content

Rate limits

Chatevo applies rate limits per organization, deployment, and endpoint class to keep the platform stable for all tenants.

CategoryScopeDefault limit (Production)Window
GlobalOrganization API key / session1,000 requests1 minute
AuthLogin, token refresh, password reset10 attempts1 minute per IP
ChatDirect API messages60 messages1 minute per deployment
WidgetConfig + message endpoints120 requests1 minute per deployment
WebhookOutbound delivery attempts100 deliveries1 minute per endpoint

Higher limits are available on Pro and Enterprise plans. Contact sales for custom quotas.

Every rate-limited response includes:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only on 429 responses)

Example 429 body:

{
"error": {
"code": "rate_limit_exceeded",
"message": "Chat rate limit exceeded for deployment dep_abc123.",
"retry_after": 8
}
}

The widget embed script and config endpoint are optimized for fast first paint:

MetricTarget
chat.js download + parse≤ 500 ms (CDN, gzip)
Config fetch (/api/v1/widget/config)≤ 300 ms p95
Total time to interactive bubble≤ 2 seconds on a typical 4G connection

If your site exceeds this budget due to heavy third-party scripts, defer non-critical JS or load the Chatevo script with async before </body>.

Applies to assistants, knowledge bases, tools, conversations, and webhook registration. Bulk automation should batch writes and respect Retry-After.

Protects against credential stuffing. Repeated 401 responses do not bypass this limit — use exponential backoff.

Counts user and assistant messages sent via /api/v1/messages. Streaming connections count as one message per request.

Counts config loads and message posts from the embed. Each visitor session typically uses 1 config request plus message requests during the conversation.

Chatevo retries failed deliveries with backoff. Your endpoint should respond within 5 seconds with 2xx. See Webhook HMAC.

  1. Cache assistant and KB metadata server-side; do not poll list endpoints in a loop.
  2. Use webhooks for conversation events instead of polling conversations.
  3. On 429, wait at least Retry-After seconds before retrying.
  4. Load-test staging deployments before high-traffic launches.