Sign in a user through OTP
Log in a user using magiclink or a one-time password (OTP).
- Requires either an email or phone number.
- This method is used for passwordless sign-ins where a OTP is sent to the user's email or phone number.
- If the user doesn't exist,
signInWithOtp()
will signup the user instead. To restrict this behavior, you can setshouldCreateUser
inSignInWithPasswordlessCredentials.options
tofalse
. - If you're using an email, you can configure whether you want the user to receive a magiclink or a OTP.
- If you're using phone, you can configure whether you want the user to receive a OTP.
- The magic link's destination URL is determined by the
SITE_URL
. - See redirect URLs and wildcards to add additional redirect URLs to your project.
- Magic links and OTPs share the same implementation. To send users a one-time code instead of a magic link, modify the magic link email template to include
{{ .Token }}
instead of{{ .ConfirmationURL }}
. - See our Twilio Phone Auth Guide for details about configuring WhatsApp sign in.
Parameters
credentials
REQUIRED
SignInWithPasswordlessCredentialsemail
Optional
stringOne of `email` or `phone` must be provided.
phone
Optional
stringOne of `email` or `phone` must be provided.
options
Optional
objectemailRedirectTo
Optional
stringOnly for email signups. The redirect URL embedded in the email link. Must be a configured redirect URL for your Supabase instance.
shouldCreateUser
Optional
booleanWhether to create the user if they don't already exist. Defaults to true.
data
Optional
objectA custom data object to store additional user metadata.
captchaToken
Optional
stringchannel
Optional
sms | whatsappThe channel to use for sending messages. Only for phone signups.
const { data, error } = await supabase.auth.signInWithOtp({
email: 'example@email.com',
options: {
emailRedirectTo: 'https://example.com/welcome'
}
})