Composite recording
A server-side composed mix of selected participants, with optional watermarks. The mix is defined by the participants you select. To stop the recording, pass the value returned by start to stop.
- Node.js
- Go
const rec = await client.recordings.composite.start(roomId, {
participants: [{ participantId: "participant-alice", kind: ["audio", "video"] }],
watermarks: [{ type: "custom", imageUrl: "https://example.com/logo.png", text: "CONFIDENTIAL" }],
});
await client.recordings.composite.stop(rec);
rec, err := client.Recordings.Composite.Start(ctx, roomID, videosdk.CompositeRecordingStartParams{
Participants: []videosdk.CompositeParticipantSelector{
{ParticipantID: "participant-alice", Kind: []videosdk.TrackKind{videosdk.TrackKindAudio, videosdk.TrackKindVideo}},
},
Watermarks: []videosdk.CompositeWatermark{
{Type: "custom", ImageURL: "https://example.com/logo.png", Text: "CONFIDENTIAL"},
},
})
client.Recordings.Composite.Stop(ctx, rec)
Manage recordings
List, fetch, and delete composite recordings:
- Node.js
- Go
await client.recordings.composite.list({ roomId });
await client.recordings.composite.get(recordingId);
await client.recordings.composite.delete(recordingId);
client.Recordings.Composite.List(ctx, videosdk.CompositeRecordingListParams{RoomID: videosdk.String(roomID)})
client.Recordings.Composite.Get(ctx, recordingID)
client.Recordings.Composite.Delete(ctx, recordingID)
The recording object
recordings.composite.list and get return this object.
| Field | Type | Description |
|---|---|---|
id | string | Composite recording id. |
roomId | string | Room this recording belongs to. |
sessionId | string | Session this recording belongs to. |
participants | object[] | Participants included in the composite. |
fileFormat | string | Output file format. |
file | object | Output file (contains fileUrl). |
start | string | Start time (ISO-8601). |
end | string | End time, null while still recording. |
Got a Question? Ask us on discord

