Skip to content

Verify anonymous-login challenge and create or resume an anonymous session.

POST
/api/auth/anon-login/verify
Code sample: Shell / cURL
curl --request POST \
--url https://auth.example.com/api/auth/anon-login/verify \
--header 'Content-Type: application/json' \
--data '{ "challenge_id": "challenge_123", "device_signature": "device_sig_123", "proof": "signed_challenge" }'
Media type application/json
object
challenge_id
required
string
device_signature
required
string
proof
string
Example
{
"challenge_id": "challenge_123",
"device_signature": "device_sig_123",
"proof": "signed_challenge"
}

Successful JSON response.

Media type application/json
object
success
required
boolean
session_id
required
string
user_id
required
string
is_new_user
required
boolean
upgrade_eligible
required
boolean
user
required
object
id
string
user_type
string
Example
{
"success": true,
"session_id": "sess_123",
"user_id": "anon_123",
"is_new_user": true,
"upgrade_eligible": true,
"user": {
"id": "anon_123",
"user_type": "anonymous"
}
}

Anonymous account routing is being created or an expired route is being released.

Media type application/json
One of:
object
status
required
string
Allowed value: provisioning
provisioning_token
required
string
/^[A-Za-z0-9_-]{43}$/
status_endpoint
required
string
Allowed value: /api/v1/auth/account-provisioning/status
retry_after_ms
required
integer
>= 250 <= 2000
expires_in
required
integer
>= 1 <= 600
resume_user_id

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.

string
key
additional properties
Example
{
"status": "provisioning",
"status_endpoint": "/api/v1/auth/account-provisioning/status"
}