Limits 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.
Plan limits
| Limit | free | starter | pro | enterprise | |---|---:|---:|---:|---:| | Max concurrent WebSocket connections | 1 | 3 | 10 | 50 | | Max concurrent utterances | 2 | 4 | 8 | 16 | | Max connections per minute | 6 | 20 | 60 | 240 | | Max offline requests per minute | 12 | 60 | 300 | 1,200 | | Max audio seconds per offline request | 900 (15 min) | 7,200 (2 hr) | 14,400 (4 hr) | unlimited | | Max session wall-clock seconds | 900 (15 min) | 7,200 (2 hr) | 28,800 (8 hr) | 28,800 (8 hr) | | Max audio seconds per realtime session | 900 (15 min) | 7,200 (2 hr) | 28,800 (8 hr) | 28,800 (8 hr) | | Max audio seconds per billing window | 3,600 (1 hr) | 72,000 (20 hr) | 720,000 (200 hr) | unlimited | | Idle timeout (no audio) | 60 s | 120 s | 180 s | 300 s |
What happens when a limit is hit
| Scenario | Response |
|---|---|
| Exceed concurrent connections | HTTP 429 concurrent_connection_limit |
| Exceed connection rate | HTTP 429 connection_rate_limited with Retry-After |
| Exceed offline request rate | HTTP 429 request_rate_limited with Retry-After |
| Exceed per-request audio length | HTTP 413 audio_too_long |
| Exceed realtime session duration | WebSocket close 1008 session_duration_limit |
| Exceed realtime session audio | WebSocket close 1008 session_audio_limit |
| Exhaust billing-window audio | WebSocket close 1008 audio_quota_exhausted or HTTP 429 |
| No audio within idle timeout | WebSocket close 4408 idle_timeout |
| Upstream backpressure | WebSocket close 1013 upstream_backpressure |
| Client not reading fast enough | WebSocket close 1013 client_backpressure |
| Frame larger than 1 MiB | WebSocket close 1009 audio_frame_too_large |
Raising limits
Contact the LansonAI team to move to a higher plan or negotiate custom GATEWAY_PLAN_LIMITS_JSON overrides.
Related
session.update messages