Finish signing in with a second factor
/v1/auth/login/mfaAfter a 202 from `POST /v1/auth/login`: send the challenge token with a code from the authenticator app, a recovery code, or a passkey's response (start it with `POST /v1/auth/login/mfa/passkey`). Each sign-in allows 5 attempts within 5 minutes; each code works once.
Request body application/json · required
challenge_tokenstringrequiredFrom the 202 response of POST /v1/auth/login
max length 256codestringA code from the authenticator app
max length 16passkeyobjectceremony_tokenstringrequiredFrom POST /v1/auth/login/mfa/passkey when signing in, or POST /v1/auth/passkeys/verification when signed in
max length 256credentialobjectrequiredThe PublicKeyCredential from navigator.credentials.get(), as JSON
recovery_codestringA recovery code, instead of code
max length 32transportstringcookie (browsers): an HttpOnly session cookie; bearer (native apps): the token in the response
one of "cookie", "bearer" · default "cookie"Responses
mfaobjectchallenge_tokenstringrequiredSend it to POST /v1/auth/login/mfa. It is shown once.
expires_atstring (date-time)requiredmethodsarray of stringrequiredSecond factors accepted: totp (a code from the authenticator app), passkey or recovery_code
sessionobjectcreated_atstring (date-time)requiredcurrentbooleanrequiredThe session making this request
expires_atstring (date-time)requiredWhen the session ends unless used again
idstringrequiredipstringlast_seen_atstring (date-time)requiredmfa_verifiedbooleanrequiredSigned in or confirmed with a second factor
user_agentstringtokenstringOnly with transport bearer: send it as Authorization: Bearer <token>. It is shown once.
userobjectcreated_atstring (date-time)requiredemailstringrequiredemail_verifiedbooleanrequiredhas_passwordbooleanrequiredThe account has a password; accounts created with Google or Apple don't, until they reset one
idstringrequiredrolesarray of stringrequiredPlatform roles, such as platform_admin
codestringrequiredStable machine-readable error code
detailstringHuman-readable explanation
errorsarray of objectField-level validation errors
request_idstringCorrelates with server logs and traces
statusinteger (int64)requiredHTTP status code
titlestringrequiredShort summary of the problem type
typestringURI identifying the problem type
codestringrequiredStable machine-readable error code
detailstringHuman-readable explanation
errorsarray of objectField-level validation errors
request_idstringCorrelates with server logs and traces
statusinteger (int64)requiredHTTP status code
titlestringrequiredShort summary of the problem type
typestringURI identifying the problem type
codestringrequiredStable machine-readable error code
detailstringHuman-readable explanation
errorsarray of objectField-level validation errors
request_idstringCorrelates with server logs and traces
statusinteger (int64)requiredHTTP status code
titlestringrequiredShort summary of the problem type
typestringURI identifying the problem type
codestringrequiredStable machine-readable error code
detailstringHuman-readable explanation
errorsarray of objectField-level validation errors
request_idstringCorrelates with server logs and traces
statusinteger (int64)requiredHTTP status code
titlestringrequiredShort summary of the problem type
typestringURI identifying the problem type
codestringrequiredStable machine-readable error code
detailstringHuman-readable explanation
errorsarray of objectField-level validation errors
request_idstringCorrelates with server logs and traces
statusinteger (int64)requiredHTTP status code
titlestringrequiredShort summary of the problem type
typestringURI identifying the problem type