Short answers to the questions developers ask most, grouped by where you are in building your app. Each answer links to the page with the full story.
Getting started
Do I need a backend?
Yes. Your app can't make its own token, and the API key that makes
tokens must never be in a browser. Your backend can be tiny: one route that
calls livqeno.tokens.create().
The backend is also where you decide who the user is (from your own login) and what they may do (publish video, or only watch). Livqeno trusts that decision, because it's signed into the token.
Can I try it without a backend?
For a quick test, yes. Make a token with curl in your terminal and paste
it into a page. It expires in 10 minutes. Fine for a demo, not for a real
app, because real users need a fresh token each time they join.
Which SDK do I install?
Two: one for your backend (@livqeno/server or livqeno) and one for
your app. See Install an SDK.
Are the packages published?
- JavaScript/TypeScript (
@livqeno/*, including the CLI): yes, on npm. - Flutter (
livqeno_rtc,livqeno_chat,livqeno_live): yes, on pub.dev. Useflutter pub add. - Python:
pip install livqeno. - Go:
go get github.com/atulsinghhhh/swalvo-sdks/sdks/go/livqeno. - Java (
com.livqeno:livqeno-server): not on Maven Central yet. Build it fromsdks/javawithmvn install. See Java SDK. - PHP (
livqeno/livqeno-php): not on Packagist yet. Install it with a Composer path repository. See PHP SDK.
Tokens and authentication
How long should a token last?
As short as works for you. The default, 600 seconds, is right for most apps. You can revoke a token, but that won't end a call already in progress. So a short lifetime is your real protection if a token leaks.
What happens when a token expires during a call?
- RTC: nothing. The token is only checked when joining (or rejoining after a reconnect).
- Chat: the connection ends, unless you handle
onTokenExpiring.
Can several participants share one token?
No. The user's identity is inside the token. Two people with the same identity in one room will clash. Make one token per participant.
Can I revoke a token?
Yes, for RTC: DELETE /v1/rooms/{roomId}/rtc-tokens/{tokenId}, using the
id from when you made it.
What revoking does:
- ✅ Blocks new connections with that token. They fail with
TOKEN_REVOKED. - ✅ Ends a session already running on that token (
room.leftwith reasonTOKEN_REVOKED, close4001). - ❌ Doesn't touch a session that refreshed onto a newer token, and doesn't stop a new token for the same person getting in.
To remove one person right now, whatever token they're on:
POST /v1/rooms/{roomId}/participants/{identity}/remove. To remove
everyone, close the room: DELETE /v1/rooms/{roomId}.
For chat tokens, your backend calls DELETE /v1/chat/tokens/{tokenId},
using the tokenId from when you made it. It works the same way: new
connections fail with TOKEN_REVOKED, but an already-open chat connection
stays open. There's no SDK method for it yet.
Rooms and calls
Do I need to create a room before making a token?
Yes. The token endpoint needs a room id.
What happens to a room when everyone leaves?
The media server is freed. The room record stays, so its name is still
taken and its history still works. Deleting a room just marks it CLOSED.
How many people fit in a room?
50 by default (SIGNALING_MAX_PARTICIPANTS_PER_ROOM). After that, joins
fail with ROOM_FULL. Whether 50 runs smoothly depends on the network and
how many videos you show. See Build a group call.
Why does join() take a room name, but the token endpoint wants an id?
The token contains both, so join() accepts either. The token endpoint uses
the id. Using room.id in both places always works.
Can two participants have the same identity?
They shouldn't. Each identity must be unique in a room. Duplicates break the participant list.
Chat
Is chat separate from RTC?
Yes, completely. Different connection, different token, different package. Use either one, or both. A call with a chat panel uses two separate connections, on purpose: if chat has a problem, the call keeps going. See Architecture.
Why do I get my own messages back?
So every user shows the message as the server saved it. When
sendMessage() finishes, the message is saved. The message event delivers
it to everyone, including you. Show messages from the event, and every user
sees the same order.
Can I see if a message was "delivered" to each person?
No, on purpose. Receiving data doesn't mean a person saw it. A tab in the
background receives everything. Use read instead, which needs the user to
actually do something.
Are messages kept forever?
By default, yes. Set CHAT_RETENTION_DAYS, or a per-conversation setting, to change it.
Live streaming
How many viewers can a stream have?
Not proven at scale yet. Livqeno's tests reach 100 participants on loopback with fake media. A large broadcast hasn't been measured.
Can I record a stream?
A broadcast-mode stream, yes: as a replay. When a live stream in
broadcast mode ends, Livqeno saves its HLS output as a replay and sends the
live_stream.recording_ready webhook with the replay's URL (see
Live stream). Recording an ordinary call
(an RTC room), or a stream that isn't in broadcast mode, isn't available.
Can a viewer become a host during a stream?
Yes:
- Your backend calls
addHost(). - You give the viewer the new credentials.
- The viewer's app rejoins with them.
An app can't promote itself. Publish permission is signed into the token.
Operations
Do I have to host anything myself?
No. Livqeno runs everything: the control plane, media servers, and TURN relays. You only use the SDKs and the API. See Quickstart.
Which browsers work?
Only Chromium is tested with real media. Other browsers report as "supported" based on their features, but they aren't tested. See Browser support.
Do I need to set up TURN myself?
A TURN relay is a server that forwards audio and video when a network blocks a direct connection, which many office and mobile networks do.
No. Livqeno's TURN relays come with every token, in iceServers. Just
pass them to the client. Without a relay, many users on office and mobile
networks would connect but get no audio or video.
What data does Livqeno collect about my users?
Connection events and media stats. No media, message content, or
credentials. Turn it off with telemetry: false. See
Telemetry & privacy.
Next steps
- Known limitations · Troubleshooting
- Concepts: if a word here was new to you.