> 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. # addAdditionalDevice > Adds an additional media input device to the call. ```ts addAdditionalDevice(options): Promise ``` Adds an additional media input device to the call, as a second capture alongside the main connection. The call itself is unaffected when acquisition fails. ## **Parameters** **`options`** `MediaOptions` — required Media constraints for the additional capture. See [`MediaOptions`](/docs/browser-sdk/v4/reference/interfaces/media-options). --- ## **Returns** `Promise` ## **Throws** * [`AuxiliaryLegCancelledError`](/docs/browser-sdk/v4/reference/errors/auxiliary-leg-cancelled-error) — [`removeAdditionalDevice`](/docs/browser-sdk/v4/reference/self-participant/remove-additional-device) removed the device before its leg finished connecting. * [`AuxiliaryLegTimeoutError`](/docs/browser-sdk/v4/reference/errors/auxiliary-leg-timeout-error) — the leg did not connect within its budget. * The raw `getUserMedia` error (e.g. a `NotAllowedError` `DOMException` on permission denial) — inspect `error.name` to decide how to react. ## **Examples** ```ts await selfParticipant.addAdditionalDevice(options); ``` > Adds an additional media input device to the call.