livqenoDocs

SDKsOverview

SDKs

Which Livqeno package you need, and what each one can do.

Livqeno has a package for each platform. This page helps you pick the right ones, and explains how they work together.

Every Livqeno app uses two packages, one on each side:

  • A backend package runs on your server. It holds your secret API key and uses it to make tokens.
  • A client package runs in your app (browser or phone). It holds only a token, and uses it to join a call, a chat, or a live stream.

Neither kind can do the other's job. The split is on purpose: the API key can do anything in your project, so it must stay on a server you control. A token is short-lived and only works for one room or conversation, so it's safe to hand to a user's device.

How the two sides work together

Your appclient SDK
Your backendserver SDK
Livqeno
1alice wants to join
2checks alice is logged in
3livqeno.tokens.create(...)
4token + addresses
5sends the grant back
6client.join(grant)
7alice is in the room
Request flow between the client SDK, your backend and Livqeno.

You write steps 1–5 yourself: a normal HTTP endpoint on your backend, and a fetch in your app. The SDKs do steps 6–7. The Quickstart builds this whole loop in about ten minutes.

Pick by what you're building

You're building…Backend packageClient package
A web video call (plain JS)Any server SDK@livqeno/rtc
A web chatAny server SDK@livqeno/chat
A web app with calls and chatAny server SDK@livqeno/live
A React or Next.js appAny server SDK@livqeno/react (+ rtc / chat)
An iOS / Android app in React NativeAny server SDK@livqeno/react-native
An iOS / Android app in FlutterAny server SDKlivqeno_rtc, livqeno_chat, livqeno_live
Scripts, CI, or managing projects by hand—@livqeno/cli

The backend choice depends only on your server's language: TypeScript, Python, Go, Java or PHP. Any backend package works with any client package.

Pick a package

PackageRuns onUsesReference
@livqeno/serverYour TypeScript backendAPI keyTypeScript
livqenoYour Python backendAPI keyPython
github.com/atulsinghhhh/swalvo-sdks/sdks/go/livqenoYour Go backendAPI keyGo
com.livqeno:livqeno-serverYour Java / JVM backendAPI keyJava
livqeno/livqeno-phpYour PHP backendAPI keyPHP
@livqeno/rtcBrowserRTC tokenNext.js
@livqeno/chatBrowserChat tokenNext.js
@livqeno/liveBrowserBoth, in one objectLivqeno Client
@livqeno/reactBrowser (React)Hooks for the aboveReact
@livqeno/react-nativeiOS, AndroidRTC + chatReact Native
livqeno_rtc, livqeno_chat, livqeno_liveiOS, Android (Flutter)RTC / chat / streamingFlutter
@livqeno/cliYour terminalYour dashboard loginCLI

Where to get them

PackagesRegistryInstall
@livqeno/* (including the CLI)npmnpm install @livqeno/..., or pnpm add, yarn add, bun add
livqeno_rtc, livqeno_chat, livqeno_livepub.devflutter pub add ...
livqenoPyPIpip install livqeno
Go SDKGo modulesgo get github.com/atulsinghhhh/swalvo-sdks/sdks/go/livqeno
com.livqeno:livqeno-serverNot on Maven Central yetmvn install from sdks/java, then add the dependency
livqeno/livqeno-phpNot on Packagist yetcomposer require livqeno/livqeno-php with a path repository

The two packages for a web video call:

pnpm add @livqeno/server @livqeno/rtc

Requirements

PackageMinimum
@livqeno/serverNode.js 20
livqenoPython 3.10
Go SDKGo 1.22
com.livqeno:livqeno-serverJava 17
livqeno/livqeno-phpPHP 8.1, ext-curl, ext-json
@livqeno/reactReact 18
@livqeno/react-nativeReact Native 0.73, react-native-webrtc 124
livqeno_rtc, livqeno_chat, livqeno_liveFlutter 3.27 (Dart 3.6), Android minSdkVersion 23, iOS 13

Every JavaScript SDK ships ESM and CommonJS builds with its own TypeScript types. Full setup: Install an SDK.

What each SDK supports

✓ means it works and has a test in the repository. Planned features are never marked ✓.

BrowserReactReact NativeFlutterNodePythonGo / Java / PHPCLI
Mint tokens————✓✓✓—
Join a room✓✓✓✓————
Camera / microphone✓✓✓✓————
Screen sharing✓✓— ¹✓————
Device selection✓✓✓✓ ²————
Data messages✓✓✓✓————
Diagnostics / stats✓✓✓— ³———✓
Simulcast layer control✓✓ ⁴✓ ⁴✓————
Chat✓✓✓✓✓ ⁵✓ ⁵✓ ⁵— ⁶
Live streaming✓✓✓✓✓ ⁵✓ ⁵✓ ⁵✓ ⁷
Rooms / streams management————✓✓✓✓
Observability————✓✓✓✓
  1. The platform can't capture the screen. This isn't a Livqeno gap.
  2. switchCamera() switches front/rear. The web has no equivalent.
  3. LivqenoRoom has no stats method yet.
  4. Through the same @livqeno/rtc track: track.setLayer(), with adaptiveStream on by default. The tests for it are in @livqeno/rtc. Details.
  5. Server-side admin only: create conversations, post messages, mint credentials. It does not join and read the live feed.
  6. Read-only. The CLI uses your dashboard login, not an API key.
  7. Start/stop only. Minting credentials stays in the server SDKs.

Same names everywhere

This matters when your team builds for more than one platform: what you learn on one SDK carries over to the others.

  • A Room on the web is the same as a Room in React Native.
  • A LivqenoRoom in Dart has the same ideas, in Dart syntax.
  • No SDK renames things. There is no "Broadcast" on one and "LiveSession" on another.

No SDK exposes raw WebRTC types like RTCPeerConnection. The one exception is track.mediaStreamTrack, for when you really need low-level access.

What every SDK promises

  • The API key is stored privately. It never shows up in JSON.stringify(), a Python repr(), Go's %+v, a Java toString() or a PHP var_dump().
  • Credentials are never logged.
  • Credentials never appear in errors. Errors carry {message, code, requestId}.
  • Errors are typed. You never get a raw DOMException or a raw HTTP body.

Next steps

Set up your backend first, because the client can't do anything without a token.