*** id: 63d18fa7-7710-4608-a2c5-e47705997768 title: startRecording slug: /node/reference/video/room-session/start-recording description: startRecording method for the RoomSession class. max-toc-depth: 3 ---------------- [roomsession-41]: /docs/server-sdk/v4/node/reference/video/room-session [roomsessionrecording-12]: /docs/server-sdk/v4/node/reference/video/room-session-recording [roomsessionrecording-4]: /docs/server-sdk/v4/node/reference/video/room-session-recording [video-roomsessionrecording]: /docs/server-sdk/v4/node/reference/video/room-session-recording#events ### startRecording * **startRecording**(): `Promise`\<[`RoomSessionRecording`][roomsessionrecording-12]> Starts the recording of the room. You can use the returned [RoomSessionRecording][roomsessionrecording-4] object to control the recording (e.g., pause, resume, stop). #### Parameters Object containing the parameters of the method. Object of event listeners. See [`RoomSessionRecording Events`][video-roomsessionrecording] for a list of valid events. #### Returns `Promise`\<[`RoomSessionRecording`][roomsessionrecording-12]> A promise that resolves to a [`RoomSessionRecording`][roomsessionrecording-12] object. #### Example In this example, we wait for a room to start and then start a recording in that room. We then stop the recording after 5 seconds. This example assumes that there is a [`RoomSession`][roomsession-41] already active and that members are joining the room. ```javascript import { SignalWire } from "@signalwire/realtime-api"; // Initialize the SignalWire client const client = await SignalWire({ project: "ProjectID Here", token: "Token Here" }); // Access video client from the main client const videoClient = client.video; // Setup listener for when a room starts await videoClient.listen({ onRoomStarted: async (roomSession) => { console.log("Room started", roomSession.displayName); let roomRecording = roomSession.startRecording({ listen: { onStarted: () => { console.log("Recording started"); }, onUpdated: (recording) => { console.log("Recording updated", recording.state); }, onEnded: (recording) => { console.log(`Recording ended. Recording State: ${recording.state}. Recording Id: ${recording.id}`); }, } }) setTimeout( () => { roomRecording.stop(); }, 5000); // Setup listener for when a member joins await roomSession.listen({ onMemberJoined: async (member) => { console.log("Member joined", member.name); }, onMemberLeft: (member) => { console.log("Member left", member.name); }, }); }, onRoomEnded: async (roomSession) => { console.log("Room ended", roomSession.displayName); } }); ```