pending-mfa state, so the user can obtain what they need to complete verification. Two mutually exclusive dispatch modes are supported, selected by which optional field is supplied: passing type: "passkey" generates and returns WebAuthn authentication (assertion) options scoped to the identity's active passkeys, while passing identity_mfa_id (referencing an active email-mobile MFA method) emails a 6-digit one-time passcode to the address on file. Exactly one of identity_mfa_id or type must be supplied. This endpoint is unauthenticated by design: it is called before the user holds any bearer token, and access is instead gated by possession of the short-lived session_token issued at login. Email OTP dispatch is rate-limited per MFA method to prevent notification abuse: if a code was already sent within the cooldown window, the request is rejected until the window elapses.curl --location '/session-otps' \
--header 'Content-Type: application/json' \
--data '{
"session_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uX2lkIjoiMDFIUVpSMkJLUEZROE1YSlZUM0c3TFdOQSJ9.4fA1s0cR9m2wYQeK3jT6bV8pXqU7dS5nZ1hL0oM2rWk",
"identity_mfa_id": "01HQZR2BKPFQ8MXJVT3G7LWNA"
}'{
"message": "Success",
"status": "success",
"data": {
"sent": true,
"identity_mfa_id": "01HQZR2BKPFQ8MXJVT3G7LWNA"
}
}