Start Direct Auth passkey signup.
curl --request POST \ --url https://auth.example.com/api/v1/auth/direct/passkey/signup/start \ --header 'Content-Type: application/json' \ --data '{ "client_id": "client_123", "email": "user@example.com", "display_name": "Example User", "code_challenge": "rfc7636-code-challenge", "code_challenge_method": "S256", "channel": "browser" }'Creates WebAuthn registration options for Direct Auth signup after validating client, channel, and origin. Email is optional and is not used for discoverable Passkey lookup.
Request Body required
Section titled “Request Body required ”Email is optional and is retained only as profile data when supplied.
object
object
Internal Login UI continuation token returned by a previous 202 response.
Internal Login UI continuation value paired with provisioning_token.
Example
{ "client_id": "client_123", "email": "user@example.com", "display_name": "Example User", "code_challenge": "rfc7636-code-challenge", "code_challenge_method": "S256", "channel": "browser"}Responses
Section titled “ Responses ”Successful JSON response.
object
WebAuthn options generated by @simplewebauthn/server.
object
Example
{ "challenge_id": "challenge_123", "options": { "challenge": "challenge", "rpId": "auth.example.com", "allowCredentials": [], "userVerification": "required" }}Account creation is durable but its active Lookup route is not ready yet.
object
Present for passkey signup only. The Login UI sends this continuation value back with the provisioning token so a retried request reuses the same account candidate.
Example
{ "status": "provisioning", "status_endpoint": "/api/v1/auth/account-provisioning/status"}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}