Client Integration
Relay only mints tokens — the realtime media path is pure LiveKit. Join rooms with the standard LiveKit client SDKs by pointing them at the { token, url } Relay returns. No proprietary client, no lock-in.
Whatever platform you ship on, the pattern is the same: your server calls POST /v1/tokens, hands the resulting token and url to the client, and the client connects with the official LiveKit SDK.
JavaScript / React
Use livekit-client directly, or @livekit/components-react for prebuilt React components and hooks.
import { Room } from "livekit-client";
const room = new Room();
await room.connect(url, token); // { token, url } from Relay
await room.localParticipant.enableCameraAndMicrophone();Reference: LiveKit JavaScript SDK.
Flutter
Add the livekit_client package and connect:
final room = Room();
await room.connect(url, token); // { token, url } from RelayReference: LiveKit Flutter SDK.
Swift (iOS)
Add the LiveKitClient Swift package and connect:
let room = Room()
try await room.connect(url: url, token: token) // { token, url } from RelayReference: LiveKit Swift SDK.
Kotlin (Android)
Add the livekit-android dependency and connect:
val room = LiveKit.create(appContext = applicationContext)
room.connect(url, token) // { token, url } from RelayReference: LiveKit Android SDK.
Full SDK reference
Relay's tokens work with every LiveKit client SDK. For the complete client reference, see docs.livekit.io.