Browse the API reference

Passkey Registration Verify

post/v1/auth/passkeys/register/verify

Part of Auth.

Finish enrollment. The first passkey returns recovery codes (once); the forced-enrollment lane also completes the login.

Authentication

This operation does not require an API key.

Request body

Required, application/json.

FieldTypeDescription
credentialrequiredobject

WebAuthn registration credential (browser JSON, opaque)

nameoptionalstring

User-facing label for this passkey

mfa_tokenoptionalstring

Enrollment token when finishing a forced enrollment

Example request

curl
curl -X POST "https://api.robosystems.ai/v1/auth/passkeys/register/verify" \
  -H "Content-Type: application/json" \
  -d '{
  "credential": {}
}'

Responses

200 Successful Response

FieldTypeDescription
passkeyrequiredPasskeyInfo

The newly enrolled passkey

PasskeyInfo fields
FieldTypeDescription
idrequiredstring

Passkey identifier

namerequiredstring

User-facing label

created_atrequiredstring

Enrollment time (ISO 8601)

last_used_atoptionalstring

Last successful assertion time (ISO 8601)

backup_eligiblerequiredboolean

Whether the credential is synced (multi-device) capable

backup_staterequiredboolean

Whether the credential is currently backed up

recovery_codesoptionalstring[]

Single-use recovery codes — returned exactly once, at first enrollment

authoptionalAuthResponse

Completed login (forced-enrollment lane only)

AuthResponse fields
FieldTypeDescription
userrequiredobject

User information

orgoptionalobject

Organization information (personal org created automatically on registration)

messagerequiredstring

Success message

statusoptionalstring

Login flow state: authenticated (token present), or a passkey MFA step is required before a session is issued (mfa_token present)

One of: authenticated, mfa_required, mfa_enrollment_required

Default: authenticated

mfa_tokenoptionalstring

Short-lived token authorizing the MFA second step or forced enrollment; present only when status is not 'authenticated'

tokenoptionalstring

JWT authentication token (optional for cookie-based auth)

expires_inoptionalinteger

Token expiry time in seconds from now

refresh_thresholdoptionalinteger

Recommended refresh threshold in seconds before expiry

StatusMeaning
400Registration failed
401Authentication required
422Validation Error
429Rate limit exceeded
500Internal server error