> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# getInputDevices()

> Returns the camera, microphone, and speaker devices currently selected for the call.

`getInputDevices()`

<Badge color="green">{"✓"} Prebuilt</Badge> <Badge color="green">{"✓"} Custom</Badge>

Returns a `Promise<DailyDeviceInfos>` describing the camera, microphone, and speaker devices currently in use for the call. Handy for building your device selector UI or for debugging. To get a list of all available devices (not just the active ones), use [`enumerateDevices()`](/reference/daily-js/instance-methods/enumerate-devices).

If a device has not been specified or has not yet been acquired, its field will be an empty object `{}`. The field will also be empty if a custom track has been provided for that input.

## Return value

Returns a `Promise<DailyDeviceInfos>`:

<ResponseField name="camera" type="DailyMediaDeviceInfo | {}">
  The currently selected camera (video input device). `DailyMediaDeviceInfo` extends the browser [`MediaDeviceInfo`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo) with an optional `facing` field (`'user'` or `'environment'`).
</ResponseField>

<ResponseField name="mic" type="MediaDeviceInfo | {}">
  The currently selected microphone (audio input device). See [`MediaDeviceInfo`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo) for the full shape.
</ResponseField>

<ResponseField name="speaker" type="MediaDeviceInfo | {}">
  The currently selected speaker or audio output device. See [`MediaDeviceInfo`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo) for the full shape.
</ResponseField>

## Example

```javascript theme={null}
const { camera, mic, speaker } = await call.getInputDevices();

console.log('Camera:', camera.label || camera.deviceId);
console.log('Mic:', mic.label || mic.deviceId);
console.log('Speaker:', speaker.label || speaker.deviceId);
```

## See also

<CardGroup>
  <Card title="Methods" icon="code" iconType="solid">
    * [enumerateDevices()](/reference/daily-js/instance-methods/enumerate-devices)
    * [setInputDevicesAsync()](/reference/daily-js/instance-methods/set-input-devices-async)
    * [setOutputDeviceAsync()](/reference/daily-js/instance-methods/set-output-device-async)
    * [updateInputSettings()](/reference/daily-js/instance-methods/update-input-settings)
  </Card>

  <Card title="Events" icon="bolt" iconType="solid">
    * [available-devices-updated](/reference/daily-js/events/settings-events#available-devices-updated)
    * [selected-devices-updated](/reference/daily-js/events/settings-events#selected-devices-updated)
    * [camera-error](/reference/daily-js/events/settings-events#camera-error)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Audio and video](/docs/daily-js/guides/audio-video)
    * [Device permissions](/docs/daily-js/guides/device-permissions)
  </Card>
</CardGroup>
