> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # addDevice > addDevice method for the RoomSession class. ### addDevice * **addDevice**(`opts`): `Promise` - See [RoomSessionDevice documentation](/docs/browser-sdk/v3/js/reference/video/room-session-device) for more details. Adds a device to the room. Using this method, a user can stream multiple sources at the same time. If you need to add a camera device or a microphone device, you can alternatively use the more specific methods [addCamera](/docs/browser-sdk/v3/js/reference/video/room-session/add-camera) and [addMicrophone](/docs/browser-sdk/v3/js/reference/video/room-session/add-microphone). #### Parameters **`opts`** `object` Specify the constraints for the device. In addition, you can add the `autoJoin` key to specify whether the device should immediately join the room or joining will be performed manually later. --- **`audio`** `boolean | MediaTrackConstraints` Audio constraints. --- **`autoJoin`** `boolean` Whether the device should automatically join the room. Default: `true`. --- **`video`** `boolean | MediaTrackConstraints` Video constraints. --- #### Returns `Promise` - See [RoomSessionDevice documentation](/docs/browser-sdk/v3/js/reference/video/room-session-device) for more details. #### Permissions * `room.self.additional_source` You need to specify the permissions when [creating the Video Room Token](/docs/apis/rest/video/room-tokens/create-room-token) on the server side. #### Example Adding any of the microphone devices to the room (duplicate streams are possible): ```javascript await roomSession.addDevice({ audio: true }); ``` > addDevice method for the RoomSession class.