Start Registration
Initiates the registration process by checking handle availability and generating WebAuthn registration options.Request Body
User handle (username). Must be 3-32 characters, containing only letters, numbers, and underscores.
- Min length: 3
- Max length: 32
- Pattern:
^[a-zA-Z0-9_]+$
Response
WebAuthn registration options generated by
@simplewebauthn/serverTemporary user ID for this registration session (UUID format)
Error Responses
Error message when registration cannot proceed
"Handle is already taken"(400) - Handle already exists in the system
Complete Registration
Completes the registration process by verifying the WebAuthn credential and creating the user account.Request Body
Temporary user ID from the start registration response (UUID format)
WebAuthn registration response from the authenticator
User identity information
Display name for the user (1-64 characters)
User handle (3-32 characters)
Email address (optional, must be valid email format)
Birthday in string format (optional)
URL to user’s avatar image (optional, must be valid URL)
URL to user’s banner image (optional, must be valid URL)
Device information for the registration
Device name (max 64 characters)
Device type:
"phone", "computer", or "tablet"Browser name (optional)
Operating system (optional)
Unique device fingerprint (optional, max 64 characters)
PRF-encrypted master key if the passkey supports the PRF extension (optional)
Response
Always
true on successful registrationSession token for authentication (also set as HTTP-only cookie)
Array of 2 trust codes for account recovery. User must save these securely.
Created identity information
Identity ID (UUID)
User’s display name
User’s handle (lowercase)
User’s email address
Avatar image URL
Banner image URL
Whether this is the primary identity (always
true for first identity)Error Responses
Error message when registration fails
"Registration session expired"(400) - The challenge has expired (15 minute timeout)"Passkey verification failed"(400) - WebAuthn verification failed
Check Handle Availability
Checks if a handle is available for registration.Path Parameters
Handle to check (converted to lowercase automatically)
Response
Whether the handle is available for registration
Reason why handle is unavailable (only present when
available is false)"Handle must be 3-32 characters"- Invalid length"Handle can only contain letters, numbers, and underscores"- Invalid characters
Finalize Master Key Backup
Finalizes the master key backup after the client encrypts it with the real trust codes. Requires authentication.Request Body
Encrypted master key backup (encrypted with trust codes)
Headers
Bearer token:
Bearer {sessionToken}Response
Always
true on successful updateValidation Rules
Handle Validation
- Length: 3-32 characters
- Pattern: Only letters (a-z, A-Z), numbers (0-9), and underscores (_)
- Case: Automatically converted to lowercase
- Uniqueness: Must not already exist in the system
Identity Fields
- displayName: 1-64 characters, required
- email: Must be valid email format (optional)
- avatarUrl/bannerUrl: Must be valid URL format (optional)
Device Fields
- name: Maximum 64 characters
- type: Must be one of:
phone,computer,tablet - fingerprint: Maximum 64 characters (optional)
Session Duration
- Sessions expire after 30 days
- Challenge expires after 15 minutes
Trust Codes
- Count: 2 codes generated per registration
- Format: Hyphen-separated format (e.g.,
XXXX-XXXX-XXXX-XXXX-XXXX-XXXX) - Security: Hashed before storage using SHA-256
- Usage: Reusable for account recovery