Running checks

POST kyc/checks/run


Description

Runs checks on an individual against the supplied data and immediately returns a runId. The method is asynchronous: the response contains no result, which is retrieved with the POST kyc/checks/result method.


Request format

  • HTTP method: POST
  • URL: kyc/checks/run
  • Content type: application/json
  • Authorization: required (token in the token field of the body or in the token header)

Request body (JSON)

FieldTypeRequiredDescription
tokenstringPermanent access token. With a temporary token, pass it in the token header — then it is not needed in the body
personobjectData to check; lastName and firstName are required
checkersstring[]Which checks to run. If the field is omitted, all checks allowed for the group are run

Data inside person is passed in sets: if a set is passed in full, the checks for that set work; if the set is absent, they return a skip.

Data sets
SetFieldsNote
RF passportpassport.series, passport.number, passport.issueDate + full name and date of birthThe main set, about 95% of requests
Driver’s licencedriverLicense.series, driverLicense.number, driverLicense.issueDateValidity of the driver’s licence
Full name and date of birthlastName, firstName, middleName, birthDateThe minimum set for searching the registries
SNILSsnils (11 digits)Accepted and passed on to the source
Registration addressaddress.full, address.type (reg — residence, fact — stay)Accepted and passed on to the source
INNinn (12 digits)Optional — the checks determine the INN from the passport themselves (a middle name is required)

There is no need to strip separators in the numbers (spaces, hyphens). Dates are accepted in the YYYY-MM-DD and DD.MM.YYYY formats. A check that was short of data is included in the run and returns outcome: skipped, listing what was missing in missingInputs — this is not an error and is not billed.


Example request (cURL)

curl -X POST "https://api.neuro-vision.ru/v1/kyc/checks/run" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "<permanent-token>",
    "person": {
      "lastName": "Ivanov",
      "firstName": "Ivan",
      "middleName": "Ivanovich",
      "birthDate": "1985-03-15",
      "gender": "M",
      "passport": { "series": "4509", "number": "123456", "issueDate": "2010-06-20", "issuerCode": "770-001" },
      "driverLicense": { "series": "7799", "number": "123456", "issueDate": "15.03.2020" },
      "snils": "11223344595",
      "inn": "771234567890",
      "address": { "full": "119991, Moscow, ul. Lenina, 1, apt. 2", "type": "reg" }
    },
    "checkers": ["insolvencyStatus", "debtBurden"]
  }'

Response

FieldTypeDescription
runIdstringRun identifier for kyc/checks/result
checksStatusstringAlways pending
pendingnumberHow many checks were started
checkersstring[]Which checks were started

The set of checks is fixed at the moment of the run: nothing is added to the run later.

Success (200 OK)
{
  "runId": "523c8284-ad9e-11ef-9be1-b8ccad474166",
  "checksStatus": "pending",
  "pending": 2,
  "checkers": ["insolvencyStatus", "debtBurden"],
  "responseTime": "2026-07-28T10:00:00.000Z"
}
Error — unknown checker (400)
{
  "status": "error",
  "message": "unknown or not allowed checkers",
  "unknown": ["insolvencyStatuz"],
  "notAllowed": []
}

Errors

CodeBodyWhen
400invalid schema + detailsThe body does not match the schema
400person.lastName and person.firstName are requiredNo last name or first name
400unknown or not allowed checkers (+ unknown, notAllowed)Among checkers there are identifiers that are unknown or not allowed for the group
400checkers must not be emptyAn empty checkers array was passed (omit the field to run all)
400no checks are allowed for this accountThe group is not allowed any check
401access deniedNo token, or the token is not valid

An unknown identifier is not dropped silently: otherwise a typo would turn into a run without the check you need.