A 6-digit code sent by email. This is the method the Quickstart uses as its first working example — it needs nothing beyond your API key, no dashboard configuration of any kind.
None. sendOtp()/verifyOtp() work immediately with just apiKey in the constructor. If you haven't been through it yet, the Quickstart walks the full real flow end to end.
await auth.sendOtp("user@example.com");
// Optionally thread your own user ID through, same identity-bridge rules
// as everywhere else:
await auth.sendOtp("user@example.com", "your_user_123");
// Once the user enters the code from their email:
const user = await auth.verifyOtp("user@example.com", "123456");
// { id, email, externalUserId }
A successful verifyOtp() authenticates the SDK instance and fires onAfterAuth, same as any other primary login path.
000000–999999).None of these are currently configurable per project.
sendOtp() can be rate-limited on repeated sends. verifyOtp() can return invalid_code, expired, or rate_limited (the 5-attempt lockout). See the Error Reference for what to show users and how to recover.
externalUserId argument resolves to a user.