# Passwordless login · One-time codes instead of passwords

**✦ Verification flow •••**

Your account

Confirm it’s you.

Enter the code sent to

Example verification code

Code verified

Send a code. Confirm the recipient.

## The code isn't a second factor here. It's the only one.

Passwordless is the [Bird Verify API](/verify-api) used as the login itself: create a verification for the address the user signs in with, then check the code they enter: verified means logged in. There's no password row to protect and no verification id to store, and which channel each user gets is configurable per country. Keep a password in front instead and the same calls power [two-factor authentication](/verify-api/features/2fa).

## What passwordless gets you.

Less to store, less to steal.

- **01** No password to breach. There's no password hash to leak, no reset flow to phish, and no credential reuse across sites. The factor is possession of a channel.
- **02** One flow for signup and login. The same create-then-check verifies a new address at signup and re-verifies it at login. One path, not two.
- **03** SMS, email, or WhatsApp as the credential. Sign users in with the channel you already have for them (SMS, email, or WhatsApp), with voice rolling out as more options.
- **04** Silent auth on the roadmap. Carrier-network (silent) verification, which proves the number with no code to type, is designed in as a future channel, so the friction can drop further without a rewrite.

## How passwordless login works

## Sign in with a code, not a password.

Send the code to the address the user enters, then check it. A verified result is the login: there's no password to compare against.

**passwordless.ts**

```typescript
await bird.verify.verifications.create({
  to: { email: input.email },
}).safe();

const { data, error } = await bird.verify.verifications.check({
  to:   { email: input.email },
  code: submitted,
}).safe();
if (error) throw error;

// a true result is the login — no password to compare
if (data.success) grantSession(input.email);
```

## Build it on the Verify platform

The channels and controls behind passwordless login.

- [Email OTP](/verify-api/features/email): Email magic-code login for users you reach by inbox, no phone required.
- [SMS OTP](/verify-api/features/sms): Phone-number login: the code texted to the user is the credential.
- [Channel orchestration](/verify-api/features/orchestration): Per-country channel order and senders, resolved automatically and tunable per request.
- [Anti-abuse & code security](/verify-api/features/security): Hashed codes, attempt lockout, and the fraud layer coming next.
- [Verify API overview](/verify-api): The full Verify API: create-or-retry, check by target, and advance to the next channel.

## Scale without  losing control.

Organize teams in workspaces, control API access, and trace changes through audit logs.

Harbor Organization
Workspaces Production Sandbox

### Delivery agent

API key · Customer operations team
Active
Permissions Access
Email Read & write
SMS Read & write
WhatsApp Read Read & write
AL Alex Lee Admin  Permissions updated

### Audit log

Production
 API key updated Alex Lee · 09:42:18 UTC

Workspace
Production

Resource
Delivery agent

WhatsApp
Read Read & write

Succeeded

 [Workspaces](/docs/guides/workspaces)[Team roles](/docs/guides/users-teams-roles)[API authentication](/docs/guides/authentication)
[Explore Enterprise](/enterprise)

## Start with Verify. Build across channels with Bird.

[Get started](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Fverify) · [Contact Sales](/demo?product=verify)

[Email](/email-api) · [SMS](/sms-api) · [WhatsApp](/whatsapp-api) · [Apple Messages](/apple-messages-api) · [Voice](/voice-api)



## Related resources

- [Verify phone numbers at signup](/learn/series/verify-phone-numbers-at-signup) (video)
- [Verify your first customer](/docs/get-started/verify-your-first-customer) (docs)
- [What does OTP mean? One-time passwords explained](/explained/verify/what-does-otp-mean) (answer)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=verify)
