End-to-end encryption
How E2EE rooms and their keys work.
E2EE is available on every plan. An end-to-end-encrypted room is opaque to
the server side: media cannot be recorded, streamed, or transcribed, and
server-side AI features refuse to start. Requesting recording or AI features
together with enableE2EE at room create is rejected as a caller bug.
Pass the key in the URL fragment
The encryption key rides the URL fragment (fragments are never sent to any server, so the key stays between you and the participant's browser):
…/join?token=…&url=…#e2ee_key=<base64url-key>The fragment parameter is named exactly e2ee_key (#e2ee= is also
accepted — an earlier revision of this guide documented that name).
Because the platform never sees the key, it can never be part of a
server-composed URL — append it to the returned joinUrl yourself.
The hosted page enforces the gate
If the room has enableE2EE: true and you omit the key, the hosted page
refuses to join and says the key is missing, rather than connecting you to
an encrypted room in the clear where you would be unintelligible to everyone.
Embedding caveat
When embedding /join in an iframe, the parent page
must not strip the URL fragment, or E2EE rooms lose their key.