...

API and SDK for verification

One REST API for customer checks: recognition of passports and other documents with anti-fraud checks, AML checks against state registers and sanctions lists, with the result delivered in JSON and by webhook. For websites and mobile browsers — a ready-made Web SDK. It runs in the cloud in Russia or inside your perimeter.

User verification via API: a developer's laptop and a smartphone with a passport check widget
  • REST API: KYC sessions and AML checks in JSON
  • Web SDK for websites and mobile browsers
  • Cloud in Russia or Docker inside your perimeter
Data is stored in Russia Russian Software Registry No. 19972 152‑FZ

What you can connect through the KYC API and AML API

Online customer checks via API: one account, one token and a common response format for all products. Connect only what your process needs — the rest can be added later without a new integration. Transaction monitoring (KYT) is connected per project — see the page KYT.

  • Document recognition and checks

    Russian passport, foreign passport, driving licence, ID card and 16 000+ more document types from 195+ countries and territories. The response contains the document type, fields with a confidence level and anti-fraud checks of the image: editing software, a photo of a screen, a printout.

    OCR API and SDK
  • AML checks of an individual

    The Rosfinmonitoring list, OFAC, EU, UK and UN sanctions lists, PEP compliance screening, wanted lists, debts, bankruptcy and courts — by full name and passport, without uploading a document. Each check is selected separately.

    Catalogue of checks
  • Passport validity from Ministry of Internal Affairs data

    Checking the series, number and issue date of a Russian passport via SMEV and getting the taxpayer ID (INN) by passport are separate checks of the same AML API. Suitable for bank passport verification without a visit to the office.

    Individual checks
  • Liveness and face matching

    A selfie, a selfie with a document and a liveness check are steps of the same KYC scenario: you enable them in the scenario editor and users go through them in the Web SDK. The result of matching the face with the document photo arrives in the session response.

    Liveness
  • Web SDK

    A ready-made JavaScript widget guides the user through the scenario steps and sends the images to the API itself. It works in desktop and smartphone browsers.

    More details below
  • Counterparty checks by tax number

    Company status, signs of a shell company, courts, the director and founders — see the counterparty checks page. KYB methods are not yet published in the documentation: we will discuss API access during test access.

    Counterparty checks

Map of NeuroVision REST API methods

All methods use POST at https://api.neuro-vision.ru/v1/, the body is JSON or multipart/form-data for images, the response is JSON. Below are the methods you need for integration; the full list with parameters is in the REST API documentation.

  • KYC sessions: documents and selfies

    A session collects all verification steps of one user within a scenario. The document response fields and an example of /kyc/process — see the page OCR API and SDK.

    KYC methods

    Upload and recognition

    • /kyc/process — document and selfie images, mode sync or async; /kyc/session/create — a new session

    Result

    • /kyc/session/status — status and results by sessionId or clientKey; /kyc/session/status/change — manual status change

    Exports

    • /kyc/sessions, /kyc/sessions/filter — list and filter of sessions, CSV/XLSX export; /kyc/download — log archive
  • AML checks of an individual

    Data-based checks, without a KYC session or a document upload.

    AML: API and integration

    Launch

    • /kyc/checks/run — the person's data and a list of checks in checkers, immediately returns runId

    Result

    • /kyc/checks/result — polling by runId every 5–10 seconds until checksStatus becomes complete

    By KYC session

    • /kyc/session/databases — checks on the data of the recognised document; the result comes as a webhook event DATABASE_CHECKS_COMPLETE
  • Account, tokens and data

    API access, balance and personal data management.

    Access tokens

    Authorisation

    • /user/login — a temporary JWT valid for valid_days; /token/create, /token/update, /token/delete, /tokens — permanent tokens

    Balance

    • /user/balance — the current balance of an account or a group

    Personal data

    • kyc/session/erase — erasing personal data by sessionId or by clientUser across all of the user's sessions; kyc/session/erase/log — the log

Integration architecture: backend, API and webhook

Your backend stores the token and makes the decision; the frontend only captures the document and selfie. This way keys never reach the browser, and the check outcome always arrives at the server — even if the user closed the tab. Checks can be connected to a CRM, ERP or 1C through the same REST API.

Step 1

1. A scenario in the personal account

In the scenario editor you set the verification steps, document types and countries, anti-fraud checks, the callback URL and the secret key. The scenario ID (schemaId) is needed in the API and SDK.

