Skip to content

Begin passkey registration

POST
/auth/webauthn/registration/options
curl --request POST \
--url https://example.com/api/v1/auth/webauthn/registration/options

Start registering a passkey for the authenticated local user. Requires AUTH=on and a real local user (rejects the API-key pseudo-user and OIDC users). Stores a single-use challenge and returns WebAuthn creation options for navigator.credentials.create().

Credential creation options

Media typeapplication/json

WebAuthn credential creation options (PublicKeyCredentialCreationOptionsJSON), passed verbatim to the browser’s navigator.credentials.create(). The inner shape is owned by @simplewebauthn and treated as opaque here.

object
options
required

PublicKeyCredentialCreationOptionsJSON (challenge, rp, user, pubKeyCredParams, …).

object
key
additional properties
any
Examplegenerated
{
"options": {}
}

Not an authenticated local user

Media typeapplication/json
object
error
required

Error message

string
code

Stable machine-readable code present on 5xx responses; error is a fixed user-safe message, raw detail is logged server-side only

string
Allowed values: cleanup_failed library_fetch_failed episodes_fetch_failed releases_fetch_failed
Example
{
"code": "cleanup_failed"
}

Passkeys require AUTH=on

Media typeapplication/json
object
error
required

Error message

string
code

Stable machine-readable code present on 5xx responses; error is a fixed user-safe message, raw detail is logged server-side only

string
Allowed values: cleanup_failed library_fetch_failed episodes_fetch_failed releases_fetch_failed
Example
{
"code": "cleanup_failed"
}

WebAuthn RP resolution failed

Media typeapplication/json
object
error
required

Error message

string
code

Stable machine-readable code present on 5xx responses; error is a fixed user-safe message, raw detail is logged server-side only

string
Allowed values: cleanup_failed library_fetch_failed episodes_fetch_failed releases_fetch_failed
Example
{
"code": "cleanup_failed"
}