POST
Start a passkey login
Step 1 of signing in with a passkey. Call passkey/login (public — no bearer token) to get a session_token and fido2options, then unlock the passkey on the device. You finish on Passkey sign-in (finish).

Before you begin

Passkeys need a browser or app webview that supports WebAuthn. Check for support before you show a passkey option:
Our API sends and expects binary values as base64url strings, while the browser works with byte arrays. The web example below uses these two helpers to convert between them:
A WebAuthn helper library such as @simplewebauthn/browser does these conversions for you. The examples here show the raw approach so you can see exactly what’s happening.

The whole flow

This one function runs all the way through both calls to tokens. On Kotlin, Swift, and Flutter the device step uses the platform’s credential API — see Unlocking the passkey on the device.

Unlocking the passkey on the device

The device step turns the fido2options into a signed assertion. On the web that’s navigator.credentials.get() (shown above). On native platforms, use the OS credential API: Encode the result into the assertion that Passkey sign-in (finish) sends to passkey/verify.

Headers

x-program-id
string
required

Identifies the program. Can also be sent as the programId query parameter.

Response

Passkey challenge

success
boolean
Example:

true

data
object