A verification scenario in the personal account: steps, ID and callback URL
Step 2

2. A token on your server

A permanent token is created in the «Access» section and kept as a backend secret. A temporary JWT is handy for scripts and tests. The token is never passed to the browser.

A permanent API access token in the NeuroVision personal account
Step 3

3. Capture on the frontend

The Web SDK opens over your page and guides the user through the steps: document, selfie, liveness check. If you have your own interface, your backend sends the images to /kyc/process.

Document capture in the Web SDK or in your own interface
Step 4

4. Processing at NeuroVision

The service recognises the document, checks the image and matches the faces, and if database checks are enabled, runs them on the document data. For checks without a document there is a separate call /kyc/checks/run.

Session processing: document, face matching and database checks
Step 5

5. Webhook and decision

The session outcome arrives at your backend's callback URL; you can request the outcome at any moment by sessionId. Your system writes the data to the application form, CRM or core banking system and decides: approve, reject or send to an operator.

The webhook arrives at the backend and the system makes a decision on the check

Request and response example: the AML API and KYC session status

The KYC API passport and AML checks in code: launching checks of an individual, the response and result, then the KYC session status. The structure comes from the documentation; the data is fictitious. An example of document recognition is in /kyc/process — see the page OCR API and SDK. Parameters are in the description of launching checks and session status.

Request: launching checks

cURL
curl -X POST "https://api.neuro-vision.ru/v1/kyc/checks/run" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "<YOUR_TOKEN>",
    "person": {
      "lastName": "Lavrov",
      "firstName": "Yaroslav",
      "middleName": "Ilyich",
      "birthDate": "1990-01-01",
      "passport": { "series": "0000", "number": "000000", "issueDate": "2010-01-01" }
    },
    "checkers": [
      "passportVerification",
      "regulatoryRestrictions",
      "sanctionsLists",
      "debtBurden",
      "insolvencyStatus"
    ]
  }'

How to read an AML result

The result of each AML check comes in two fields — the three possible statuses are below. The names of all checks are in the catalogue.

  • Read outcome first, then passed

    The outcome field tells whether the check reached the source; the passed field tells what the source answered. Read them in this order.

    • outcome → passed
  • Source queried

    The check reached the register and returned a result: look at the passed field. Such a check is charged.

    • outcome: performed
  • Not enough data

    The check did not run: a required parameter was not passed. It is not charged. An empty result here means «not checked», not «clean» — do not take it for a passed check.

    • outcome: skipped
  • Register did not respond

    The source is temporarily unavailable, so there is no result. You can repeat the launch later with the same request.

    • outcome: unavailable

KYC SDK for a website or your own interface on the REST API

  • Who captures the document and what the backend does

    Own interface + REST API — your frontend or mobile app does the capture, and your backend sends the images to /kyc/process and reads the response. The NeuroVision Web SDK — the widget does the capture: instructions, a frame, «fields not visible» hints, retakes; your backend creates the session, encrypts clientKey and receives the webhook.

  • Liveness check and integration

    Own interface — an HTTP client in any language; how to pass a series of frames for the liveness check without the widget, we will clarify during test access. Web SDK — liveness is a scenario step and runs in the widget; integration — <script> with widget-lib.js or the npm package kyc-widget-nv for React.

  • Styling and a computer without a camera

    Own interface — the styling is entirely yours, and behaviour on a computer without a camera is your logic. Web SDK — the logo, colours, screen texts and a light or dark theme are set in the scenario editor; on a computer without a camera the user switches to a phone via a QR code or a link.

  • Mobile apps: WebView instead of a native SDK

    There are no separate iOS and Android SDKs at the moment. The widget is responsive and works with the smartphone camera, so inside an app it is opened in the built-in browser or WebView. Inside a cross-origin iframe the browser blocks the camera — the widget must not be embedded in someone else's iframe.

  • Server libraries and integration code

    There are no server libraries for Python, Java and C# either: the API works over plain HTTP, and ready-made scripts are available in Python. The widget integration code for HTML and React is on the page OCR API and SDK and in the documentation: integration, parameters, working with clientKey.

  • Launch without development

    Your own interface and the Web SDK require code integration. Without integration — a direct link to the widget or one-time KYC links from the personal account, up to 1 000 at a time.

Both options lead to the same result — a session with the same JSON and the same webhook. The difference is who draws the capture screens and checks image quality before sending. The Web SDK for verification suits a quick start; your own interface suits cases where capture is already built into your product.

