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

# Camera & microphone permissions

> How the browser asks for camera and microphone access, and what to do when it goes wrong

Video needs access to the user's **camera** and **microphone**. These
permissions are granted by the browser, not by ApifyCloud — the rules
are the same across all real-time video products.

## The permission flow

The first time a user opens a meeting on a given browser and origin,
the browser shows a native prompt asking to allow or block camera and
microphone access.

* If the user clicks **Allow**, the choice is remembered per origin
  and future visits don't re-prompt.
* If the user clicks **Block**, the choice is also remembered. The
  site **cannot** programmatically re-prompt — the user has to
  change the decision from the browser's site settings.
* If the user closes the prompt without choosing, the browser treats
  it as a denial for this session but will prompt again next time.

## HTTPS is required

Browsers only allow camera and microphone access on pages served
over HTTPS. If the page that embeds the meeting is served over plain
HTTP, the browser refuses access regardless of what the user
chooses.

## Embedding — iframe `allow`

When the meeting is embedded as an `<iframe>`, the iframe must
explicitly declare the features it needs:

```html theme={null}
<iframe
  src="https://video.apifycloud.io/c/{callId}"
  allow="camera; microphone; autoplay; display-capture"
  allowfullscreen
></iframe>
```

Missing `camera` or `microphone` on the `allow` attribute silently
blocks the request from the iframe even if the top page would
otherwise have access.

If the `<iframe>` is itself **nested** inside another iframe, each
layer of the chain has to delegate the permission.

## Operating-system layer

On top of the browser permission, some operating systems have their
own gate:

* **macOS** — System Settings → Privacy & Security → Camera /
  Microphone. The browser must be toggled on.
* **Windows 10 / 11** — Settings → Privacy → Camera / Microphone.
* **iOS** — Settings → \[Browser name] → Camera / Microphone.
* **Android** — Settings → Apps → \[Browser] → Permissions.

If the OS gate is closed, the browser will ask for permission but no
device shows up when the user allows it.

## Selecting a different device

The pre-join preview and the in-meeting settings let users switch
between available cameras, microphones, and speakers. The browser
surfaces whichever devices the OS reports as connected.

If a user reports "my external camera isn't listed", check:

* The device is plugged in and recognised by the OS (visible in
  another app).
* No other application is holding an **exclusive lock** on the
  device (common with some Zoom / Teams native clients on
  Windows).
* The browser has permission to see the device (some systems list
  cameras per browser).

## What happens when permission is denied

The meeting UI can still render with camera and microphone **off**.
The user can join "audio only" or "no media" as long as the preset
allows it, but they will not be seen or heard until the permission
is restored.

To restore permission:

* **Chrome / Edge** — click the lock icon in the address bar → Site
  settings → reset Camera / Microphone.
* **Firefox** — click the lock icon → Connection secure → More
  information → Permissions.
* **Safari** — Settings for this website → Camera / Microphone.

## What's next

<CardGroup cols={2}>
  <Card title="Network requirements" href="/guides/video/network-requirements">
    Connectivity the meeting needs.
  </Card>

  <Card title="Troubleshooting" href="/guides/video/troubleshooting">
    Specific fixes when camera or microphone won't work.
  </Card>
</CardGroup>
