Skip to main content
Markdown

Errors

Every refusal has a short code. In the browser, it is e.code of a rejected promise, { code } of an error or realtime:error event, or a call's endReason. On your server, it is a RealtimeError's code in Node and Python, and its errorCode in PHP. Laravel's broadcasting wraps it in a BroadcastException.

The connection​

rt.on( 'error', ( e ) => … ), or connect() rejecting:

CodeWhyWhat to do
not_licensedWordPlus Cloud doesn't know the app's keythe key is wrong, or the app was deleted
not_includedthe app's grant doesn't include realtime
wrong_originthe page isn't on one of the app's addressesadd the address to the app (scheme, host and port exactly: http://localhost:3000, capacitor://localhost)
over_capacityyour apps hold all the connections your account may have at onceserve the worker, so a browser's tabs share one; ask for more
try_latera server still startingthe page tries again by itself
bad_requestthe handshake was malformed

Channels​

realtime:error on a subscription:

CodeWhy
forbiddenyour server said no, or nothing owns the channel
expired, bad_tokenthe token ran out, or wasn't signed with your app's secret (a secret rotated more than a day ago, say)
bad_channelnot a channel name the server takes
too_manythe connection holds 1,000 channels
fulla presence channel has its 1,000 members
auth_failedyour auth route didn't answer, or answered an HTTP error
no_auththe page has no auth route
timeout, serverthe server didn't answer, or failed

trigger() also rejects with rate_limited, bad_event (not client-…), too_large or forbidden. realtime:unopened ({ event, label }) is an event the page had no key for, even after asking your keys route.

Publishing​

RealtimeError from publish(), publishBatch() and channelInfo():

CodeWhy
missing_signature, stale_signature, unknown_site, bad_signaturethe signature wasn't taken: a server clock off by more than 5 minutes is stale_signature, a wrong secret bad_signature
not_includedthe grant doesn't include realtime
bad_requestno channels, or an event named realtime:…
too_many, too_largeover 100 channels or 10 events, or data over 10 KB
unreachable, http_<status>the server couldn't be reached

Calls​

From calls.start(), incoming.accept() and calls.room(), from your calls route (denied), and as a call's endReason:

CodeWhy
forbiddenyour calls() callback said no, or nothing owns the call
no_usernobody signed in, or a user id that isn't an integer (this version)
not_includedthe grant doesn't include calls
bad_requesta name the server doesn't take, or calling yourself
bad_token, expiredthe token wasn't your app's, or ran out
no_call, call_ended, answered_elsewhereanswered too late, or on another device
auth_failed, no_authyour calls route didn't answer, or the page has none
no_rooms_script, rooms_script_failed, rooms_script_brokenthe room client isn't served, or didn't load
signaling_unavailablethe page's connection was down