SignalWire Video API allows you to host real-time video calls and conferences on your website. In this guide, well learn to set layouts during video calls. SignalWire video calls are composited at SignalWire servers so that everyone gets the same video feed. This means that **layout changes are reflected instantly in each participant’s video stream**. Each participant sees the same video layout once the layout switch occurs. Requesting the necessary permission -- Changing layouts is a privilege you must explicitly request when asking the SignalWire Video REST API for an access token. The endpoint to request access tokens is described in the [SignalWire Video API reference guide](/rest/signalwire-rest/endpoints/video/create-room-token). In particular, you need to specify room.list_available_layouts and room.set_layout permissions when requesting the token. Ideally, this should happen on the server-side after you verify that the user requesting the access token actually has the privilege to change your video calls layout. In the Node.js/Express.js example below, we are indiscriminately handing out the permissions to anyone who requests a token. This is only to keep the code simple and does not reflect real-world usage. javascript app.post(/get_token, async (req, res) => { let { user_name } = req.body; console.log(Received name, user_name); try { let token = await axios.post( apiurl + /room_tokens, { user_name, room_name: ROOMNAME, permissions: [room.set_layout, room.list_available_layouts] }, { auth } ); console.log(token.data.token); return res.json({ token: token.data.token }); } catch (e) { console.log(e); return res.sendStatus(500); } }); shell CURL curl --request POST \ --url https://demo.signalwire.com/api/video/room_tokens \ --header Accept: application/json \ --header Authorization: Basic bmV2ZXIgZ29ubmEgZ2l2ZTp5b3UgdXA= \ --header Content-Type: application/json \ --data { permissions: [ room.set_layout ], room_name: example_room, user_name: example_user } Changing Layout with the Video JS SDK - To join a room, you first want to instantiate a room session with the access token acquired in the previous section. javascript const roomSession = new SignalWire.Video.RoomSession({ token: