Livqeno Docs

Limits & quotas

Every ceiling and TTL a developer meets, with the variable that sets it. Generated from the API configuration.

Every value below is a default, read out of the API's configuration. A self-hosted deployment can change any of them; a hosted one has whatever its operator set.

Nothing here is a billing quota. The one quota Livqeno does enforce is the 20,000 free RTC minutes every account is granted — see Usage. Everything below is a technical ceiling, and none of it is affected by how many minutes you have left.

Ceilings and TTLs

RTC

LimitDefaultConfigured by
Participants per room50SIGNALING_MAX_PARTICIPANTS_PER_ROOM
Signaling frame size16384SIGNALING_MAX_MESSAGE_BYTES
Signaling messages per connection, per window100SIGNALING_MAX_MESSAGES_PER_WINDOW
Signaling connection attempts per IP, per window20SIGNALING_MAX_CONNECTIONS_PER_WINDOW
RTC token lifetime (default; 30–21600 allowed)600RTC_TOKEN_DEFAULT_TTL_SECONDS
Media-server heartbeat timeout30SFU_HEARTBEAT_TIMEOUT_SECONDS

Chat

LimitDefaultConfigured by
Message text characters4000CHAT_MAX_TEXT_LENGTH
Message metadata bytes4096CHAT_MAX_METADATA_BYTES
Chat WebSocket frame bytes65536CHAT_MAX_FRAME_BYTES
Reactions per message200CHAT_MAX_REACTIONS_PER_MESSAGE
Conversations per chat connection20CHAT_MAX_ROOM_SUBSCRIPTIONS
Message history page size100CHAT_MAX_HISTORY_PAGE_SIZE
Chat sends per user, per window30CHAT_SEND_RATE_LIMIT
Chat token lifetime (default)3600CHAT_TOKEN_DEFAULT_TTL_SECONDS
Chat token lifetime (maximum)21600 (6 * 60 * 60)CHAT_TOKEN_MAX_TTL_SECONDS
Presence key TTL — expiry is the offline transition45CHAT_PRESENCE_TTL_SECONDS
Typing indicator TTL7CHAT_TYPING_TTL_SECONDS

Attachments

LimitDefaultConfigured by
Attachment size26214400 (25 * 1024 * 1024)STORAGE_MAX_ATTACHMENT_BYTES
Signed upload URL lifetime900STORAGE_UPLOAD_URL_TTL_SECONDS
Signed download URL lifetime900STORAGE_DOWNLOAD_URL_TTL_SECONDS

Webhooks

LimitDefaultConfigured by
Webhook delivery attempts6WEBHOOK_MAX_ATTEMPTS
Webhook retry backoff base10000WEBHOOK_BACKOFF_BASE_MS
Webhook delivery timeout5000WEBHOOK_TIMEOUT_MS
Consecutive failures before an endpoint is disabled50WEBHOOK_DISABLE_AFTER_FAILURES

Rate limiting

LimitDefaultConfigured by
Rate-limit window60RATE_LIMIT_WINDOW_SECONDS

Rate-limited endpoints

16 routes carry a per-window budget. The window itself is 60 seconds.

EndpointPer window
POST /v1/auth/login10
POST /v1/auth/oauth/{provider}/exchange10
POST /v1/auth/oauth/{provider}/start20
POST /v1/auth/password-reset5
POST /v1/auth/password-reset/confirm5
POST /v1/auth/register5
POST /v1/auth/verify-email10
POST /v1/auth/verify-email/resend3
POST /v1/live-streams30
POST /v1/live-streams/{streamId}/hosts60
POST /v1/live-streams/{streamId}/viewer-tokens120
POST /v1/projects/{projectId}/api-keys20
POST /v1/projects/{projectId}/rooms/{roomId}/test-token30
POST /v1/rooms/{roomId}/rtc-tokens60
DELETE /v1/rooms/{roomId}/rtc-tokens/{tokenId}60
POST /v1/telemetry/events600

What a limit looks like when you hit it

A REST limit returns 429 with RAVEN_RATE_LIMITED and a retryAfterSeconds field — use it rather than a fixed backoff. A chat limit arrives as a RATE_LIMITED error frame carrying the same field. A signaling connection limit closes the socket with code 4429.

Next steps