---
updatedAt: 2026-09-29T09:52:31.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Confirm applicant data for Non-Doc Verification

# Overview

Use this method to confirm the applicant data with `otp` or `oAuth`, depending on the response received after [submitting the data](https://docs.sumsub.com/sumsub/reference/submit-applicant-data).

## Required permissions

To use this method:

* Your [app token](https://docs.sumsub.com/sumsub/docs/app-tokens) must have the **Change applicant's personal data** [permission](https://docs.sumsub.com/sumsub/docs/user-roles#permissions).
* Your account must also have the **E-KYC (Non-Doc Verification)** feature enabled.

Both conditions are required — missing the permission, or having the feature disabled, returns a `403 Forbidden`. If **E-KYC (Non-Doc Verification)** is not enabled for your account, contact your CSM or Sumsub support.

# Request example

```http Request (OTP)
curl -X POST \
  'https://api.sumsub.com/resources/applicants/631f268442d8290001e00000/ekyc/confirm/bzaPxnCpyxEqs0sJKASXxUYf' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>' \
  -d '{
        "otp": {
            "code": "123456",
        }
    }'
```
```http Request (oAuth)
curl -X POST \
  'https://api.sumsub.com/resources/applicants/631f268442d8290001e00000/ekyc/confirm/bzaPxnCpyxEqs0sJKASXxZIk' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>' \
  -d '{
        "oauth": {
            "completeUrl": "https://in.sumsub.com/idensic/ekyc/redirect?code=rUKrpIoRZ44ENZnz8ECPOU",
        }
    }'
```

# Response explained

<Table align={["left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Type
      </th>

      <th>
        Optional
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `status`
      </td>

      <td>
        String
      </td>

      <td>
        No
      </td>

      <td>
        Verification status.
      </td>
    </tr>

    <tr>
      <td>
        `confirmationType`
      </td>

      <td>
        String
      </td>

      <td>
        Yes
      </td>

      <td>
        Confirmation type.
      </td>
    </tr>

    <tr>
      <td>
        `confirmationId`
      </td>

      <td>
        String
      </td>

      <td>
        Yes
      </td>

      <td>
        Confirmation ID.
      </td>
    </tr>

    <tr>
      <td>
        `confirmationStatus`
      </td>

      <td>
        String
      </td>

      <td>
        Yes
      </td>

      <td>
        Confirmation status:

        - `created` — confirmation created.
        - `confirmed` — confirmation confirmed.
        - `retry` — confirmation with `confirmationId` was temporary rejected and can be retried.
        - `rejected` — confirmation with `confirmationId` was rejected. Submit the [applicant data](https://docs.sumsub.com/sumsub/reference/submit-applicant-data) again or skip the e-KYC step.
          **Examples:** For `otp` confirmation; the correct code — `confirmed`, incorrect code for several times — `retry`, limit of retries was exceeded — `rejected`.
      </td>
    </tr>

    <tr>
      <td>
        `otpConfirmation`
      </td>

      <td>
        Object
      </td>

      <td>
        Yes
      </td>

      <td>
        OTP confirmation details if `confirmationType` is `otp`.
      </td>
    </tr>

    <tr>
      <td>
        `oauthConfirmation`
      </td>

      <td>
        Object
      </td>

      <td>
        Yes
      </td>

      <td>
        oAuth confirmation details if `confirmationType` is `oAuth`.
      </td>
    </tr>
  </tbody>
</Table>

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "sumsub-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.sumsub.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "name": "X-App-Token",
        "in": "header",
        "x-default": ""
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/resources/applicants/{applicantId}/ekyc/confirm/{confirmationId}": {
      "post": {
        "summary": "Confirm applicant data for Non-Doc Verification",
        "description": "",
        "operationId": "confirm-applicant-data",
        "parameters": [
          {
            "name": "applicantId",
            "in": "path",
            "description": "Unique identifier of the applicant in the Sumsub system. <br><br>This identifier is a random combination of 24 digits and lowercase Latin characters. It is automatically generated when the applicant is created on the Sumsub side, and can be found in the [Dashboard](https://cockpit.sumsub.com/checkus/#/applicants/individual?limit=10&page=0). <br><br>If the `applicantId` is unknown to you, use the [Get applicant data (externalUserId)](https://docs.sumsub.com/sumsub/reference/get-applicant-data-via-externaluserid) method to fetch it.",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "confirmationId",
            "in": "path",
            "description": "Confirmation identifier from the [submission](https://docs.sumsub.com/sumsub/reference/submit-applicant-data) response.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "otp": {
                    "type": "object",
                    "description": "OTP confirmation data if `confirmationType` is `otp`.",
                    "required": [
                      "code"
                    ],
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "OTP that was sent to applicant."
                      }
                    }
                  },
                  "oauth": {
                    "type": "object",
                    "description": "oAuth confirmation data if `confirmationType` is `oAuth`.",
                    "required": [
                      "completeUrl"
                    ],
                    "properties": {
                      "completeUrl": {
                        "type": "string",
                        "description": "Final redirected URL of the auth journey with query params. Format: `redirectUrl?<queryParams>`."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```