Перейти к основному содержанию
POST
curl

Поддержка KYC и KYB

Didit декодирует токен общего доступа, читает встроенное значение session_kind и клонирует соответствующий тип сессии:
  • session_kind: "user": клонирует пользовательскую сессию и связанные с ней записи о личности, лице, проверке живости, сравнении лиц, AML, местоположении, подтверждении адреса, телефоне, электронной почте, проверке по базам данных и журналы.
  • session_kind: "business": клонирует сессию компании и связанные с ней записи: проверку по реестру, записи о ключевых лицах, документы, AML-скрининги, телефон, электронную почту, местоположение, анкету и журналы.
Если токен выпущен до внедрения единого общего доступа и не содержит поля session_kind, Didit для обратной совместимости использует значение "user".

Что создаётся

  • Новая сессия того же типа в вашем приложении с новыми значениями session_id, session_number и session_url.
  • Поле shared_from_session новой сессии указывает на исходную сессию в приложении-источнике.
  • Статус новой сессии либо совпадает с исходным (trust_review: true), либо равен IN_REVIEW (trust_review: false).
  • Если для vendor_data сущность (User или Business) не существует, она создаётся автоматически.

Примеры

Ответ (201 Created):

Параметр trust_review

Ошибки

Идемпотентность

Повторный импорт того же share_token в одно и то же приложение отклоняется с кодом 403 как для пользовательских сессий, так и для сессий компаний.

Связанные материалы

Авторизации

x-api-key
string
header
обязательно

API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в Business Console. Основной ключ имеет полный доступ. Именованный ключ может иметь ограниченную область действия: без доступа, чтение или запись для каждого ресурса, ограничение определенными сценариями или одобренными сессиями, списком IP-адресов и сроком действия. 401 означает, что ключ неверен, отозван или его срок действия истек; 403 означает, что ключ не был передан, у ключа нет доступа к этому ресурсу или действию, либо запрос поступил с адреса вне его списка IP-адресов; 404 на маршруте сессии означает, что сессия не входит в сценарии или статусы ключа. Ключ без доступа к медиа получает URL изображений, видео и PDF как null, а ключ без прав на запись сессий получает ссылки на сессии и токены как null. См. https://docs.didit.me/console/api-keys.

Тело

application/json
share_token
string
обязательно

JWT-токен общего доступа, выпущенный POST /v3/session/{sessionId}/share/.

Пример:

"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

trust_review
boolean
обязательно

Если true, клонированная сессия сохраняет окончательный status исходной сессии. Если false, она принудительно переводится в In Review.

Пример:

false

workflow_id
string<uuid>
обязательно

UUID сценария в вызывающем приложении. Идентификаторы из других приложений отклоняются с кодом 404.

Пример:

"9f9b1234-aaaa-bbbb-cccc-1234567890ab"

vendor_data
string | null

Необязательное переопределение для vendor_data клонированной сессии.

Пример:

"user-1"

Ответ

Сессия клонирована. Тело ответа представляет собой payload решения V3 для обоих типов, разделяемых по session_kind: "user" (KYC) со списочными блоками функций, такими как id_verifications, liveness_checks, aml_screenings; "business" (KYB) с такими блоками, как registry_checks и key_people_checks. Оба содержат shared_from_session — session_id исходной сессии в исходном приложении. При trust_review: false параметру status клонированной сессии принудительно задаётся значение In Review.

session_id
string<uuid>

Уникальный идентификатор сессии.

session_kind
enum<string>

Дискриминатор, указывающий, является ли эта сессия сессией проверки пользователей (KYC) или верификации бизнеса (KYB). При значении user применяются массивы функций KYC (id_verifications, nfc_verifications, liveness_checks, face_matches, poa_verifications, document_ai_documents, database_validations, ...), а массивы для бизнеса отсутствуют. При значении business payload вместо этого содержит registry_checks, document_verifications, key_people_checks, а также общие массивы (aml_screenings, phone_verifications, email_verifications, ip_analyses, questionnaire_responses). Опускается при передаче include=events — формат событий существует только для сессий пользователей, поэтому дискриминатор удаляется из этого варианта.

Доступные опции:
user,
business
shared_from_session
string<uuid> | null

Для сессии, клонированной с помощью POST /v3/session/import-shared/: session_id исходной сессии в исходном приложении. null для всех остальных сессий. Опускается при передаче include=events.

shared_from_session_number
integer | null

