Quickstart
This guide walks you through registering a tenant, minting a token, creating a room, and joining it — from zero to a working audio call.
Prerequisites
- The platform running locally (
make up) or a hosted deployment - Node.js 18+ (for the SDK)
- An API key (obtained via tenant registration)
1. Register and Obtain an API Key
# Register a new tenant
curl -s -X POST http://localhost:8080/v1/auth/register \
-H 'Content-Type: application/json' \
-d '{
"email": "admin@example.com",
"password": "securepassword",
"tenant_name": "My App"
}'
The response includes your api_key. Save it — this authenticates your server-side SDK.
2. Install the Server SDK
npm install @comm-baas/server-sdk
3. Mint a Token for an End User
import { CommBaasServer } from '@comm-baas/server-sdk';
const server = new CommBaasServer({
apiKey: process.env.COMM_BAAS_API_KEY!,
baseUrl: 'http://localhost:8080',
});
// Mint a short-lived JWT for an end user
const { access_token } = await server.auth.mintToken({
user_id: 'usr_001',
display_name: 'Alice',
});
console.log('Token:', access_token);
4. Create a Room
const room = await server.rooms.create({
display_name: 'Team Standup',
max_participants: 10,
});
console.log('Room ID:', room.id);
5. Join the Room from the Browser
Install the client SDK:
npm install @comm-baas/client-sdk livekit-client
Connect and join:
import { CommBaasClient, SignalingConnection } from '@comm-baas/client-sdk';
const client = new CommBaasClient({
baseUrl: 'http://localhost:8080/v1',
token: accessToken, // JWT from step 3
});
// Join via REST
const http = client.getHttpClient();
const join = await http.post(`/rooms/${roomId}/join`);
// Connect signaling WebSocket
const signaling = new SignalingConnection(
join.signal_url,
join.signal_ticket,
);
signaling.on('hello', (msg) => {
console.log('Connected! Session:', msg.session_id);
});
signaling.on('roster_snapshot', (msg) => {
console.log('Participants:', msg.participants);
});
signaling.connect();
6. Use React Hooks (Optional)
For React applications, use the @comm-baas/react package:
npm install @comm-baas/react @comm-baas/client-sdk livekit-client
import {
CommBaasProvider,
RoomProvider,
useParticipants,
useLocalMic,
AudioRenderer,
} from '@comm-baas/react';
function App() {
return (
<CommBaasProvider
baseUrl="http://localhost:8080/v1"
token={async () => { /* fetch token from your backend */ }}
>
<RoomProvider roomId="room_abc">
<Room />
</RoomProvider>
</CommBaasProvider>
);
}
function Room() {
const participants = useParticipants();
const { isMuted, toggle } = useLocalMic();
return (
<div>
<h2>Participants ({participants.length})</h2>
<ul>
{participants.map((p) => (
<li key={p.user_id}>{p.display_name}</li>
))}
</ul>
<button onClick={toggle}>
{isMuted ? 'Unmute' : 'Mute'}
</button>
<AudioRenderer />
</div>
);
}
Next Steps
- Architecture Overview — Understand the full system design.
- Server SDK Reference — All server-side API methods.
- Client SDK Reference — Browser SDK with signaling details.
- Events — Subscribe to room, presence, and moderation events.