livqenoDocs

Live StreamingSDK Support Matrix

SDK Support Matrix

What each Livqeno SDK can do for Live Streaming, and what's left out on purpose.

Before you build, check that your platform can do what you need. This page shows which SDK can do what for Live Streaming, and why some things are left out on purpose.

Where this fits: a live-stream app always uses two SDKs: a server SDK on your backend to create streams and credentials, and a client SDK in your app to join and watch. See Install an SDK.

All SDKs use the same ideas (LiveStream, Host, Co-host, Viewer, Stream Status, Live Chat, Reaction) and the same REST API. The difference is where the SDK runs:

  • Client SDKs (Web, React, React Native, Flutter) join, watch, broadcast, and react. They never make credentials.
  • Server SDKs (TypeScript, Python, Go, Java, PHP) manage streams and make host and viewer credentials.
  • The CLI manages streams but never makes credentials. Here's why.

A ✓ means the feature is built and tested. Planned features are not ticked.

FeatureWebReactReact NativeFlutterTypeScriptPythonGo / Java / PHPCLI
Create stream— ¹— ¹— ¹— ¹✓✓✓✓
Update / list / get stream— ¹— ¹— ¹— ¹✓✓✓✓
Start / end stream— ¹— ¹— ¹— ¹✓✓✓✓ (end only)
Join as host✓✓✓✓————
Join as viewer✓✓✓✓————
Camera / microphone (host)✓✓✓✓————
Participants / viewer roster✓✓✓✓————
Live chat✓✓✓✓✓ ²✓ ²✓ ²— ³
Reactions✓✓✓✓— ⁴— ⁴— ⁴—
Viewer count (live)— ⁵— ⁵— ⁵— ⁵✓✓✓✓
Add / remove host————✓✓✓— ³
Mint host credential————✓✓✓— ³
Mint viewer credential————✓✓✓— ³

Notes:

  1. Client SDKs join with credentials your backend made. They don't call stream-management endpoints.
  2. On the server, "chat" means admin work: posting a system message or managing members. Reading the live feed is a client job.
  3. Left out on purpose. See below.
  4. No server method to post reactions yet. Reactions are a client action (stream.react(emoji)).
  5. Client SDKs see everyone in the room (room.participants), including hosts. The real viewer-only count is read on the backend with get()/list(), or with the CLI.

Why hosts, viewers, and CLI differ

Client SDKs never make credentials. They join with a LiveStreamCredentials object from your backend. They don't have the API key, so they can't turn a viewer into a host or give anyone broadcast access. (This is also why client SDKs can't make RTC or chat tokens.)

The CLI can manage streams, but not credentials.

  • It logs in with your developer account, like livqeno rooms and livqeno chat.
  • Creating, updating, and ending a stream return no secrets, so they're safe in a terminal.
  • addHost() and createViewerToken() return a real, working credential. In a CLI, it could end up in shell history or a CI log. So these stay in the server SDKs, on your backend. (Same reason there's no CLI for chat token minting or livqeno chat send.)

Every server SDK works the same. livqeno.liveStreams.addHost(), livqeno.live_streams.add_host(), client.LiveStreams.AddHost(), livqeno.liveStreams().addHost() and $client->liveStreams->addHost() are the same operation, just named for each language. See TypeScript SDK, Python SDK, Go SDK, Java SDK and PHP SDK.

Same words everywhere

Every SDK uses the same names: Stream, Host, Co-host, Viewer, Stream Status, Live Chat, Reaction. No SDK calls it "Broadcast" or "LiveSession". A word means the same thing on Flutter and on the CLI.

How it's tested

A ✓ in the table above means there are automated tests behind it. Here's what those tests are:

SDKTests
Web, TypeScript, Python, CLIAutomated test suites (apps/api Jest, packages/server-sdk Jest, sdks/python pytest, packages/cli Jest integration tests).
Go, Java, PHPgo test in sdks/go, mvn verify in sdks/java, PHPUnit in sdks/php: every resource method against a local test server, plus an opt-in integration test against a real API.
React, React NativeJest suites in packages/react-sdk and packages/react-native-sdk, with mocked RTC/chat clients.
Flutter (livqeno_live)Partly. Credential parsing (LivqenoLiveStreamCredentials.fromJson) has unit tests. join, leave and react are not tested yet. livqeno_rtc has the same gap.

Next steps