---
updatedAt: 2026-05-27T22:29:10.000Z
agentTools:
  projectIndex: https://docs.spinwheel.io/llms.txt
---

# Submit Answers for KBA

Complete a connect KBA flow by providing the users's answers to the previously returned security questions.

> 🚧 Secure API URLs
>
> While the Connect a user via KBA endpoint requires the secure-api, the submission of answers leverages the standard API url.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/v1/users/{userId}/connect/kba": {
      "put": {
        "operationId": "Verify Kba Answers",
        "summary": "Submit Answers for KBA",
        "description": "Complete a connect KBA flow by providing the users's answers to the previously returned security questions.",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectKbaVerificationRequest"
              },
              "examples": {
                "KBA Submit Answers": {
                  "description": "KBA Submit Answers",
                  "value": {
                    "answers": {
                      "0": "4"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectKbaResponse"
                },
                "examples": {
                  "Connection Success": {
                    "value": {
                      "status": {
                        "code": 200,
                        "desc": "success"
                      },
                      "data": {
                        "userId": "52183390-b209-46bd-955b-d6d9d301a84f",
                        "extUserId": "689663dc-077d-4d8c-ac75-5a7c2c305c30",
                        "connectionId": "417f7fa8-81d9-4142-827e-9e9abfeb02df",
                        "connectionStatus": "SUCCESS",
                        "networkToken": "b26e936c-3a1b-417c-a879-43be436d4ead"
                      }
                    }
                  },
                  "Additional Questions / Incorrect Answers - Production": {
                    "value": {
                      "status": {
                        "code": 200,
                        "desc": "success"
                      },
                      "data": {
                        "userId": "52183390-b209-46bd-955b-d6d9d301a84f",
                        "extUserId": "689663dc-077d-4d8c-ac75-5a7c2c305c30",
                        "connectionId": "417f7fa8-81d9-4142-827e-9e9abfeb02df",
                        "connectionStatus": "IN_PROGRESS",
                        "kba": {
                          "questions": [
                            {
                              "id": "0",
                              "question": "Which of the following represents the last four digits of your cellular phone number?",
                              "options": [
                                {
                                  "id": "0",
                                  "text": "1195"
                                },
                                {
                                  "id": "1",
                                  "text": "3552"
                                },
                                {
                                  "id": "2",
                                  "text": "2570"
                                },
                                {
                                  "id": "3",
                                  "text": "1721"
                                },
                                {
                                  "id": "4",
                                  "text": "NONE OF THE ABOVE/DOES NOT APPLY"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    }
                  },
                  "Additional Questions / Incorrect Answers - Sandbox": {
                    "value": {
                      "status": {
                        "code": 200,
                        "desc": "success"
                      },
                      "data": {
                        "userId": "52183390-b209-46bd-955b-d6d9d301a84f",
                        "extUserId": "689663dc-077d-4d8c-ac75-5a7c2c305c30",
                        "connectionId": "417f7fa8-81d9-4142-827e-9e9abfeb02df",
                        "connectionStatus": "IN_PROGRESS",
                        "kba": {
                          "questions": [
                            {
                              "id": "0",
                              "question": "Which of the following represents the last four digits of your cellular phone number?",
                              "options": [
                                {
                                  "id": "0",
                                  "text": "1195"
                                },
                                {
                                  "id": "1",
                                  "text": "3552"
                                },
                                {
                                  "id": "2",
                                  "text": "2570"
                                },
                                {
                                  "id": "3",
                                  "text": "1721"
                                },
                                {
                                  "id": "4",
                                  "text": "NONE OF THE ABOVE/DOES NOT APPLY"
                                }
                              ]
                            }
                          ],
                          "answers": {
                            "0": "4"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectErrorResponse"
                },
                "examples": {
                  "User already connected": {
                    "value": {
                      "status": {
                        "code": 400,
                        "desc": "Bad Request",
                        "messages": [
                          {
                            "desc": "User already connected"
                          }
                        ]
                      }
                    }
                  },
                  "Expired": {
                    "description": "The authentication flow has expired.",
                    "value": {
                      "status": {
                        "code": 400,
                        "desc": "EXPIRED",
                        "messages": [
                          {
                            "desc": "The auth flow has expired. Please reinitiate with a new connection."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectErrorResponse"
                },
                "examples": {
                  "Identity Not Found": {
                    "description": "No record of a customer with the provided credentials.",
                    "value": {
                      "status": {
                        "code": 404,
                        "desc": "IDENTITY_NOT_FOUND",
                        "messages": [
                          {
                            "desc": "No record of a customer with the provided credentials"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Submission retries exhausted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectErrorResponse"
                },
                "examples": {
                  "Submission retries exhausted": {
                    "value": {
                      "status": {
                        "code": 429,
                        "desc": "MAX_ATTEMPTS_REACHED",
                        "messages": [
                          {
                            "desc": "Maximum number of retries reached for answers submission."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "tags": [
          "Connect"
        ],
        "security": [
          {
            "bearerAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "info": {
    "title": "Discover",
    "description": "Welcome to Spinwheel's documentation! ",
    "version": "1.0",
    "contact": {}
  },
  "tags": [
    {
      "name": "Connect"
    }
  ],
  "servers": [
    {
      "url": "https://sandbox-api.spinwheel.io"
    },
    {
      "url": "https://api.spinwheel.io"
    },
    {
      "url": "https://secure-api.spinwheel.io"
    },
    {
      "url": "https://secure-sandbox-api.spinwheel.io"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "Once you've created a Spinwheel account and received credentials, you can access all of Spinwheel's APIs using a server-to-server call (in order to protect your credentials). When calling an API simply include your secretKey as a bearer token in an auth header like so: \n\n `Authorization: Bearer 8ae8d6fa-df8d-4c5d-9f9b-c4e4c10968b0`"
      }
    },
    "schemas": {
      "Message": {
        "type": "object",
        "properties": {
          "desc": {
            "type": "string",
            "example": "Example status description"
          },
          "type": {
            "enum": [
              "ERROR",
              "WARN",
              "INFO"
            ],
            "type": "string",
            "example": "ERROR"
          }
        },
        "required": [
          "desc"
        ]
      },
      "ResponseStatus": {
        "type": "object",
        "properties": {
          "code": {
            "type": "number",
            "example": 200
          },
          "desc": {
            "type": "string",
            "example": "success"
          },
          "messages": {
            "example": [
              {
                "desc": "Example description"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message"
            }
          }
        }
      },
      "ConnectErrorResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          }
        },
        "required": [
          "status"
        ]
      },
      "KbaChallengeQuestionOptions": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "readOnly": true
          },
          "text": {
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "text"
        ]
      },
      "KbaChallengeQuestion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "readOnly": true
          },
          "question": {
            "type": "string",
            "readOnly": true
          },
          "options": {
            "readOnly": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KbaChallengeQuestionOptions"
            }
          }
        },
        "required": [
          "id",
          "question",
          "options"
        ]
      },
      "ProductionConnectKbaDetails": {
        "type": "object",
        "properties": {
          "questions": {
            "readOnly": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KbaChallengeQuestion"
            }
          }
        },
        "required": [
          "questions"
        ]
      },
      "SandboxConnectKbaDetails": {
        "type": "object",
        "properties": {
          "questions": {
            "readOnly": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KbaChallengeQuestion"
            }
          },
          "answers": {
            "type": "object",
            "readOnly": true
          }
        },
        "required": [
          "questions",
          "answers"
        ]
      },
      "ConnectKbaResponseData": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "readOnly": true,
            "example": "9226245b-4a4c-48e2-a8cb-9a0e114ed4af"
          },
          "extUserId": {
            "type": "string",
            "readOnly": true,
            "example": "e04a4733-f134-458b-a579-4f91672b2e2c"
          },
          "connectionId": {
            "type": "string",
            "readOnly": true,
            "example": "e3119f3a-ac24-4fa8-839b-c9db75848453"
          },
          "connectionStatus": {
            "enum": [
              "IN_PROGRESS",
              "SUCCESS",
              "FAILED"
            ],
            "type": "string",
            "readOnly": true,
            "example": "IN_PROGRESS"
          },
          "kba": {
            "description": "The KBA information associated with the connection request. Note the differences between the production and sandbox responses",
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductionConnectKbaDetails"
              },
              {
                "$ref": "#/components/schemas/SandboxConnectKbaDetails"
              }
            ]
          }
        },
        "required": [
          "userId",
          "extUserId",
          "connectionId",
          "connectionStatus"
        ]
      },
      "ConnectKbaResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ResponseStatus"
          },
          "data": {
            "$ref": "#/components/schemas/ConnectKbaResponseData"
          }
        },
        "required": [
          "status",
          "data"
        ]
      },
      "ConnectKbaVerificationRequest": {
        "type": "object",
        "properties": {
          "answers": {
            "type": "object",
            "description": "The answers to the previous security questions"
          }
        },
        "required": [
          "answers"
        ]
      }
    }
  }
}
```