Skip to content

Complete passkey registration

POST
/auth/webauthn/registration/verify
curl --request POST \
--url https://example.com/api/v1/auth/webauthn/registration/verify \
--header 'Content-Type: application/json' \
--data '{ "response": {}, "name": "example" }'

Consume the single-use challenge, verify the attestation, and persist the credential for the authenticated local user. Requires AUTH=on and a real local user.

Media typeapplication/json
object
response
required

RegistrationResponseJSON returned by the browser startRegistration().

object
key
additional properties
any
name

Optional friendly credential name. Defaults to a user-agent-derived name when omitted.

string
<= 100 characters
Examplegenerated
{
"response": {},
"name": "example"
}

Credential registered

Media typeapplication/json
object
verified
required
boolean
credential
required

Client-safe view of a registered passkey (no key material).

object
id
required

Base64URLString credential id.

string
name
required
string
createdAt
required
string
lastUsedAt
string
nullable
deviceType
required
string
Allowed values: singleDevice multiDevice
backedUp
required
boolean
Example
{
"credential": {
"deviceType": "singleDevice"
}
}

Missing/expired challenge or verification failed

Media typeapplication/json
object
error
required

Error message

string
Examplegenerated
{
"error": "example"
}

Not an authenticated local user

Media typeapplication/json
object
error
required

Error message

string
Examplegenerated
{
"error": "example"
}

Duplicate name / passkey already registered / AUTH not on

Media typeapplication/json
object
error
required

Error message

string
Examplegenerated
{
"error": "example"
}

WebAuthn RP resolution failed

Media typeapplication/json
object
error
required

Error message

string
Examplegenerated
{
"error": "example"
}