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

# MfaWebAuthnPlatformChallengeMembers

MfaWebAuthnPlatformChallengeMembers

````ts Example theme={null}
export interface MfaWebAuthnPlatformChallengeMembers extends BaseMembers {
  /**
   * Screen-specific properties and data, including WebAuthn challenge options and remember device preference.
   * @type {ScreenMembersOnMfaWebAuthnPlatformChallenge}
   */
  screen: ScreenMembersOnMfaWebAuthnPlatformChallenge;

  /**
   * Initiates the WebAuthn platform authenticator challenge.
   * This method internally calls `navigator.credentials.get()` using the challenge options
   * provided in `screen.publicKey`.
   * If successful, it submits the resulting credential to Auth0 with `action: "default"`.
   *
   * If `navigator.credentials.get()` fails (e.g., user cancellation, timeout, or other WebAuthn API errors),
   * it's recommended to call `reportBrowserError` with the error details.
   *
   * @param {VerifyPlatformAuthenticatorOptions} [options] - Optional parameters for the verification process,
   * such as `rememberDevice` (if `screen.showRememberDevice` is true) and other custom options.
   * @returns {Promise<void>} A promise that resolves when the verification attempt is submitted.
   *                          A successful operation typically results in a redirect.
   * @throws {Error} Throws an error if `screen.publicKey` is missing,
   *                 if `navigator.credentials.get()` fails with an unexpected error not handled by `getPasskeyCredentials`,
   *                 or if the form submission to Auth0 fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * try {
   *   const remember = sdk.screen.showRememberDevice && userCheckedRememberDeviceBox;
   *   await sdk.verify({ rememberDevice: remember });
   *   // On success, Auth0 handles redirection.
   * } catch (error) {
   *   console.error("Platform authenticator verification failed:", error);
   *   // If it's a WebAuthn API error, report it
   *   if (error.name && error.message) { // Basic check for DOMException like error
   *     await sdk.reportBrowserError({ error: { name: error.name, message: error.message } });
   *   }
   *   // Check sdk.transaction.errors for server-side validation messages if the page reloads.
   * }
   * ```
   */
  verify(options?: VerifyPlatformAuthenticatorOptions): Promise<void>;

  /**
   * Reports a specific WebAuthn API error (from `navigator.credentials.get()`) to Auth0.
   * This method should be used when `verify()` (or a manual `navigator.credentials.get()` call) fails due to
   * a browser-side WebAuthn issue (e.g., user cancellation `NotAllowedError`, timeout).
   * It submits the error details with `action: "showError::{errorDetailsJsonString}"` and an empty `response`.
   *
   * @param {ReportBrowserErrorOptions} options - Contains the `error` object (with `name` and `message`
   * from the WebAuthn API DOMException) and any other custom options.
   * @returns {Promise<void>} A promise that resolves when the error report is submitted.
   * @throws {Error} Throws an error if the form submission fails (e.g., network error, invalid state).
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * // And webAuthnDomException is an error object from a failed navigator.credentials.get() call.
   * try {
   *   await sdk.reportBrowserError({
   *     error: { name: webAuthnDomException.name, message: webAuthnDomException.message }
   *   });
   *   // Auth0 will process this error and may re-render the page or redirect.
   * } catch (submitError) {
   *   console.error("Failed to report WebAuthn browser error:", submitError);
   * }
   * ```
   */
  reportBrowserError(options: ReportBrowserErrorOptions): 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.
   *
   * @param {TryAnotherMethodOptions} [options] - Optional custom parameters to be sent with the request.
   * @returns {Promise<void>} A promise that resolves when the 'pick-authenticator' action is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
   * try {
   *   await sdk.tryAnotherMethod();
   *   // On success, Auth0 handles redirection to MFA selection.
   * } catch (error) {
   *   console.error("Failed to switch MFA method:", error);
   * }
   * ```
   */
  tryAnotherMethod(options?: TryAnotherMethodOptions): Promise<void>;
}
````

## 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>}>
  Screen-specific properties and data, including WebAuthn challenge options and remember device preference.
</ParamField>

<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>} />

## Methods

<ParamField body="reportBrowserError" type="Promise<void>">
  Reports a specific WebAuthn API error (from `navigator.credentials.get()`) to Auth0.
  This method should be used when `verify()` (or a manual `navigator.credentials.get()` call) fails due to
  a browser-side WebAuthn issue (e.g., user cancellation `NotAllowedError`, timeout).
  It submits the error details with `action: "showError::{errorDetailsJsonString}"` and an empty `response`.

  A promise that resolves when the error report is submitted.

  #### Throws

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

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
  // And webAuthnDomException is an error object from a failed navigator.credentials.get() call.
  try {
    await sdk.reportBrowserError({
      error: { name: webAuthnDomException.name, message: webAuthnDomException.message }
    });
    // Auth0 will process this error and may re-render the page or redirect.
  } catch (submitError) {
    console.error("Failed to report WebAuthn browser error:", submitError);
  }
  ```

  <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`
      from the WebAuthn API DOMException) and any other custom options.

      **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.

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
  try {
    await sdk.tryAnotherMethod();
    // On success, Auth0 handles redirection to MFA selection.
  } catch (error) {
    console.error("Failed to switch MFA method:", error);
  }
  ```

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

<ParamField body="verify" type="Promise<void>">
  Initiates the WebAuthn platform authenticator challenge.
  This method internally calls `navigator.credentials.get()` using the challenge options
  provided in `screen.publicKey`.
  If successful, it submits the resulting credential to Auth0 with `action: "default"`.

  If `navigator.credentials.get()` fails (e.g., user cancellation, timeout, or other WebAuthn API errors),
  it's recommended to call `reportBrowserError` with the error details.

  A promise that resolves when the verification attempt is submitted.
  A successful operation typically results in a redirect.

  #### Throws

  Throws an error if `screen.publicKey` is missing,
  if `navigator.credentials.get()` fails with an unexpected error not handled by `getPasskeyCredentials`,
  or if the form submission to Auth0 fails.

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnPlatformChallenge
  try {
    const remember = sdk.screen.showRememberDevice && userCheckedRememberDeviceBox;
    await sdk.verify({ rememberDevice: remember });
    // On success, Auth0 handles redirection.
  } catch (error) {
    console.error("Platform authenticator verification failed:", error);
    // If it's a WebAuthn API error, report it
    if (error.name && error.message) { // Basic check for DOMException like error
      await sdk.reportBrowserError({ error: { name: error.name, message: error.message } });
    }
    // Check sdk.transaction.errors for server-side validation messages if the page reloads.
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/VerifyPlatformAuthenticatorOptions">VerifyPlatformAuthenticatorOptions</a></span>}>
      Optional parameters for the verification process,
      such as `rememberDevice` (if `screen.showRememberDevice` is true) and other custom options.

      **Properties**

      <ParamField body="rememberDevice?" type="boolean">
        Optional. If true, attempts to remember the browser for future MFA challenges.
        Corresponds to the `rememberBrowser` form field. This is only applicable if `screen.showRememberDevice` is true.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>
