Статус сессии

Получение статуса и результатов одной KYC-сессии по sessionId или clientKey.

  • Метод: POST
  • Путь: kyc/session/status
  • Content-Type: application/json

Авторизация

Поддерживается два способа авторизации:

1. JWT-токен в заголовке token:

token: <jwt-token>

2. API-токен (timeuuid) в теле запроса:

{"token": "<api-token>", "sessionId": "..."}

Без токена (ни в header, ни в body) запрос вернёт "access denied".


Параметры запроса

ПараметрТипОбязательныйОписание
sessionIdstring (timeuuid)нет*UUID v1 (timeuuid) сессии
clientKeystring (непустая)нет*Клиентский ключ (непустая строка, макс. 36 символов)

* Необходимо указать хотя бы один из параметров: sessionId или clientKey.

Приоритет параметров

Если переданы оба параметра одновременно, clientKey имеет приоритет — поиск будет выполнен по clientKey, sessionId будет проигнорирован.

Ограничения

  • sessionId должен быть валидным timeuuid (UUID v1)
  • clientKey — непустая строка длиной не более 36 символов

Формат ответа

Успешный ответ (200)

{
  "status": "success",
  "sessionId": "550e8400-e29b-41d4-a716-446655440000",
  "errors": [],
  "schemaId": "660e8400-e29b-41d4-a716-446655440000",
  "clientId": "770e8400-e29b-41d4-a716-446655440000",
  "spent": 24.184,
  "createdAt": "2026-03-19T10:31:06.000Z",
  "isClientNew": false,
  "clientKey": "my_client_key_123",
  "clientUser": "",
  "secondsToLive": 0,
  "responseTime": "2026-03-19T10:31:30.000Z",
  "results": [...],
  "email": "user@example.com",
  "wallet": "0x1234...abcd"
}

Описание полей ответа

ПолеТипОписание
statusstringСтатус сессии (см. таблицу ниже)
sessionIdstring (timeuuid)UUID v1 (timeuuid) сессии
errorsarrayОбщие ошибки сессии
schemaIdstring (UUID)UUID KYC-схемы
clientIdstring (UUID)UUID клиента (пустая строка, если клиент не идентифицирован)
spentnumberОбщее время обработки в секундах
createdAtstring (ISO 8601)Дата и время создания сессии
isClientNewbooleantrue — первый визит клиента, false — повторный
clientKeystringКлиентский ключ, переданный при создании сессии
clientUserstringИдентификатор пользователя клиента
secondsToLivenumberОставшееся время жизни сессии в секундах (0 = истекла)
responseTimestring (ISO 8601)Время формирования ответа
resultsarrayМассив результатов по задачам (см. ниже)
emailstringEmail клиента (опционально)
walletstringАдрес криптокошелька клиента (опционально)

Статусы сессии

СтатусОписание
idleСессия создана, обработка не начата
processingСессия в процессе обработки
successВсе задачи завершены успешно
failedОдна или несколько задач завершились ошибкой
exceptionПроизошла системная ошибка
expiredВремя жизни сессии истекло

Результаты задач (results)

Массив results содержит результаты по каждой задаче KYC-сессии. Типы задач: document, selfie, faces.

Задача типа document

{
  "status": "success",
  "type": "document",
  "spent": 1.367,
  "errors": [],
  "docName": "Passport (2006)",
  "tries": 1,
  "startedAt": "2026-03-19T10:31:08.000Z",
  "isBackSide": false,
  "countryCode": "RUS",
  "checks": [
    {
      "caption": "fraud",
      "items": [
        { "status": "success", "caption": "isPrinted", "confidence": 1 },
        { "status": "success", "caption": "isEdited", "confidence": 0.001 },
        { "status": "success", "caption": "isDisplay", "confidence": 0.938 }
      ]
    }
  ],
  "ocr": {
    "status": "success",
    "fields": [
      { "title": "Surname", "value": "DOE", "conf": "high" },
      { "title": "Given name(s)", "value": "JOHN", "conf": "high" },
      { "title": "Date of birth", "value": "01.01.1970", "conf": "high" }
    ]
  },
  "images": ["https://api.example.com/images/kyc/.../document_0/0"],
  "imagesFull": ["https://api.example.com/images/kycfull/.../document_0_0.jpg"],
  "imageObjects": ["https://api.example.com/images/kyc/.../stamp/0"],
  "history": [...]
}
ПолеТипОписание
statusstringСтатус задачи: idle, processing, success, failed
typestringТип задачи: document
spentnumberВремя обработки в секундах
errorsarrayОшибки обработки (напр. "[document] unknown document type")
docNamestringРаспознанный тип документа (напр. "Passport (2006)", "ePassport (2005-2008)")
triesnumberКоличество попыток распознавания
startedAtstring (ISO 8601)Время начала обработки
isBackSidebooleanЯвляется ли обратной стороной документа
countryCodestringКод страны документа (ISO 3166-1 alpha-3)
checksarrayРезультаты проверок (fraud-чеки)
ocrobjectРезультаты распознавания текста
imagesarrayСсылки на обработанные изображения (миниатюры)
imagesFullarrayСсылки на полноразмерные изображения
imageObjectsarrayСсылки на распознанные объекты (штампы, подписи)
historyarrayИстория предыдущих попыток (при tries > 1)