session_number исходной сессии, если эта сессия была импортирована из другого приложения вашей организации. В противном случае null.

session_number
integer | null

Номер сессии.

session_url
string<uri> | null

URL сессии.

status
enum<string>

Общий статус жизненного цикла сессии — суммарный результат сценария. Конечные значения: Approved, Declined, In Review, Expired, Kyc Expired и Abandoned; статусы Not Started, In Progress, Awaiting User и Resubmitted указывают на то, что сессия всё ещё проходит сценарий.

Доступные опции:
Not Started,
In Progress,
Awaiting User,
In Review,
Approved,
Declined,
Resubmitted,
Expired,
Kyc Expired,
Abandoned
status_override
object | null

Присутствует, если проверяющий установил status вручную. null, когда статус был присвоен автоматически. Используйте это поле, чтобы отличить ручное одобрение от автоматического.

decision_trace
object

Как был получен статус: кто его установил и какие предупреждения к этому привели.

linked_records
object | null

Сводка других записей, связанных с сессией. null, если отображать нечего, а также для сценариев, декларирующих стандарт подтверждения возраста.

workflow_id
string<uuid> | null

Постоянный идентификатор группы сценариев, создавшей эту сессию. Сценарии версионируются — это значение определяет сам сценарий, а не конкретную версию.

features
string[]

Список функций верификации, настроенных для этой сессии, в виде отображаемых имён: ID_VERIFICATION, NFC, LIVENESS, FACE_MATCH, POA, PHONE, EMAIL_VERIFICATION, AML, IP_ANALYSIS, DATABASE_VALIDATION, QUESTIONNAIRE, AGE_ESTIMATION, FACE_SEARCH, GEOLOCATION (проверка местоположения) (сессии Верификации бизнеса используют набор функций KYB: KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE, AML, PHONE, EMAIL_VERIFICATION, IP_ANALYSIS, QUESTIONNAIRE). При include=events каждая запись становится объектом {feature, node_id} вместо простой строки, а функция электронной почты переименовывается: в режиме событий она отображается как EMAIL вместо используемого здесь EMAIL_VERIFICATION.

Функция сессии.

vendor_data
string | null

Данные вендора сессии.

metadata
object | null

Метаданные сессии.

expected_details
object | null

Ожидаемые данные, переданные при создании сессии — используются для перекрёстной проверки с извлечёнными данными (KYC) или для автозаполнения поиска в реестре компаний (KYB). Возвращает в точности те ключи, которые были предоставлены; null, если данные не передавались. Сессии KYC содержат поля физического лица; сессии верификации бизнеса (KYB) содержат company_name, registry_country и registration_number.

contact_details
object | null

Контактные данные, указанные при создании сессии (используются для уведомлений по email, предзаполненной проверки телефона/email и выбора языка коммуникации). Равно null, если не были указаны ни email, ни номер телефона.

callback
string<uri> | null

URL обратного вызова сессии.

id_verifications
object[] | null

Массив отчётов верификации личности (OCR), сформированных шагами проверки документов, удостоверяющих личность, в графе сценария. Всегда JSON-массив — считывайте id_verifications[0] и выполняйте итерацию, если ваш сценарий может выполнять более одной проверки документов, удостоверяющих личность (например, основную проверку плюс дополнительную). Имеет значение null, пока хотя бы один шаг проверки документов, удостоверяющих личность, не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, извлечённые поля документа, URL-адреса изображений, оценки качества, MRZ, разобранный адрес, совпадения между сессиями и warnings[].

nfc_skip_reason
enum<string> | null

Причина, по которой проверка NFC-чипа не была выполнена; заполняется всегда, когда сценарий включает шаг NFC. null, пока NFC находится в ожидании или если чип был фактически считан. Значения: USER_SKIPPED - пользователь решил пропустить шаг на устройстве с поддержкой NFC (разрешено параметром allow_nfc_skip); DOCUMENT_WITHOUT_CHIP - документ не содержит читаемого NFC-чипа (не является электронным документом ICAO 9303); CHIP_CERTIFICATE_UNAVAILABLE - сертификат подписи страны выдачи (CSCA), охватывающий период выпуска документа, недоступен, поэтому подпись чипа не может быть проверена; DEVICE_WITHOUT_NFC - устройство сообщило об отсутствии NFC-считывателя; INTEGRATION_WITHOUT_NFC_ACCESS - верификация выполнялась без нативного SDK (например, в веб-браузере), который не имеет доступа к NFC-считывателю телефона; MRZ_KEY_UNAVAILABLE - ключ доступа к чипу не удалось получить из MRZ документа; JPKI_UNAVAILABLE - документ представляет собой японскую карту My Number Card, чип которой считывается через JPKI, и JPKI был недоступен для этой верификации: он не включён или нативный SDK приложения не может считывать карты My Number Card.

