Start signing in with a passkey

Step one of signing in a user with an existing passkey. Convert the JSON response into the binary values WebAuthn expects, then give it to the browser: ```js const optionsJSON = await fetch('/wallets/connect/passkey/login/options', { method: 'POST' }) .then(r => r.json()); const options = PublicKeyCredential.parseRequestOptionsFromJSON(optionsJSON); const assertion = await navigator.credentials.get({ publicKey: options }); ``` Then serialize the result with `assertion.toJSON()` and send it to `POST /wallets/connect/passkey/login/verify`. There is nothing to send here, and nothing to identify: the browser knows which passkeys it holds for us and offers the right one. No sign-in needed — this is the sign-in.

POST
/wallets/connect/passkey/login/options

Request Body

application/json

No request body is required.

TypeScript Definitions

Use the request body type in TypeScript.

No fields required. Body may be omitted entirely.

Response Body

application/json

application/json

application/json

curl -X POST "https://api.dual.network/wallets/connect/passkey/login/options" \  -H "Content-Type: application/json" \  -d '{}'
{
  "challenge": "s5f2X8kQvLbA1mZ0pYtR7cJdEwNhGuIoP3qS6rT9vXk",
  "rpId": "dual.network",
  "userVerification": "required",
  "timeout": 60000
}
{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}
{
  "code": 13,
  "message": "internal error"
}