Skip to content
LogoLogo

Complete a passkey sign-in

Complete a passkey sign-in

POST/api/v1/auth/passkeys/login/verify

Verifies the authenticator's assertion and issues a browser session.

No second factor is requested. A passkey is strong authentication on its own — the authenticator performed user verification, which is the assurance a second factor exists to add — so unlike a password sign-in this never returns a challenge. A successful response is always the account.

Every failure is 401, whether the ceremony was unknown, expired, or already used, or the assertion did not verify. The distinctions are useful only to someone probing the endpoint; an honest client can only start a new ceremony.

A credential whose signature counter fails to advance is treated as cloned: it is disabled, and this and every later attempt with it are refused. The account's other sign-in methods continue to work, and the credential remains listed — marked disabled — so the user can see what happened.

Request Body

application/json
ceremony_tokenRequired
string·min 1·max 128
responseRequired
object

The PublicKeyCredential returned by navigator.credentials.get(), serialized as JSON in the form a WebAuthn client library produces.

remember_me
boolean

Whether to remember this device. true (the default when omitted, which preserves earlier client behavior) issues a persistent session cookie with the 7-day idle and 30-day absolute lifetimes. false issues a browser-session cookie that the browser discards when it closes, and the server bounds the session to 48 hours, idle and absolute.

Responses