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.
| Feature | Web | React | React Native | Flutter | TypeScript | Python | Go / Java / PHP | CLI |
|---|---|---|---|---|---|---|---|---|
| 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:
- Client SDKs join with credentials your backend made. They don't call stream-management endpoints.
- On the server, "chat" means admin work: posting a system message or managing members. Reading the live feed is a client job.
- Left out on purpose. See below.
- No server method to post reactions yet. Reactions are a client action
(
stream.react(emoji)). - Client SDKs see everyone in the room (
room.participants), including hosts. The real viewer-only count is read on the backend withget()/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 roomsandlivqeno chat. - Creating, updating, and ending a stream return no secrets, so they're safe in a terminal.
addHost()andcreateViewerToken()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 orlivqeno 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:
| SDK | Tests |
|---|---|
| Web, TypeScript, Python, CLI | Automated test suites (apps/api Jest, packages/server-sdk Jest, sdks/python pytest, packages/cli Jest integration tests). |
| Go, Java, PHP | go 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 Native | Jest 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
- Quickstart: try the full flow on your platform.
- TypeScript, Python, Go, Java and PHP SDKs: the server side.
- Install an SDK: package names for every platform.