Join a call session using one of two approaches: the quick start method with a session ID, or the advanced flow with manual token generation for more control.
Overview
The CometChat Calls SDK provides two ways to join a session:
| Approach | Best For | Complexity |
|---|
| Join with Token | Most use cases - recommended approach | Low - Two-step process |
| Generate Token Separately | Custom token management, pre-generation, caching | Medium - Separate token handling |
Both approaches require a container element in your HTML where the call interface will be rendered.
Container Setup
Add a container element to your HTML where the call interface will be rendered:
<div id="call-container" style="width: 100%; height: 100vh;"></div>
The call UI will be dynamically rendered inside this container when you join the session.
Generate Token
Generate a call token for the session. Each token is unique to a specific session and user combination.
const sessionId = "SESSION_ID";
try {
const result = await CometChatCalls.generateToken(sessionId);
console.log("Token generated:", result.token);
// Use the token to join the session
} catch (error) {
console.error("Token generation failed:", error.errorDescription);
}
| Parameter | Type | Description |
|---|
sessionId | String | Unique identifier for the call session |
The method returns an object with:
| Property | Type | Description |
|---|
token | String | The generated call token |
The generateToken() method uses the auth token of the currently logged-in user. Ensure a user is logged in before calling this method.
Join Session
Use the generated token to join the session along with your call settings and container element.
const container = document.getElementById("call-container");
const callSettings = {
sessionType: "VIDEO",
layout: "TILE",
startAudioMuted: false,
startVideoPaused: false,
};
const result = await CometChatCalls.joinSession(callToken, callSettings, container);
if (result.error) {
console.error("Failed to join session:", result.error);
} else {
console.log("Joined session successfully");
}
| Parameter | Type | Description |
|---|
callToken | String | Previously generated call token |
callSettings | Object | Configuration for the session (see Session Settings) |
container | HTMLElement | Container element for the call UI |
The method returns an object with:
| Property | Type | Description |
|---|
data | undefined | Undefined on success |
error | Object | null | Error details if join failed |
Complete Example
const sessionId = "SESSION_ID";
const container = document.getElementById("call-container");
// Step 1: Generate token
try {
const tokenResult = await CometChatCalls.generateToken(sessionId);
// Step 2: Configure session settings
const callSettings = {
sessionType: "VIDEO",
layout: "TILE",
startAudioMuted: false,
startVideoPaused: false,
};
// Step 3: Join session
const joinResult = await CometChatCalls.joinSession(
tokenResult.token,
callSettings,
container
);
if (joinResult.error) {
console.error("Failed to join session:", joinResult.error);
} else {
console.log("Joined session successfully");
}
} catch (error) {
console.error("Error:", error);
}
All participants joining the same call must use the same session ID.
Error Handling
Common errors when joining a session:
| Error Code | Description |
|---|
ERROR_SDK_NOT_INITIALIZED | SDK not initialized - call init() first |
ERROR_AUTH_TOKEN_MISSING | User not logged in or auth token invalid |
ERROR_SESSION_ID_MISSING | Session ID is null or empty |
VALIDATION_ERROR | Invalid call settings |