How to get the result: synchronously, by webhook or by polling

  • mode=sync result in the response of /kyc/process — for a form where the user is waiting
  • mode=async immediately sessionId, the outcome comes by webhook or by status
  • KYC session status /kyc/session/status by sessionId or clientKey
  • AML without a session polling /kyc/checks/result every 5–10 s
  • While processing is in progress session status processing, for AML — pending

  • Where to set it up scenario editor → your backend's callback URL
  • Body encryption the scenario's secret key
  • Without personal data a flag: only statuses in the webhook
  • Final result only a flag: no intermediate statuses
  • Database checks DATABASE_CHECKS_COMPLETE or as soon as ready
  • Document recognition can return the result in the same response. Checks against state registers take minutes: some registers respond slowly, so they are always asynchronous.
  • The recommended production setup is asynchronous mode and a webhook: the backend does not hold the connection open, and the outcome arrives even if the user left the page. The result of any session can be re-read later by sessionId — structured data is stored indefinitely or for as long as the scenario sets.

The NeuroVision cloud or your perimeter: where the API runs

  • A cloud in Russia

    Quick start: a token and a scenario — and you can send requests. Scaling, monitoring and model updates are on NeuroVision's side. More details: KYC service in Russia.

  • In your perimeter

    The platform is installed as a set of Docker containers on your servers, and NeuroVision engineers perform the installation and updates. After installation it works without the internet: access is needed for licence activation and updates.

  • What stays the same

    The same methods, the same JSON and the same webhooks — moving from the cloud to your perimeter does not require rewriting the integration. Only the API address changes. Server requirements are on the page OCR API and SDK.

For banks and state-owned companies with an isolated perimeter, dedicated servers and an individual SLA are discussed in the contract.

API limits, versions and support

Figures from the NeuroVision documentation

Check them during test access — on your data and your load.

  • 01

    Limits and packages

    The tariff does not limit request frequency: a purchased package can be used up in a day or in a year. If the package runs out, the service is not blocked. We discuss the expected load and the number of parallel requests during test access.

  • 02

    One session — one at a time

    Simultaneous uploads to one KYC session are processed one by one. The next request waits up to 25 seconds, then receives 409 session is busy — the frame was not processed and the attempt was not charged. Repeat the request after the previous one responds.

  • 03

    Versions and changelog

    The API version is in the path: /v1/. Every release is described in the changelog: what changed in the API, webhooks, the widget and error codes, whether there are breaking changes and what to do in the integration.

  • 04

    Integration support

    On working days from 10:00 to 18:00 Moscow time — tickets in the personal account, Telegram and email. Round-the-clock support with an SLA is under a separate contract. In your request, state sessionId and the scenario — the answer will come faster.

  • 5–10 s polling interval for AML check results
  • 25 s queue wait for one KYC session
  • 6 months original images are stored

Response codes and API errors

  • 400 invalid schema the body does not match the method schema
  • 400 unknown or not allowed checkers a typo in the check name or the check is not allowed for the account
  • 401 access denied no token, or the token is not valid
  • 404 run not found someone else's or non-existent runId
  • 409 session is busy another request to the session is in progress — retry after it responds

  • Session failed the reason is in errors of the step in the format [group] description
  • Session suspicious signs of fraud — stop sending frames to this session
  • Session expired the lifetime set in the scenario has expired — create a new session
  • AML skipped not enough data, the list is in missingInputs; not charged
  • AML unavailable the register did not respond — the launch can be repeated
  • There are two kinds of errors. A request error is an HTTP code and message: the request is rejected entirely, nothing changes in the session, and the attempt is not charged. A check result is a normal response 200, where the reason for rejection is in status, errors or outcome.
  • The full reference with a description of each check — KYC errors. Document recognition errors (bad image, text fields not visible etc.) are covered on the page OCR API and SDK.

From test access to production: 5 steps

Connecting the KYC API is an evening of a developer's time for the first request and a few days for the webhook, rejection handling and tests on your data. The organisational steps are on our side.

Step 1

1. Test access

Leave a request. A manager will give you access to the personal account and the documentation. The test period is 1 month.

Step 1 of 5: test access
Step 2

2. A token and a scenario

In the «Access» section create a token, and in the «KYC/AML» section a scenario: documents, countries, checks, callback URL. Copy the scenario ID.

