Core concepts

Rate limits

Per-IP throttling, the global window and the stricter auth limits.

The API is rate limited per client IP address. When you exceed a limit, the request is rejected with 429 Too Many Requests; wait for the window to reset and retry.

Global limit

By default every endpoint shares a global limit of 100 requests per 60-second window, per IP. This is generous for normal integration traffic; batch large jobs rather than bursting.

Stricter limits on authentication

Sensitive authentication endpoints have their own, much tighter limits to resist brute-force and abuse. These apply in addition to the global limit and are also counted per IP over the same 60-second window.

EndpointLimit (per minute)
POST /auth/login5
POST /auth/trial-signup3
POST /auth/forgot-password3
POST /auth/reset-password5
POST /auth/verify-otp10
POST /auth/resend-otp3
POST /auth/change-password5
POST /auth/phone-otp/start3
POST /auth/phone-otp/verify10

The 429 response

A throttled request returns the standard error envelope with status 429:

json · 429 Too Many Requests
{
  "statusCode": 429,
  "message": "ThrottlerException: Too Many Requests",
  "requestId": "req_...",
  "timestamp": "2026-09-06T09:00:00.000Z",
  "path": "/api/v1/auth/login"
}

Handle 429 with backoff

On a 429, pause and retry after the 60-second window elapses, ideally with exponential backoff. Attaching an Idempotency-Key to writes (see making requests) makes those retries safe against duplication.

Limits are keyed on the real client IP

The API sits behind a proxy that forwards the true client address, so limits are counted per originating IP — not bucketed across all callers. Values above are the platform defaults and may be tuned per deployment.