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

Почему запрос не сохраняет состояние

Скрининг кошелька по запросу не записывает ничего в таблицу транзакций, поэтому этому эндпоинту не из чего отрисовать отчёт. Вместо этого вы повторно отправляете точный JSON, который вам вернул POST /v3/wallet-screening/. Didit отрисовывает этот payload в PDF и не обращается к провайдеру повторно.

Поле report_signature

Каждый ответ POST /v3/wallet-screening/ теперь содержит поле report_signature: непрозрачную подпись, привязанную к вашему приложению. Перед отрисовкой этот эндпоинт проверяет подпись. Благодаря этому вызывающая сторона не может изменить risk_score, severity, sanctions_hit или любое другое поле и получить аккуратный PDF с брендингом Didit для результата, который Didit не формировал. Всегда повторно отправляйте полное тело ответа без изменений, включая report_signature. Изменить порядок ключей можно, а менять подписанные значения нельзя.

Оплата

Провайдер не вызывается, и плата не взимается. Этот запрос только повторно отрисовывает результат, за который вы уже заплатили при вызове POST /v3/wallet-screening/.

Ошибки

Следующие шаги

Скрининг кошелька

Выполните скрининг кошелька по запросу и получите JSON-результат, который нужно повторно отправить на этот эндпоинт.

Скрининг кошельков по запросу

Обзор эндпоинта скрининга кошелька по запросу и модели результата.

Авторизации

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

Неизменённый JSON-объект, возвращённый POST /v3/wallet-screening/, включая report_signature.

Та же структура, что и в ответе POST /v3/wallet-screening/ — передайте тело этого ответа без изменений, включая report_signature.

provider
string
обязательно

Провайдер, выполнивший скрининг (например, merklescience, crystal).

screening_type
enum<string>
обязательно

Всегда WALLET_SCREENING для этого endpoint.

Доступные опции:
WALLET_SCREENING
risk_score
integer
обязательно

Нормализованная оценка риска от 0 до 100. Чем выше значение, тем выше подверженность взаимодействию с рискованными сущностями. Merkle Science оценивает адрес от 0 до 5, что соответствует значениям 0, 15, 35, 55, 75 или 95.

severity
enum<string>
обязательно

Категория риска, рассчитываемая на основе risk_score: 0-9 UNKNOWN, 10-39 LOW, 40-69 MEDIUM, 70-89 HIGH, 90-100 CRITICAL. UNKNOWN представляет собой самый низкий диапазон, а не отдельный статус отсутствия данных: risk_score 0 (типичный случай чистого адреса) означает отсутствие негативной оценки, тогда как ненулевая оценка в диапазоне 1-9 является реальным сигналом ниже уровня LOW; оценивайте risk_score, а не только диапазон. Никогда не трактуйте UNKNOWN как подтверждённый низкий риск или статус «чисто»; не отображайте его как успешное прохождение.

Доступные опции:
UNKNOWN,
LOW,
MEDIUM,
HIGH,
CRITICAL
status
enum<string>
обязательно

Статус результата скрининга.

Доступные опции:
SCREENED,
PENDING,
ERROR
summary
string
обязательно

Понятная человеку сводка результатов скрининга.

wallet_address
string
обязательно

Проверенный адрес, возвращённый в ответе.

blockchain
string
обязательно

Блокчейн, по которому проводился скрининг.

source_of_funds
object[]
обязательно

Откуда адрес получал средства с атрибуцией по сущностям. Каждая запись представляет собой детализацию экспозиции.

destination_of_funds
object[]
обязательно

Куда адрес отправлял средства, с атрибуцией по сущностям. Та же структура элементов, что и у source_of_funds, с exposure_direction = outgoing.

counterparty_connections
object[]
обязательно

Сущности, которым провайдер приписывает проверяемый адрес. Для Merkle Science они берутся из собственных тегов владельца и пользователя адреса, поэтому одна и та же сущность может появляться дважды, и они не содержат потоков средств: поля received_usd, sent_usd, received_hops и sent_hops имеют значение null, а percentage равен 0. Не принимайте решений на основе risk_level или is_direct здесь: используйте sanctions_hit, dominant_risk_category и risk_factors[].is_high_risk для итогового решения, а exposure_type в source_of_funds/destination_of_funds для определения прямого характера транзакции.

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

True, если адрес подвержен прямому или косвенному санкционному воздействию.

dominant_risk_category
string | null
обязательно

Категория высокого риска с наибольшим весом или null, если ни одна не доминирует (например, sanctioned, mixer, stolen_funds).

report_signature
string
обязательно

Непрозрачная подпись HMAC-SHA256 для этого точного результата, ограниченная областью вашего приложения. Сама по себе не имеет значения — отправьте повторно полное тело ответа без изменений и включая это поле в POST /v3/wallet-screening/pdf/, чтобы сгенерировать его в виде PDF. Endpoint для PDF отклоняет запрос с ошибкой 400, если report_signature отсутствует или если какое-либо подписанное поле (например, risk_score, severity, sanctions_hit) было изменено перед повторной отправкой.

transaction_hash
string | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

block_timestamp
string | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

total_value_usd
number | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

fee_usd
number | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

sender_rows
object[]

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

receiver_rows
object[]

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

transaction_flows
object[]

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

transaction_flows_status
string | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

transaction_flows_error
string | null

Поле скрининга транзакций, общее со структурой результата. Всегда null в результатах скрининга кошельков.

network_nodes
object[]

Узлы графа экспозиции для скрининга транзакций. Пусто для результата скрининга кошелька.

network_edges
object[]

Рёбра графа экспозиции для скрининга транзакций. Пусто для результата скрининга кошелька.

pep_counterparty
boolean | null

Статус политически значимого лица (PEP). null, если данных о PEP нет (что относится ко всем текущим результатам, так как ни один провайдер их не возвращает); false только при явном отрицательном результате скрининга. Не интерпретируйте null как завершённую проверку PEP.

risk_factors
object[]

Ранжированное объяснение risk_score: что привело к этому вердикту. Провайдеры оценивают адрес по собственной модели и возвращают только вердикт (Merkle Science возвращает целое число 0-5), поэтому сама по себе оценка не дает практического понимания. Отсортировано: сначала с высоким риском, затем по значению, прошедшему через каждый драйвер, и ограничено пятью наиболее значимыми; source_of_funds и destination_of_funds всегда содержат полную детализацию. Высокий risk_score без записей с флагом is_high_risk означает, что провайдер не обнаружил совпадений по санкциям или атрибутированным сущностям и оценил адрес исключительно на основе своей собственной модели подверженности риску, и summary указывает на это явно.

raw_response
object

Собственный payload провайдера. Его формат зависит от провайдера и может изменяться без предупреждения: считывайте нормализованные поля вместо его парсинга.

Ответ

Сформированный PDF-документ, возвращаемый напрямую как бинарные данные application/pdf — без обёртки JSON.

The response is of type file.

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