Step 2 of 5: token and scenario
Step 3

3. The first request

Send a document photo to /kyc/process or launch AML checks following the example above. You can see the process through the user's eyes in the demo.

Step 3 of 5: the first request
Step 4

4. Webhook and rejections

Enable asynchronous mode and the webhook, and handle failed, suspicious, skipped and 409. Decide which cases go to an operator.

Step 4 of 5: webhook and rejections
Step 5

5. Production

After the contract — live access. For an isolated perimeter — dedicated servers and installation on your side. Follow the API changelog.

Step 5 of 5: production

How much does an API request cost

You pay for checks, not for connecting. Packages can be used up at any pace. The test period is 1 month.

Calculate the cost
  • 01

    A KYC session with document recognition and anti-fraud checks — from 16 ₽: the session includes all scenario steps and up to 6 free capture attempts per step

  • 02

    An AML check against a state register — 5 ₽, 16 basic checks — 50 ₽, international compliance screening — 36 ₽

  • 03

    A check that lacked data is not charged

Licences and certificates

Innovation Promotion Foundation

The project «Development of a multimodal system using artificial intelligence "Neuromed" for managing the diagnostic processes of a clinic on the basis of the "Neurovision" computer vision platform» is supported by the Innovation Promotion Foundation within the federal project «Domestic Solutions»

Get test access to the API

Tell us which checks you need — documents, AML database checks or both — the monthly volume and where the service should run. We will give you access to the personal account and help with the first request.

Can't put your request into words? Book a call and our team will contact you at a convenient time

Book a call

The company is included in the register of IT companies and the register of personal data operators of the Russian Ministry of Digital Development.

Address: Moscow, Presnenskaya Embankment 12 — Moscow City business centre, Federation Tower. Nearest metro stations: Delovoy Tsentr and Mezhdunarodnaya.

Frequently asked questions about the NeuroVision API and SDK

Document recognition with anti-fraud checks, a selfie and a liveness check as steps of a KYC session, as well as AML checks of an individual against state registers and sanctions lists. Everything works through one REST API with one token. For websites and mobile browsers there is a ready-made Web SDK.

The KYC API works with images: a document, a selfie, face matching, with the result in the KYC session. The AML API checks a person by data — full name, date of birth, passport — without uploading a document: the /kyc/checks/run and /kyc/checks/result methods. They can be linked: database checks are launched on the recognised document data of the same session.

In two steps. The KYC API recognises the passport from a photo and checks the image for editing, a photo of a screen and a printout. The passportVerification AML check compares the series, number and issue date with Ministry of Internal Affairs data, and taxIdLookup gets the taxpayer ID (INN) by passport.

There are no native iOS and Android SDKs at the moment. The Web SDK works in mobile browsers and opens inside an app via WebView or the built-in browser, so verification can be embedded in a mobile app too. One limitation — the widget cannot be embedded in someone else's iframe: the browser will block the camera.

There are no separate server libraries: the API works over plain HTTP, so any language will do. The documentation has ready-made Python scripts, and this page has cURL and Python examples.

Both ways are available. For a KYC session a webhook to the callback URL from the scenario is more convenient; if needed, the status is requested by sessionId or clientKey. The result of AML checks without a session is fetched by polling /kyc/checks/result every 5–10 seconds.

With a permanent token from the «Access» section of the personal account or a temporary JWT issued by the /user/login method. A permanent token is more convenient for server-side integration; it is passed in the token field of the request body. Without a token the API responds 401 access denied.

Yes, we give test access for 1 month — with a personal account, a token and the documentation. Leave a request at the bottom of the page. You can see how verification looks for the user in the demo.

The tariff does not limit request frequency: a package can be used up at any pace, and after it runs out the service is not blocked. Requests to one KYC session are processed one by one. We discuss the expected load at the start of test access.

A KYC session with document recognition and anti-fraud checks — from 16 ₽, an AML check against a state register — 5 ₽. A check that lacked data is not charged. The exact price depends on the scenario and volume — the price matrix calculates it.

Yes. The platform is installed in your perimeter as a set of Docker containers, and NeuroVision engineers perform the installation and updates. After installation it works without the internet, and the API methods stay the same.

The kyc/session/erase method destroys the personal data of one session or of all of the user's sessions by clientUser. Support handles integration questions: tickets in the personal account, Telegram and email — contacts are in the documentation.