Skip to main content
On Headless Web SDK, microphone start failures come back as StartSessionFailed or ResumeSessionFailed with reason AudioRecorderFailure. That covers failed mic access or start, including when an exact deviceId is unavailable. It is not a top-level error code on its own. On Mobile SDK, related cases are needMicrophonePermissionRecording, micIsInUse, appIsNotActive, and unableToStartRecording.

Common causes

  • The browser blocked microphone permission for your origin.
  • You passed an exact deviceId that is missing or disconnected. Headless Web SDK does not fall back to the browser default in that case.
  • Microphone access needs HTTPS in production (Headless Web SDK prerequisites).
  • On Mobile SDK, mic permission was not granted, another app holds the mic, or the app is in the background.

Fix (Headless Web SDK)

1

Confirm Permission and HTTPS

Prompt for microphone permission and confirm the site is allowed. In production, request microphone access over HTTPS. If your app is embedded in an iframe, add allow="microphone; clipboard-write" on that iframe.
2

Inspect StartSessionFailed or ResumeSessionFailed

On Platform Client, check code: "StartSessionFailed" or code: "ResumeSessionFailed" with reason: "AudioRecorderFailure", plus cause for the underlying getUserMedia error. In React useAmbientSession, start or resume often rethrows a string from error.toString() that includes those Code and Reason values.
3

Refresh deviceId and Retry

If you pass config.audio.deviceId (or { audio: { deviceId } } on Platform Client), refresh your device list, ask the user to pick another mic, then retry. Optional deviceId needs Headless Web SDK v0.3.1 or later. Omitting deviceId uses the browser default microphone.
4

Pause Before Switching Mics

Changing deviceId while recording does not switch the mic already in use. Call pause(), then resume(), after you update the device. There is no public switchMicrophone API.
When deviceId is set, capture uses getUserMedia with that exact device. Your app owns device enumeration and picker UI. The Headless Web SDK does not list microphones for you.

Fix (Mobile SDK)

Next steps

micIsInUse on Mobile SDK - Free the device microphone AppIsNotActive on Mobile SDK - Recording while backgrounded Manage ambient session - deviceId, start, pause, and resume Audio capture best practices - Capture format before Partner WebSocket streaming sessionAlreadyExists - Remote ambient session conflicts on create
Last modified on September 29, 2026