Every limit and expiry time you might hit, with its default value.
This page lists every limit you might hit. Each value is the default
on Livqeno's hosted platform today.
Use it while you design your app. For example: how long a chat message can
be (so your message box can stop the user early), how many people fit in a
room, or how many tokens your backend can mint per minute.
The Configured by column is the setting name behind each value. It
tells you which limit an error refers to; you cannot change it yourself.
These are technical limits, not billing quotas. They do not change
based on how much of your free allowance you have left.
Your free allowances (RTC minutes, chat messages, live-streaming host-hours)
are on Usage.
One special case: the Live Streaming limits below (concurrent streams,
viewers, duration) are free-tier product limits. They work like every
other row here: a request is either within the limit or not.
| Limit | Default | Configured by |
|---|
| Participants per room | 50 | SIGNALING_MAX_PARTICIPANTS_PER_ROOM |
| Participants per live-stream room (higher, so the viewer limit can be reached) | 150 | SIGNALING_MAX_PARTICIPANTS_PER_LIVE_STREAM_ROOM |
| Signaling frame size | 16384 | SIGNALING_MAX_MESSAGE_BYTES |
| Signaling messages per connection, per window | 100 | SIGNALING_MAX_MESSAGES_PER_WINDOW |
| Signaling connection attempts per IP, per window | 20 | SIGNALING_MAX_CONNECTIONS_PER_WINDOW |
| RTC token lifetime (default; 30–21600 allowed) | 600 | RTC_TOKEN_DEFAULT_TTL_SECONDS |
| Media-server heartbeat timeout | 30 | SFU_HEARTBEAT_TIMEOUT_SECONDS |
| Limit | Default | Configured by |
|---|
| Concurrent LIVE streams per account | 1 | USAGE_FREE_TIER_LIVE_CONCURRENT_STREAMS |
| Viewers per stream | 100 | USAGE_FREE_TIER_LIVE_MAX_VIEWERS |
| Maximum stream duration (minutes) | 240 | USAGE_FREE_TIER_LIVE_MAX_STREAM_DURATION_MINUTES |
| Limit | Default | Configured by |
|---|
| Viewers per stream — Pay as you go | 1000 | USAGE_LIVE_MAX_VIEWERS_PAY_AS_YOU_GO |
| Viewers per stream — Startup | 1000 | USAGE_LIVE_MAX_VIEWERS_STARTUP |
| Viewers per stream — Growth | 5000 | USAGE_LIVE_MAX_VIEWERS_GROWTH |
| Viewers per stream — Enterprise | 0 | USAGE_LIVE_MAX_VIEWERS_ENTERPRISE |
| Limit | Default | Configured by |
|---|
| Message text characters | 4000 | CHAT_MAX_TEXT_LENGTH |
| Message metadata bytes | 4096 | CHAT_MAX_METADATA_BYTES |
| Chat WebSocket frame bytes | 65536 | CHAT_MAX_FRAME_BYTES |
| Reactions per message | 200 | CHAT_MAX_REACTIONS_PER_MESSAGE |
| Conversations per chat connection | 20 | CHAT_MAX_ROOM_SUBSCRIPTIONS |
| Message history page size | 100 | CHAT_MAX_HISTORY_PAGE_SIZE |
| Chat sends per user, per window | 30 | CHAT_SEND_RATE_LIMIT |
| Chat token lifetime (default) | 3600 | CHAT_TOKEN_DEFAULT_TTL_SECONDS |
| Chat token lifetime (maximum) | 21600 (6 * 60 * 60) | CHAT_TOKEN_MAX_TTL_SECONDS |
| Presence timeout (after this, the user shows as offline) | 45 | CHAT_PRESENCE_TTL_SECONDS |
| Typing indicator timeout | 7 | CHAT_TYPING_TTL_SECONDS |
| Limit | Default | Configured by |
|---|
| Attachment size | 26214400 (25 * 1024 * 1024) | STORAGE_MAX_ATTACHMENT_BYTES |
| Signed upload URL lifetime | 900 | STORAGE_UPLOAD_URL_TTL_SECONDS |
| Signed download URL lifetime | 900 | STORAGE_DOWNLOAD_URL_TTL_SECONDS |
| Limit | Default | Configured by |
|---|
| Webhook delivery attempts | 5 | CHAT_PUSH_MAX_ATTEMPTS |
| Webhook retry backoff base | 2000 | CHAT_PUSH_BACKOFF_BASE_MS |
| Webhook delivery timeout | 5000 | WEBHOOK_TIMEOUT_MS |
| Failures in a row before an endpoint is turned off | 50 | WEBHOOK_DISABLE_AFTER_FAILURES |
| Limit | Default | Configured by |
|---|
| Rate-limit window | 60 | RATE_LIMIT_WINDOW_SECONDS |
11 endpoints have a limit per time window. Each window is
60 seconds long.
| Endpoint | Per window |
|---|
POST /v1/live-streams | 30 |
POST /v1/live-streams/{streamId}/hosts | 60 |
POST /v1/live-streams/{streamId}/ingress | 30 |
POST /v1/live-streams/{streamId}/ingress/reset | 30 |
POST /v1/live-streams/{streamId}/restreams | 30 |
POST /v1/live-streams/{streamId}/stage/promote | 60 |
POST /v1/live-streams/{streamId}/viewer-tokens | 120 |
POST /v1/rooms/{roomId}/agents | 30 |
POST /v1/rooms/{roomId}/rtc-tokens | 60 |
DELETE /v1/rooms/{roomId}/rtc-tokens/{tokenId} | 60 |
POST /v1/rooms/{roomId}/transcription | 30 |
| Where | What you get |
|---|
| REST API | HTTP 429 with code RAVEN_RATE_LIMITED and a retryAfterSeconds field. |
| Chat | A RATE_LIMITED error frame with the same retryAfterSeconds field. |
| Chat connection | The socket closes with code 4429. |
| RTC signaling connection | The socket closes with code 4029. |
Wait for retryAfterSeconds before retrying. Don't use a fixed delay.