Approve a support-requested MFA reset (single-use emailed token)
const url = 'https://api.tovarifinancial.com/auth/mfa-reset/confirm';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"token":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.tovarifinancial.com/auth/mfa-reset/confirm \ --header 'Content-Type: application/json' \ --data '{ "token": "example" }'KAN-3004. The member approves, from the link in their verified email, a reset Tovari support requested. The 43-character base64url token IS the credential (single use, 30 minutes). On success the member’s authenticator-app MFA is removed and they are emailed to set it up again. Its idempotency is STRUCTURAL, on the reset request row rather than the shared store: a replay carrying the same X-Idempotency-Key header as the successful approval returns the same 200, and a member who is no longer eligible (inactive, unverified, SSO-linked, or whose address changed) is refused 403 MFA_NOT_ELIGIBLE with nothing changed. No response names the member, the household or the address.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Examplegenerated
{ "token": "example"}Responses
Section titled “Responses”MFA removed
object
object
Example
{ "data": { "mfaRemoved": true }}MFA_RESET_TOKEN_INVALID — the token is malformed or unknown; or VALIDATION_ERROR for a blank/oversized idempotency key
object
Machine-readable error code (AUTH_ERROR_CODES).
Optional field-level validation errors, keyed by field name.
object
Example
{ "errorCode": "INVALID_EMAIL_FORMAT"}MFA_RESET_ALREADY_USED — the token was already consumed by a different (or no) idempotency key; IDEMPOTENCY_CONFLICT — the same key is still being processed
object
Machine-readable error code (AUTH_ERROR_CODES).
Optional field-level validation errors, keyed by field name.
object
Example
{ "errorCode": "INVALID_EMAIL_FORMAT"}MFA_RESET_EXPIRED or MFA_RESET_CANCELLED — the link can no longer be used
object
Machine-readable error code (AUTH_ERROR_CODES).
Optional field-level validation errors, keyed by field name.
object
Example
{ "errorCode": "INVALID_EMAIL_FORMAT"}Internal error (no internal detail leaked)
object
Machine-readable error code (AUTH_ERROR_CODES).
Optional field-level validation errors, keyed by field name.
object
Example
{ "errorCode": "INVALID_EMAIL_FORMAT"}Service temporarily unavailable — errorCode is SERVICE_UNAVAILABLE. A TRANSIENT, RETRYABLE condition rather than a defect in the request: a query that exceeded its time budget, a lost or refused database connection, a saturated connection pool, or an outage at an upstream provider the request depends on (the authentication provider, or the bank data provider on a bank-connection operation). The identical request may succeed on retry — back off briefly and, on a write, resend the same X-Idempotency-Key where the operation accepts one.
object
Machine-readable error code (AUTH_ERROR_CODES).
Optional field-level validation errors, keyed by field name.
object
Example
{ "errorCode": "INVALID_EMAIL_FORMAT"}