These limits apply to Realtime SFU resources. Application limits such as room admission or a device's viewer cap are separate policies.
The API limits are:
| Resource or operation | Limit |
|---|---|
| API requests per session | 50 requests per second. The rate limit is per session rather than per app |
| Tracks added in one API request | Up to 64 |
| Tracks in a session | No fixed upper bound. Endpoint and connection capacity impose practical limits |
| WebSocket adapters created or closed in one request | One to four track entries |
| Reply access to a publisher DataChannel | At most one subscriber with canReply |
| WebSocket audio ingest message | 32 KB including serialized packet overhead |
Distribute larger track batches across multiple calls and serialize mutations on each session. Inspect per-item results before retrying a partially successful batch.
Apply each timeout to its resource and condition:
| Condition | Timeout | Result |
|---|---|---|
| A media track receives no incoming media packets | 30 seconds | The track is garbage-collected. Restore an expired publication and rebuild its subscriptions. |
| A session loses WebRTC connectivity | 30-second session/track reuse window | Reuse requires a viable connection and resources. Replace failed or closed connections immediately, or reconnect with a new session after the window. |
A remote DataChannel uses waitForAck: true |
First subscriber message within 30 seconds of allocation | Without it, the gated channel closes. Create a new subscription. Refer to subscriber readiness. |
For expiry before a session's first connection, follow session setup guidance. The media inactivity timeout does not define the lifetime of a connected session without media or a DataChannel-only connection. Close resources when finished.
Application heartbeat expiry does not mean WebRTC disconnected. Media that keeps arriving does not meet the inactivity condition. Use close results and recovery guidance to decide whether cleanup is complete or a resource can be reused.
Operations that require an established transport wait up to five seconds for connectivity before timing out. Complete initial transport negotiation before those operations. The connection recipes show where to apply SDP and wait for connectivity.
For WebRTC-to-WebSocket streaming, the SFU retries the same endpoint for up to five seconds after a temporary disconnect. An exhausted reconnect window closes the adapter. Ingest adapters do not automatically reconnect.
Refer to WebSocket adapter reconnect for buffering, delivery behavior, and application recovery.
Realtime SFU supports these media-track codecs:
| Media | Codecs |
|---|---|
| Video | H.264, H.265, VP8, VP9, AV1 |
| Audio | Opus, G.711 A-law, G.711 µ-law |
Endpoint support varies by WebRTC implementation. WebSocket adapters have their own format and direction constraints, including PCM audio and JPEG video output.
Refer to pricing for egress charging and the shared monthly free tier.