Задача типа selfie

{
  "status": "success",
  "type": "selfie",
  "spent": 0.14,
  "errors": [],
  "docName": "Passport (2006)",
  "tries": 1,
  "withDoc": ["Domestic passport"],
  "checks": [
    {
      "caption": "fraud",
      "items": [
        { "status": "success", "caption": "isFaceDeepFake" },
        { "status": "success", "caption": "isAgeMismatch", "value": 15 },
        { "status": "success", "caption": "isDisplaySelfie", "confidence": 1 },
        { "status": "success", "caption": "isGenderMismatch", "value": "female" }
      ]
    }
  ],
  "faceSelfie": "https://api.example.com/images/kycthumb/.../selfie/0",
  "faceDoc": "https://api.example.com/images/kycthumb/.../selfie_document/0",
  "images": ["https://api.example.com/images/kyc/.../selfie_0/0"],
  "imagesFull": ["https://api.example.com/images/kycfull/.../selfie_0_0.jpg"]
}
ПолеТипОписание
withDocarray/stringДокумент(ы), с которым сопоставляется селфи
faceSelfiestringСсылка на вырез лица с селфи
faceDocstringСсылка на вырез лица с документа

Задача типа faces

Результат сравнения лиц. Появляется, когда в сессии есть и документ, и селфи.

{
  "status": "success",
  "type": "faces",
  "spent": 0.003,
  "errors": [],
  "checks": [
    {
      "caption": "Face matching",
      "items": [
        {
          "status": "success",
          "caption": "document_0 & selfie",
          "value": "92%",
          "images": [
            "https://api.example.com/images/kycthumb/.../document_0",
            "https://api.example.com/images/kycthumb/.../selfie"
          ]
        },
        {
          "status": "success",
          "caption": "document_0 & selfie_document",
          "value": "96%",
          "images": [...]
        }
      ]
    }
  ]
}
ПолеТипОписание
checks[].items[].valuestringПроцент совпадения лиц
checks[].items[].imagesarrayПара сравниваемых изображений

Ошибки

Невалидная схема (400)

При нарушении формата параметров:

{
  "status": "error",
  "message": "invalid schema",
  "details": [
    {
      "expected": {},
      "actual": "not-a-uuid",
      "path": "sessionId"
    }
  ]
}

Типичные причины:

  • sessionId не является валидным timeuuid (UUID v1)
  • clientKey длиннее 36 символов
  • clientKey — пустая строка

Сессия не найдена (200)

{
  "status": "error",
  "message": "session not found"
}

Возможные причины:

  • Сессии с указанным sessionId или clientKey не существует

Не указан идентификатор (400)

{
  "status": "error",
  "message": "sessionId or clientKey is required"
}

Возникает, когда в body не передан ни sessionId, ни clientKey.

Нет авторизации (401)

{
  "status": "error",
  "message": "access denied"
}

Примеры запросов

Поиск по sessionId

curl -X POST https://api.neuro-vision.ru/v1/kyc/session/status 
  -H 'Content-Type: application/json' 
  -H 'token: <jwt-token>' 
  -d '{"sessionId": "550e8400-e29b-41d4-a716-446655440000"}'

Поиск по clientKey

curl -X POST https://api.neuro-vision.ru/v1/kyc/session/status 
  -H 'Content-Type: application/json' 
  -H 'token: <jwt-token>' 
  -d '{"clientKey": "my_client_key_123"}'

Типичные fraud-проверки (checks)

Для документов (type: "document")

CaptionОписание
isMRZValidВалидность MRZ-зоны
isStampsOkПроверка штампов/печатей
isPrintedДокумент напечатан (не фото экрана)
isDamagedДокумент не повреждён
isOtherObjectsOkНет посторонних объектов
isXerocopyДокумент не является ксерокопией
isEditedДокумент не редактирован
isSignatureOwnerOkПодпись владельца
isSignatureIssuerOkПодпись выдающего органа
isDisplayДокумент не сфотографирован с экрана
isFieldsModifiedПоля не модифицированы
isCroppedДокумент не обрезан
isFieldsCorrectedПоля не корректировались
isMobileСнято с мобильного устройства
isPhotoApplicationФото без приложения-редактора
isLogicalMismatchНет логических несоответствий

Для селфи (type: "selfie")

CaptionОписание
isFaceDeepFakeПроверка на deepfake
isAgeMismatchСовпадение возраста (value = разница в годах)
isCroppedФото не обрезано
isXerocopyНе ксерокопия
isGenderMismatchСовпадение пола (value = определённый пол)
isDisplaySelfieНе фото с экрана
isMobileСнято с мобильного