B2B Saas Authentication

/

Mobile SDKs

/

React Native SDK reference

/

Multi-factor Authentication

/

Recovery Codes

/

Recovery Codes Recover

Recovery Codes Recover

The Recovery Codes Recover method wraps the Recovery Codes Recover API endpoint. It takes a single recovery_code parameter, which is a recovery code that was previously generated for the Member. Calling the recover endpoint will consume the recovery code and authenticate the Member, minting a new session for them.

Currently, recovery codes are only generated when a Member enrolls in TOTP as their secondary MFA factor, and as such authenticate members in place of a stytch.totps.authenticate().

If neither a Member Session nor an intermediate session token is present, this method will fail.

If this method succeeds, the Member will be logged in, granted an active session, and the session data will be persisted on device.

You can listen for successful login events anywhere in the codebase with the stytch.session.onChange() method or useStytchMemberSession hook.


Method parameters


recovery_code*string

Response fields


request_idstring

status_codeint

member_idstring

organization_idstring

session_jwtstring

session_tokenstring

member_sessionobject

memberobject

organizationobject

recovery_codes_remaininginteger
import React, { useCallback, useState } from 'react';
import { Text, TextInput, TouchableOpacity, View } from 'react-native';
import { useStytchB2BClient } from '@stytch/react-native/b2b';

export const Recover = () => {
  const stytch = useStytchB2BClient();
  const [recoveryCode, setRecoveryCode] = useState('');

  const recover = useCallback(() => {
    stytch.recoveryCodes.recover({
      recovery_code: recoveryCode,
      member_id: 'member-test-32fc5024-9c09-4da3-bd2e-c9ce4da9375f',
      organization_id: 'organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931',
      session_duration_minutes: 60,
    });
  }, [stytch, recoveryCode]);

  const handleChange = useCallback((text) => {
    setRecoveryCode(text);
  }, []);

  return (
    <View>
      <Text>Enter code</Text>
      <TextInput value={recoveryCode} onChangeText={handleChange} autoComplete="off" />
      <TouchableOpacity onPress={recover}>
        <Text>Submit</Text>
      </TouchableOpacity>
    </View>
  );
};

RESPONSE

200
{
  "status_code": 200,
  "request_id": "request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141",
  "member_id": "member-test-32fc5024-9c09-4da3-bd2e-c9ce4da9375f",
  "organization_id": "organization-test-07971b06-ac8b-4cdb-9c15-63b17e653931",
  "session_jwt": "example_jwt",
  "session_token": "mZAYn5aLEqKUlZ_Ad9U_fWr38GaAQ1oFAhT8ds245v7Q",
  "member_session": {...},
  "member": {...},
  "organization": {...},
  "recovery_codes_remaining": 9
}