[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"article-doc:docs\u002Fapi-reference\u002F9.rate-limits":3},"---\ntitle: Rate Limits\ndescription: Connection, request, session, and audio quotas by plan.\n---\nLimits are enforced per API key and derived from `BASE_PLAN_LIMITS` in the gateway configuration. A value of `0` means unlimited for audio-second budgets.\n\n## Plan limits\n\n| Limit | free | starter | pro | enterprise |\n|---|---:|---:|---:|---:|\n| Max concurrent WebSocket connections | 1 | 3 | 10 | 50 |\n| Max concurrent utterances | 2 | 4 | 8 | 16 |\n| Max connections per minute | 6 | 20 | 60 | 240 |\n| Max offline requests per minute | 12 | 60 | 300 | 1,200 |\n| Max audio seconds per offline request | 900 (15 min) | 7,200 (2 hr) | 14,400 (4 hr) | unlimited |\n| Max session wall-clock seconds | 900 (15 min) | 7,200 (2 hr) | 28,800 (8 hr) | 28,800 (8 hr) |\n| Max audio seconds per realtime session | 900 (15 min) | 7,200 (2 hr) | 28,800 (8 hr) | 28,800 (8 hr) |\n| Max audio seconds per billing window | 3,600 (1 hr) | 72,000 (20 hr) | 720,000 (200 hr) | unlimited |\n| Idle timeout (no audio) | 60 s | 120 s | 180 s | 300 s |\n\n## What happens when a limit is hit\n\n| Scenario | Response |\n|---|---|\n| Exceed concurrent connections | HTTP 429 `concurrent_connection_limit` |\n| Exceed connection rate | HTTP 429 `connection_rate_limited` with `Retry-After` |\n| Exceed offline request rate | HTTP 429 `request_rate_limited` with `Retry-After` |\n| Exceed per-request audio length | HTTP 413 `audio_too_long` |\n| Exceed realtime session duration | WebSocket close `1008` `session_duration_limit` |\n| Exceed realtime session audio | WebSocket close `1008` `session_audio_limit` |\n| Exhaust billing-window audio | WebSocket close `1008` `audio_quota_exhausted` or HTTP 429 |\n| No audio within idle timeout | WebSocket close `4408` `idle_timeout` |\n| Upstream backpressure | WebSocket close `1013` `upstream_backpressure` |\n| Client not reading fast enough | WebSocket close `1013` `client_backpressure` |\n| Frame larger than 1 MiB | WebSocket close `1009` `audio_frame_too_large` |\n\n## Raising limits\n\nContact the LansonAI team to move to a higher plan or negotiate custom `GATEWAY_PLAN_LIMITS_JSON` overrides.\n\n## Related\n\n- [Realtime API](\u002Fdocs\u002Fapi-reference\u002Frealtime-api) — WebSocket endpoint details\n- [Client Messages](\u002Fdocs\u002Fapi-reference\u002Fclient-messages) — audio frame and `session.update` messages\n- [Errors](\u002Fdocs\u002Fapi-reference\u002Ferrors) — error and close codes\n",1790059118945]