Доступные опции:
USER_SKIPPED,
DOCUMENT_WITHOUT_CHIP,
CHIP_CERTIFICATE_UNAVAILABLE,
DEVICE_WITHOUT_NFC,
INTEGRATION_WITHOUT_NFC_ACCESS,
MRZ_KEY_UNAVAILABLE,
JPKI_UNAVAILABLE
nfc_verifications
object[] | null

Массив отчётов NFC / электронных паспортов, сформированных шагами NFC в графе сценария. Это всегда JSON-массив, а не отдельный объект nfc — считывайте nfc_verifications[0] и выполняйте итерацию, если ваш сценарий может выполнять NFC-проверку более одного раза. Имеет значение null, пока хотя бы один шаг NFC не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, chip_protocol, chip_data, authenticity (целостность SOD + DG), certificate_summary и warnings[]. Японская карта My Number Card считывается через JPKI вместо ICAO 9303: её элемент содержит chip_protocol: "jpki", содержит свои данные в jpki, а поля ICAO оставляет равными null. Если шаг NFC был обойдён ещё до того, как его можно было предложить (документ без чипа, отсутствие сертификата, не заявлена поддержка NFC, нечитаемый ключ MRZ, недоступность JPKI для My Number Card), этот массив остаётся null, а причина указывается в nfc_skip_reason; пропуск на самом шаге (пользователь нажал кнопку пропуска или считыватель оказался недоступен во время сканирования) всё равно формирует отчёт с is_nfc_skipped: true.

liveness_checks
object[] | null

Массив отчётов проверки живости, сформированных шагами проверки живости в графе сценария. Всегда JSON-массив — никогда не отдельный объект liveness. Имеет значение null, пока хотя бы один шаг проверки живости не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, method, score, reference_image, video_url, опциональную age_estimation, matches[] между сессиями и warnings[].

face_matches
object[] | null

Массив отчётов сравнения лиц, сформированных шагами сравнения лиц в графе сценария. Всегда JSON-массив — никогда не отдельный объект face_match. Имеет значение null, пока хотя бы один шаг сравнения лиц не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, score сходства, source_image, target_image и warnings[].

phone_verifications
object[] | null

Массив отчётов проверки телефона — всегда JSON-массив, а не отдельный объект phone. Имеет значение null, пока хотя бы один шаг проверки телефона не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, номер телефона и метаданные страны, lifecycle[], matches[] и warnings[].

email_verifications
object[] | null

Массив отчётов проверки электронной почты — всегда JSON-массив, а не отдельный объект email. Имеет значение null, пока хотя бы один шаг проверки электронной почты не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, адрес электронной почты, данные об утечках, lifecycle[], matches[] и warnings[].

poa_verifications
object[] | null

Массив отчётов подтверждения адреса (POA) — всегда JSON-массив, а не отдельный объект poa. Имеет значение null, пока хотя бы один шаг подтверждения адреса не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, URL-адрес файла документа, орган выдачи, даты, разобранный адрес и warnings[].

document_ai_documents
object[] | null

Отчёты Document AI, сгруппированные по узлам сценария — всегда JSON-массив, а не одиночный объект. null, пока хотя бы один шаг Document AI не сформирует данные. Присутствует, только когда session_kind = user. Каждый элемент представляет собой группу узла с агрегированным status, node_id, массивом items[] с результатами по каждому документу (извлечённые данные с ключами по настроенному ключу поля) и warnings.

questionnaire_responses
object[] | null

Массив отчётов с ответами на анкеты — всегда JSON-массив, а не отдельный объект questionnaire. Имеет значение null, пока хотя бы один шаг анкеты не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, метаданные анкеты, разделы с элементами формы и ответы пользователя.

bank_verifications
object[] | null

Результаты верификации банковских счетов, по одному элементу на каждый шаг проверки банка, для проверки пользователей и верификации бизнеса. Имеет значение null, пока шаг не сформирует результат. Поле method каждого элемента указывает, как был подтверждён счёт: open_banking (вход в банк) или account_lookup (проверка счёта), либо резервные варианты statement или microdeposits, и none, если пользователь продолжил без банка до оценки какой-либо попытки (continued_without_bank). См. раздел Методы верификации счетов.

