---
title: "Finish login with an existing passkey"
method: POST
path: "/passkey/login/finish"
tags: ["Passkeys"]
---

# Finish login with an existing passkey

`POST /passkey/login/finish`

Finishes login with an existing passkey by completing the WebAuthn ceremony.

## Request body

- PasskeyLoginFinishReq
  - `userID` string, required — ID of the user
  - `assertionResponse` string, required
  - `clientInformation` ClientInformation, required
    - `remoteAddress` string, required — Client's IP address
    - `userAgent` string, required — Client's user agent
    - `clientEnvHandle` string — Client's environment handle
    - `javascriptFingerprint` string — Client's fingerprint
    - `javaScriptHighEntropy` JavaScriptHighEntropy
      - `platform` string, required
      - `platformVersion` string, required
      - `mobile` boolean, required
    - `bluetoothAvailable` boolean — Client's Bluetooth availability
    - `passwordManagerAvailable` boolean — Client's password manager availability
    - `userVerifyingPlatformAuthenticatorAvailable` boolean, required
    - `conditionalMediationAvailable` boolean, required
    - `clientCapabilities` ClientCapabilities, required
      - `conditionalCreate` boolean
      - `conditionalMediation` boolean
      - `hybridTransport` boolean
      - `passkeyPlatformAuthenticator` boolean
      - `userVerifyingPlatformAuthenticator` boolean
    - `privateMode` boolean
    - `parsedDeviceInfo` ParsedDeviceInfo, required
      - `browserName` string, required
      - `browserVersion` string, required
      - `osName` string, required
      - `osVersion` string, required
    - `nativeMeta` NativeMeta
      - `build` string, required
      - `deviceOwnerAuth` string
      - `isPlatformAuthenticatorAPISupported` boolean
      - `isBluetoothAvailable` boolean
      - `isBluetoothOn` boolean
      - `googlePlayServices` boolean
      - `deviceSecure` boolean
      - `brand` string
      - `model` string
  - `processID` string, required
  - `signPasskeyData` boolean
  - `trackingID` string, required

## Response `200`

Passkey login succeeded.

- PasskeyLoginFinishRsp
  - `passkeyData` PasskeyData, required
    - `id` string, required
    - `userID` string, required
    - `username` string, required
    - `ceremonyType` 'local' | 'cda' | 'security-key', required
    - `challengeID` string, required
    - `aaguidDetails` AaguidDetails, required
      - `aaguid` string, required
      - `name` string, required
      - `iconLight` string, required
      - `iconDark` string, required
    - `userVerified` boolean
    - `userPresent` boolean
  - `signedPasskeyData` string

## Other responses

- `default` — Error

---

[API](https://skmtc.net/corbado/apis/corbado-backend-api.md) · [All operations](https://skmtc.net/corbado/apis/corbado-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/corbado/corbado-backend-api/versions/1f6143efe426/schema)
