livqenoDocs

ResourcesFAQ

FAQ

Short answers to the questions people ask most.

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. Use flutter 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 from sdks/java with mvn 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.left with reason TOKEN_REVOKED, close 4001).
  • ❌ 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:

  1. Your backend calls addHost().
  2. You give the viewer the new credentials.
  3. 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