Server
Rate limits and status codes
Engine rate limits, HTTP status codes and common messages.
Rate limits
| Limit | Value |
|---|---|
| REST requests per minute, per project | 120 |
| WebSocket messages per second, per connection | 60 |
| WebSocket connections per identity | 5 |
| Concurrent rooms, per project | 300 by default |
| Participants per seated room | 300 by default |
| Time to use a token | 1 hour |
When you go over the REST limit, you get this response, and RateLimit-* headers tell you where you stand:
HTTP 429 Too Many Requests
{ "message": "Too many requests — try again later" }A live_stream room has no participant cap.
To ask for higher limits, contact us.
HTTP status codes
| Status | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request |
401 | Missing or invalid credentials |
403 | The project or account is suspended, the user is banned, the feature is off, or the origin isn't allowed |
404 | The room or participant wasn't found |
409 | A conflict, such as a seat that's taken |
422 | A missing or invalid field |
429 | The rate limit, or the concurrent room limit |
500 | Server error |
Common messages
| Message | What to do |
|---|---|
Missing X-App-Id or X-App-Key header | Send both headers |
Invalid credentials | Check your App ID and key, and whether it was rotated |
Invalid or expired user token | Mint a new token |
Client secret auth is disabled for this project; use a user token | Send the user_token as a bearer |
Project is suspended | See Low balance and suspension |
Origin not allowed | Your project restricts origins, so call from an allowed one |
User is banned | The user can't join until the ban is removed |
Maximum concurrent rooms reached | Close rooms, or ask for a higher limit |
Type 'live_stream' is not enabled for this project | Enable it under Service Management |
Only host or admin can perform this action | The user doesn't have the role for this |
The kits and the console report numeric codes. See Error codes.