---
title: "Connect a User via KBA"
method: POST
path: "/v1/users/connect/kba"
tags: ["Connect"]
---

# Connect a User via KBA

`POST /v1/users/connect/kba`

Connect a User using a set of personal questions provided by a credit bureau.

## Request body

- ConnectKbaRequest
  - `firstName` string, required — The user's first name.
  - `lastName` string, required — The user's last name.
  - `dateOfBirth` string, required — The date of birth. Formatted as YYYY-MM-DD.
  - `ssn` string, required — The user's ssn (without hyphens)
  - `address` Address, required
    - `addressLine1` string, required
    - `addressLine2` string
    - `city` string, required
    - `state` 'AL' | 'AK' | 'AZ' | 'AR' | 'CA' | 'CO' | 'CT' | 'DC' | 'DE' | 'FL' | 'GA' | 'HI' | 'ID' | 'IL' | 'IN' | 'IA' | 'KS' | 'KY' | 'LA' | 'ME' | 'MD' | 'MA' | 'MI' | 'MN' | 'MS' | 'MO' | 'MT' | 'Ne' | 'NE' | 'NV' | 'NH' | 'NJ' | 'NM' | 'NY' | 'NC' | 'ND' | 'OH' | 'OK' | 'OR' | 'PA' | 'RI' | 'SC' | 'SD' | 'TN' | 'TX' | 'UT' | 'VT' | 'VA' | 'WA' | 'WV' | 'WI' | 'WY', required
    - `zip` string, required
    - `zipExtension` string
  - `userId` string, required — An existing userId to connect with. One of extUserId or userId is required.
  - `extUserId` string, required — A unique external ID for the user. One of extUserId or userId is required.
  - `audit` AuditRequest
    - `consentTimestamp` string — When the user consented to the End User Agreement. Must be a UTC RFC 3339 datetime within the last 24 hours.
    - `tosVersion` 'v1.0' | 'v1.1' — Version of the Spinwheel End User Agreement agreed to by the user. Supported versions: v1.0, v1.1.
    - `tosLanguage` 'en' — Language in which the Spinwheel End User Agreement was presented. Currently only "en" is supported.
    - `consentType` 'WRITTEN' | 'VERBAL' — How consent was obtained. WRITTEN: written or electronic consent. VERBAL: verbal consent during a recorded interaction.

## Response `201`

Success

- ConnectKbaResponse
  - `status` ResponseStatus, required
    - `code` number
    - `desc` string
    - `messages` Message[]
      - `desc` string, required
      - `type` 'ERROR' | 'WARN' | 'INFO'
  - `data` ConnectKbaResponseData, required
    - `userId` string, required
    - `extUserId` string, required
    - `connectionId` string, required
    - `connectionStatus` 'IN_PROGRESS' | 'SUCCESS' | 'FAILED', required
    - `kba` union — The KBA information associated with the connection request. Note the differences between the production and sandbox responses
      - ProductionConnectKbaDetails
        - `questions` KbaChallengeQuestion[], required
          - `id` string, required
          - `question` string, required
          - `options` KbaChallengeQuestionOptions[], required
            - `id` string, required
            - `text` string, required
      - SandboxConnectKbaDetails
        - `questions` KbaChallengeQuestion[], required
          - `id` string, required
          - `question` string, required
          - `options` KbaChallengeQuestionOptions[], required
            - `id` string, required
            - `text` string, required
        - `answers` object, required

## Other responses

- `400` — Bad Request
- `404` — Identity Not Found

---

[API](https://skmtc.dev/spinwheel/apis/discover.md) · [All operations](https://skmtc.dev/spinwheel/apis/discover/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/spinwheel/discover/revisions/55b90a2e1dd4/schema)