signatures
object[]

Результаты электронной подписи, по одному элементу на каждого подписанта и шаг подписания, для Проверки пользователей и Верификации бизнеса (KYB). Присутствует только в том случае, если в сценарии есть шаг электронной подписи; пустой массив, пока подписант не дойдёт до него. См. Отчёт об электронной подписи.

aml_screenings
object[] | null

Массив отчётов AML-скрининга — всегда массив JSON, а не одиночный объект aml. Имеет значение null, пока хотя бы один шаг AML не сгенерирует данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, total_hits, entity_type, hits[], score, screened_data, is_ongoing_monitoring_enabled и warnings[].

ip_analyses
object[] | null

Массив отчётов анализа устройства и IP — всегда JSON-массив, а не отдельный объект ip_analysis. Имеет значение null, пока хотя бы один шаг анализа IP не предоставит данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, данные об IP и геолокации, цифровой отпечаток устройства и warnings[]. Записи с повторяющимися значениями (node_id, ip_address, device_fingerprint) дедуплицируются на стороне сервера.

geolocation_checks
object[] | null

Массив результатов верификации местоположения, по одному на каждый шаг верификации местоположения: принятая попытка этого шага. Имеет значение null, пока шаг верификации местоположения не предоставит данные. Более ранние попытки того же шага находятся в geolocation_attempts.

geolocation_attempts
object[] | null

Каждая попытка каждого шага проверки местоположения (Location) в этой сессии, начиная с самых старых. Попытки, заменённые повторной отправкой, исключены. Сценарий, который скрывает geolocation_checks через свои атрибуты ответа, также скрывает и этот список.

database_validations
object[] | null

Массив отчётов Проверки по базам данных — всегда массив JSON, а не отдельный объект database_validation. Имеет значение null, пока хотя бы один шаг проверки по базам данных не вернёт данные. Каждый элемент представляет собой полный отчёт, включая node_id, status на уровне функции, screened_data, массив validations[] для каждого сервиса (каждый с данными из реестра source_data) и warnings[]. Поля screened_data и source_data различаются в зависимости от страны:

ARG (Аргентина): screened_data: {document_number, selfie, gender, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, date_of_death, tax_id, tax_id_type, face_match_score, sit_1_since, banks, last_position, highest_position, rejected_checks}. Использует биометрическую валидацию RENAPER со сравнением лиц. Пол определяется автоматически на основе анализа лица или имени, если он отсутствует в документе (например, в водительских удостоверениях)

BOL (Боливия): screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender}

BRA (Бразилия): screened_data: {tax_number, first_name, last_name, date_of_birth}. source_data всегда включает {identification_number, first_name, last_name, date_of_birth, lgpd_minor, minor_under_18, minor_under_16} при успешных совпадениях по CPF. При успешных запросах по совершеннолетним эти флаги устанавливаются в false. Сервис Receita Federal Consulta CPF может возвращать HTTP 422 (несовершеннолетний до 18 лет) или 451 (до 16 лет) с данными, скрытыми в соответствии с LGPD; в таких случаях source_data устанавливает соответствующие флаги несовершеннолетнего в true, включает HTTP-статус вышестоящего сервиса, а валидация на уровне полей получает значение no_match. Полный список кодов см. в разделе по Бразилии справочника Database Validation Outcome Codes.

CHL (Чили): screened_data: {personal_number, first_name, last_name, date_of_birth}. source_data: {identification_number, first_name, last_name, date_of_birth, gender}

COL (Колумбия): screened_data: {document_number, document_type, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, document_type}

CRI (Коста-Рика): screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

DOM (Доминиканская Республика): screened_data: {personal_number}. source_data: {identification_number} (возвращает только valid/invalid)

ECU (Эквадор): screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, street, formatted_address, gender, nationality, education, marital_status, spouse, mother_name, father_name, profession}

ESP (Испания): screened_data: {personal_number, document_type, expiration_date, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, document_type, expiration_date}

GTM (Гватемала): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

HND (Гондурас): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

MEX (Мексика): screened_data: {personal_number (CURP), first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender, nationality, curp_status, state_of_birth, doc_probatorio, registration_year, registration_state, registration_municipality, num_acta, crip, issuing_state_code, foreign_registry_number, folio_carta, folio_certificado}. Использует реестр актов гражданского состояния RENAPO. Отдельный сервис проверки действительности INE также доступен для MEX в качестве дополнительной поочерёдной валидации.

