Troubleshooting
Fix common token, join and media problems.
Overview
Start with the error code returned by the token API or the SDK, then follow the matching fix below.
Token API errors
- 400 invalid_request — body is not JSON or misses room_id, user_id, role or streams
- 401 invalid_credentials — App ID or App Secret is wrong (repeated failures temporarily block the address)
- 403 server_side_only — the request came from a browser (Origin header); call from your server
- 403 scope_denied — the credential lacks the publish or subscribe scope you asked for
- 403 ip_not_allowed — your server's address is not on the credential's IP allowlist
- 403 project_archived — the project was archived in the console
- 429 rate_limited — slow down; honour the Retry-After header
- 502 issuer_unavailable / turn_unavailable / signaling_unavailable — temporary; retry with backoff
Join fails
- Token expired — request a new one right before joining
- Wrong room or role — the grant only works for the room and streams it names
- Clock skew — make sure your server clock is synced (NTP)
No audio or video
- Check microphone/camera permissions on the device
- If UDP is blocked, request TURN credentials ("turn": true) — see /docs/firewall
- Check Diagnostics in the console for packet loss and round-trip time
Source references
apps/local-site/lib/product-status.ts
Was this page helpful?