> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# OverconstrainedFallbackError

> Error thrown when getUserMedia fails with OverconstrainedError and all fallback levels have been exhausted.

Raised by the device controller when `getUserMedia` rejects with `OverconstrainedError` and the SDK's built-in fallback ladder — progressively relaxing the requested constraints — has been exhausted without finding a working set. The `deviceKind` property indicates whether the failure was on audio or video capture.

## **Extends**

* `Error`

## **Constructors**

### Constructor

```ts
new OverconstrainedFallbackError(deviceKind, originalError?): OverconstrainedFallbackError
```

### Parameters

Device kind whose constraints could not be satisfied (`audio` or `video`).

Final `OverconstrainedError` returned after all fallback levels were exhausted.

## **Properties**

Device kind whose constraints could not be satisfied (`audio` or `video`).

Final `OverconstrainedError` returned after all fallback levels were exhausted.

## **Examples**

```ts
import { OverconstrainedFallbackError } from '@signalwire/js';

try {
  await client.enableVideoInput();
} catch (err) {
  if (err instanceof OverconstrainedFallbackError) {
    console.error(`no working ${err.deviceKind} device available:`, err.originalError);
    showPickerWithoutConstraints();
  }
}
```