Sessions
A session is one live occupancy of a room, from the first join to the end. A room has many sessions over time. Use the sessions resource for both live and past sessions.
For a room's current participants, participants resolves the active session automatically.
List sessions
- Node.js
- Go
- Rust
const sessions = await client.sessions.list({ roomId, status: "ended" });
for await (const session of sessions) {
console.log(session.id, session.start, session.end);
}
for session, err := range client.Sessions.ListAutoPaging(ctx, videosdk.SessionListParams{
RoomID: videosdk.String(roomID),
Status: videosdk.Ptr(videosdk.SessionEnded),
}) {
if err != nil {
return err
}
fmt.Println(session.ID, session.Start, session.End)
}
use futures_util::StreamExt;
let mut sessions = Box::pin(client.sessions().list_stream(videosdk::SessionListParams {
room_id: Some(room_id.clone()),
status: Some(videosdk::SessionStatus::ENDED),
..Default::default()
}));
while let Some(session) = sessions.next().await {
let session = session?;
println!("{} {} {:?}", session.id, session.start, session.end);
}
Filters: query, roomId, customRoomId, userId, startDate / endDate (epoch ms), status (ongoing or ended), plus pagination.
Get a session
- Node.js
- Go
- Rust
const session = await client.sessions.get("session_abc123");
session, err := client.Sessions.Get(ctx, "session_abc123")
let session = client.sessions().get("session_abc123").await?;
List participants
Includes participants who have already left. Use listActiveParticipants / ListActiveParticipants to return only those currently connected, or getParticipant / GetParticipant to fetch a single participant.
- Node.js
- Go
- Rust
const participants = await client.sessions.listParticipants("session_abc123");
participants, err := client.Sessions.ListParticipants(ctx, "session_abc123", videosdk.ListParams{})
let participants = client
.sessions()
.list_participants("session_abc123", videosdk::ListParams::default())
.await?;
End a session
Requires roomId or meetingId.
- Node.js
- Go
- Rust
await client.sessions.end({ roomId, force: true });
session, err := client.Sessions.End(ctx, videosdk.SessionEndParams{
RoomID: videosdk.String(roomID),
Force: videosdk.Bool(true),
})
client.sessions().end(videosdk::SessionEndParams {
room_id: Some(room_id.clone()),
force: Some(true),
..Default::default()
}).await?;
Options: roomId / meetingId (one required), sessionId, force, ignoreClosed.
Remove a participant
Requires roomId or sessionId.
- Node.js
- Go
- Rust
await client.sessions.removeParticipant({ participantId: "participant-alice", roomId });
msg, err := client.Sessions.RemoveParticipant(ctx, videosdk.SessionRemoveParticipantParams{
ParticipantID: "participant-alice",
RoomID: videosdk.String(roomID),
})
client.sessions().remove_participant(videosdk::SessionRemoveParticipantParams {
participant_id: "participant-alice".into(),
room_id: Some(room_id.clone()),
..Default::default()
}).await?;
Statistics
Returns quality-of-service statistics for a session or a single participant.
- Node.js
- Go
- Rust
await client.sessions.getStats("session_abc123");
await client.sessions.getParticipantStats("session_abc123", "participant-alice");
client.Sessions.GetStats(ctx, "session_abc123")
client.Sessions.GetParticipantStats(ctx, "session_abc123", "participant-alice")
client.sessions().get_stats("session_abc123").await?;
client.sessions().get_participant_stats("session_abc123", "participant-alice").await?;
The Session object
Returned by sessions.get and sessions.end, and as the items of a sessions.list page.
| Field | Type | Description |
|---|---|---|
id | string | Unique session id. |
roomId | string | Room this session belongs to. |
customRoomId | string | Your room id, if set. |
start | string | ISO-8601 start time. |
end | string | ISO-8601 end time, null while ongoing. |
status | string | ongoing or ended. |
region | string | Region the session ran in. |
participants | object[] | Where embedded, each is a Participant. |
Got a Question? Ask us on discord

