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

# MfaWebAuthnPlatformChallenge

```ts Example theme={null}
import MfaWebAuthnPlatformChallenge from "@auth0/auth0-acul-js/mfa-webauthn-platform-challenge";

const mfaWebAuthnPlatformChallengeManager = new MfaWebAuthnPlatformChallenge();
```

## Constructors

<ParamField body="MfaWebAuthnPlatformChallenge" type="Constructor">
  Initializes a new instance of the `MfaWebAuthnPlatformChallenge` class.
  It retrieves the necessary context (screen, transaction, etc.) from the global `universal_login_context`.

  #### Throws

  If the Universal Login Context is not available or if the screen name
  in the context does not match `MfaWebAuthnPlatformChallenge.screenIdentifier`.
</ParamField>

## Properties

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ScreenMembersOnMfaWebAuthnPlatformChallenge">ScreenMembersOnMfaWebAuthnPlatformChallenge</a></span>} />

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TransactionMembers">TransactionMembers</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UserMembers">UserMembers</a></span>} />

<ParamField body="screenIdentifier" type="string">
  static
</ParamField>

## Methods

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  Retrieves the array of transaction errors from the context, or an empty array if none exist.

  An array of error objects from the transaction context.
</ParamField>

<ParamField body="reportBrowserError" type="Promise<void>">
  Reports a browser-side error encountered during the WebAuthn `navigator.credentials.get()` operation.
  This method should be called when `verify()` fails due to a WebAuthn API error (e.g., user cancellation).
  It sends the error details to the server with a specific action format.

  A promise that resolves when the error report is successfully submitted.

  #### Throws

  Throws an error if the form submission fails (e.g., network issue, invalid state).

  <Expandable title="Parameters">
    <ParamField body="options" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/MfaWebAuthnPlatformChallengeReportErrorOptions">MfaWebAuthnPlatformChallengeReportErrorOptions</a></span>}>
      Contains the `error` object (with `name` and `message`
      properties from the browser's WebAuthn API DOMException) and any other custom options.
      The `error` object will be JSON stringified and embedded in the `action` parameter.

      **Properties**

      <ParamField body="error" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/WebAuthnErrorDetails">WebAuthnErrorDetails</a></span>}>
        The error object from the WebAuthn API (`navigator.credentials.get()`) to be reported.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="tryAnotherMethod" type="Promise<void>">
  Allows the user to opt-out of the WebAuthn platform challenge and select a different MFA method.
  This action submits `action: "pick-authenticator"` to Auth0, which should navigate
  the user to an MFA factor selection screen.

  A promise that resolves when the 'pick-authenticator' action is submitted.

  #### Throws

  Throws an error if the form submission fails (e.g., network error, invalid state).

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/MfaWebAuthnPlatformChallengeTryAnotherMethodOptions">MfaWebAuthnPlatformChallengeTryAnotherMethodOptions</a></span>}>
      Optional. Any custom parameters to be sent with the request.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="verify" type="Promise<void>">
  Initiates the WebAuthn platform authenticator challenge.
  Internally, this method retrieves the challenge options from `this.screen.publicKey`,
  calls `navigator.credentials.get()` (via the `getPasskeyCredentials` utility),
  and then submits the resulting credential assertion to the Auth0 server.

  A promise that resolves when the credential submission is initiated.
  A successful operation typically results in a server-side redirect.

  #### Throws

  Throws an error if `this.screen.publicKey` is not available (indicating missing challenge options),
  if `getPasskeyCredentials` (and thus `navigator.credentials.get()`) fails (e.g., user cancellation,
  no authenticator found, hardware error), or if the final form submission to Auth0 fails.
  It's crucial to catch errors from this method. WebAuthn API errors (like `NotAllowedError`)
  should ideally be reported using `this.reportBrowserError()`.

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/VerifyPlatformAuthenticatorOptions">VerifyPlatformAuthenticatorOptions</a></span>}>
      **Properties**

      <ParamField body="rememberDevice?" type="boolean" />
    </ParamField>
  </Expandable>
</ParamField>