PAN (Панама): screened_data: {personal_number, selfie}. source_data: {identification_number}. Использует биометрическую валидацию SIB

PER (Перу): screened_data: {personal_number (DNI), first_name, last_name}. source_data: {identification_number, first_name, last_name, paternal_name, maternal_name, verification_number, verification_letter}

PRY (Парагвай): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

SLV (Сальвадор): screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

URY (Уругвай): screened_data: {personal_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

VEN (Венесуэла): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, gender, date_of_birth, document_type}

database_validation_not_performed_reason
object | null

Причина, по которой настроенная проверка по базам данных не дала результатов, в виде {code, message} плюс контекстные поля. Присутствует только в том случае, когда database_validations имеет значение null для сценария, содержащего данный шаг, что позволяет отличить вариант «реестр подтвердил» от «ничего не выполнялось». В противном случае null.

reviews
object[]
assignee
object | null

Проверяющий в Консоли, которому назначена сессия, или null, если она никому не назначена.

waiting_since
string<date-time> | null

Время, когда сессия перешла в ожидание проверки. null, если сессия не находится в статусе In Review или в вашем приложении не задан дедлайн проверки.

sla_due_at
string<date-time> | null

Срок завершения проверки. null, если сессия не находится в статусе In Review или в вашем приложении не задан дедлайн проверки.

created_at
string<date-time>

Временная метка создания сессии (ISO 8601, UTC).

expires_at
string<date-time> | null

Временная метка запланированного истечения срока действия этой сессии. Устанавливается для сессий проверки пользователей (KYC), если срок действия был настроен при создании (или когда статус Approved запускает расчёт срока действия KYC). null для сессий без настроенного срока действия, а также для типов, не использующих истечение срока (например, сессий верификации бизнеса (KYB), которым никогда не задавался expires_at).

registry_checks
object[] | null

Проверки по реестру компаний. Присутствует только в случае, если session_kind = business. Каждый элемент содержит полный payload реестра компаний.

key_people_checks
object[] | null

Агрегированные проверки ключевых лиц. Присутствует только при session_kind = business. Каждый элемент использует структуру с двумя категориями (registry, submitted, ubo_kyc_summary).

document_verifications
object[] | null

Проверки верификации документов, сгруппированные по узлам сценария. Присутствует, только если session_kind = business.

environment
enum<string>

Была ли сессия создана продакшн-приложением (live) или приложением песочницы (sandbox). Сессии в песочнице бесплатны, полностью симулируются и никогда не списывают кредиты.

Доступные опции:
live,
sandbox
sandbox_scenario
string | null

Сценарий песочницы, с которым была создана сессия. Значение null для сессий в продакшн-среде и для сессий в песочнице, созданных без сценария.

resubmissions
object[]

Возвращается только при include=resubmissions, для сессий пользователей и сессий компаний. По одной записи на каждый запрос повторной отправки, начиная с самых старых. Каждая запись содержит результаты, возвращённые повторно отправленными шагами до запроса, поэтому более ранние отправки остаются доступными для чтения. Удаление сессии удаляет все отправки.

Требовалось ли в сессии явное согласие на обработку биометрии перед захватом лица, по какой причине, а также подтверждение ответа. Только для сессий Проверки пользователей (KYC); тот же объект находится в decision webhook сессии. Значение null, если сессия не оценивалась, например в сценарии без захвата лица. Поля без зафиксированного значения равны null. Нативный SDK версии ниже 4.10.0 или SDK, не передающий свою версию, не может отобразить шаг согласия: захват лица выполняется как прежде, а сессия, требовавшая согласия, возвращает status: "pending" с reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK". См. Согласие на обработку биометрии.

investigator
object | null

Последняя проверка элемента в Investigator или null, если она никогда не проводилась. Передаётся в решении сессии V3 и бизнес-сессии (и, следовательно, в webhook status.updated).

biometric_retention
object

Время удаления активных биометрических данных этой сессии.

fraud_check
object | null

Результат вызова Fraud Check API. null для всех остальных сессий.

full_session_video
string<uri> | null

Временный URL полной видеозаписи сессии. Возвращается только тогда, когда ваша организация записывает видео всей сессии.

full_session_video_recorded_at
string<date-time> | null

Когда была сделана запись всей сессии. Возвращается только тогда, когда ваша организация записывает видео всей сессии.

Последнее изменение 7 ноября 2026 г.