> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Screen Wallet API: проверка криптокошелька на AML

> Didit проверяет адрес криптокошелька на AML-риски без создания транзакции: источник средств, санкции, оценка риска. Оплата за вызов от $0.02.



Промпт для API скрининга кошельков
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Screen a single crypto wallet address for AML risk through the Didit Management API, without creating a transaction.

Endpoint:
POST https://verification.didit.me/v3/wallet-screening/

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Run on-demand AML screening on one crypto address and return a normalised risk result (risk_score, severity, sanctions_hit, source/destination of funds, counterparty connections). Nothing is written to the transactions table.

When to call:
\- Before onboarding a customer's deposit/withdrawal wallet, to pre-check exposure.
\- Any time you need a standalone risk read on an address and do NOT have (or do not want to record) a transaction.
\- For transaction-coupled monitoring instead, use POST /v3/transactions/ with currency_kind = "crypto".

Prerequisites:
\- Transaction monitoring must be configured for the application with a managed provider or an existing provider key. Otherwise the call returns 409.

Request body (application/json):
\{
"wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",  // required; alias: address
"blockchain": "ETH",   // required; one of BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM, HBAR, USDT, USDC, or a common network name such as POLYGON or BSC; alias: currency
"direction": "inbound" // optional; inbound | outbound | deposit | withdrawal
}

Example call:
curl -X POST "https://verification.didit.me/v3/wallet-screening/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"wallet_address":"0x94f1b9b64e2932f6a2db338f616844400cd58e8a","blockchain":"ETH"}'

What to read from the response:
\- risk_score (0-100, higher = riskier) and severity (UNKNOWN | LOW | MEDIUM | HIGH | CRITICAL).
\- sanctions_hit (boolean) and dominant_risk_category.
\- source_of_funds / destination_of_funds / counterparty_connections for the exposure breakdown.

Billing:
\- One AML monitoring usage is billed per successful screening. Sandbox applications are not billed.

Failure modes:
\- 400 - malformed wallet address, missing wallet_address, or unsupported blockchain.
\- 401 - missing or malformed x-api-key.
\- 409 - no AML provider configured for the application; configure transaction monitoring first.
\- 502 - provider could not complete the screening; retry later.

For automatic, transaction-coupled crypto screening, see /transaction-monitoring/aml-screening.`

\</pre>



      
      

Вставьте в



## OpenAPI

````yaml ru/openapi-25.json POST /v3/wallet-screening/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/wallet-screening/:
    post:
      tags:
        - Transactions
      summary: Выполнить скрининг адреса
      description: >-
        Запустить AML-скрининг по запросу для отдельного криптокошелька/адреса
        без создания транзакции. Определяет настроенного для вашего приложения
        провайдера блокчейн-аналитики, синхронно проверяет адрес и возвращает
        нормализованный результат риска. Вариант LIGHTNING доступен только при
        наличии подключения BYOK от Elliptic или Chainalysis, добавленного через
        Marketplace. В таблицу транзакций ничего не записывается. За каждый
        успешный скрининг списывается одно использование AML-мониторинга (для
        приложений в песочнице плата не взимается).
      operationId: screenWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallet_address
              properties:
                wallet_address:
                  type: string
                  description: >-
                    Криптоадрес или сетевой идентификатор для скрининга. Должен
                    соответствовать выбранной сети (например, 40-значный
                    шестнадцатеричный адрес с префиксом `0x` для сетей EVM).
                    Псевдоним: `address`.
                  example: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                blockchain:
                  type: string
                  description: >-
                    Необязательный идентификатор сети. Если он опущен, сеть
                    определяется по формату адреса: адреса `bc1`, `1` и `3`
                    относятся к Bitcoin (BTC), адреса `T` относятся к Tron
                    (TRX), а открытые ключи base58 относятся к Solana (SOL).
                    Адрес `0x` действителен во всех сетях EVM, поэтому, если для
                    него не указан параметр `blockchain`, возвращается ответ 422
                    со списком возможных сетей в `candidate_chains`. Управляемый
                    скрининг поддерживает BTC, ETH, LTC, XRP, BCH, DOGE, TRX,
                    SOL, MATIC, BNB, BASE (Base), OP (Optimism), ARB (Arbitrum
                    One), AVAX (Avalanche C-Chain), ADA (Cardano), XLM (Stellar)
                    и HBAR (Hedera). USDT и USDC являются устаревшими
                    псевдонимами Ethereum, а не мультисетевым поиском. Покрытие
                    подключённых провайдеров варьируется. Для LIGHTNING
                    требуется поддерживаемый подключённый провайдер. Скрининг
                    для CELO (Celo), MODE (Mode) и PLUME (Plume) выполняется
                    через подключённый аккаунт TRM Labs; управляемый скрининг
                    возвращает для них 400. Псевдоним: `currency`.
                  enum:
                    - BTC
                    - LIGHTNING
                    - ETH
                    - LTC
                    - XRP
                    - BCH
                    - DOGE
                    - TRX
                    - SOL
                    - MATIC
                    - BNB
                    - USDT
                    - USDC
                    - BASE
                    - OP
                    - ARB
                    - AVAX
                    - ADA
                    - XLM
                    - HBAR
                    - CELO
                    - MODE
                    - PLUME
                  example: ETH
                direction:
                  type: string
                  description: >-
                    Необязательно. Проверяется ли адрес как входящий (депозит)
                    или исходящий (вывод) контрагент. Принимает значения
                    `inbound`, `outbound`, `deposit` или `withdrawal`. По
                    умолчанию используется нейтральный скрининг перед переводом,
                    если параметр не указан. Это передается провайдеру
                    исключительно в качестве контекста; это не влияет на
                    возвращаемые `risk_score`, `severity` или детализацию
                    `source_of_funds`/`destination_of_funds`, которые
                    возвращаются всегда вне зависимости от `direction`. Таким
                    образом, изменение или пропуск `direction` не требует
                    повторного скрининга адреса.
                  enum:
                    - inbound
                    - outbound
                    - deposit
                    - withdrawal
            example:
              wallet_address: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
              blockchain: ETH
      responses:
        '200':
          description: Нормализованный результат скрининга кошелька.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletScreeningResult'
              example:
                provider: merklescience
                screening_type: WALLET_SCREENING
                risk_score: 95
                severity: CRITICAL
                status: SCREENED
                summary: >-
                  Merkle Science risk: Critical (5/5). SANCTIONS HIT. Dominant
                  risk: sanctioned. Driven by: the address is attributed to
                  Sanctions / OFAC (Example Sanctions)
                wallet_address: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                transaction_hash: null
                blockchain: ETH
                block_timestamp: null
                total_value_usd: null
                fee_usd: null
                sender_rows: []
                receiver_rows: []
                transaction_flows: []
                transaction_flows_status: null
                transaction_flows_error: null
                source_of_funds:
                  - category: sanctioned
                    percentage: 100
                    amount_usd: 9813695
                    entity_name: Example Sanctions
                    entity_type: Sanctions
                    entity_subtype: OFAC
                    hops: null
                    description: Sanctions / OFAC
                    is_direct: true
                    exposure_direction: incoming
                    exposure_type: direct
                    provider_entity_id: '118885'
                    provider_entity_type_id: '30'
                    provider_entity_subtype_id: '125'
                    country: ''
                    raw_amount: null
                    raw_currency: null
                destination_of_funds:
                  - category: defi
                    percentage: 84.824453
                    amount_usd: 7783414.38
                    entity_name: Example DeFi 7
                    entity_type: DeFi
                    entity_subtype: Bridges
                    hops: null
                    description: DeFi / Bridges
                    is_direct: false
                    exposure_direction: outgoing
                    exposure_type: indirect
                    provider_entity_id: '118459'
                    provider_entity_type_id: '33'
                    provider_entity_subtype_id: '143'
                    country: ''
                    raw_amount: null
                    raw_currency: null
                  - category: defi
                    percentage: 15.175547
                    amount_usd: 1392494.37
                    entity_name: Example DeFi 2
                    entity_type: DeFi
                    entity_subtype: Yield Aggregator
                    hops: null
                    description: DeFi / Yield Aggregator
                    is_direct: false
                    exposure_direction: outgoing
                    exposure_type: indirect
                    provider_entity_id: '90192'
                    provider_entity_type_id: '33'
                    provider_entity_subtype_id: '142'
                    country: ''
                    raw_amount: null
                    raw_currency: null
                counterparty_connections:
                  - entity_name: Example Sanctions
                    entity_type: Sanctions
                    entity_subtype: OFAC
                    risk_level: critical
                    categories:
                      - sanctioned
                    received_usd: null
                    sent_usd: null
                    received_hops: null
                    sent_hops: null
                    percentage: 0
                    is_direct: true
                    country: null
                    provider_entity_id: null
                  - entity_name: Example Sanctions
                    entity_type: Sanctions
                    entity_subtype: OFAC
                    risk_level: critical
                    categories:
                      - sanctioned
                    received_usd: null
                    sent_usd: null
                    received_hops: null
                    sent_hops: null
                    percentage: 0
                    is_direct: true
                    country: null
                    provider_entity_id: null
                network_nodes: []
                network_edges: []
                sanctions_hit: true
                pep_counterparty: null
                dominant_risk_category: sanctioned
                risk_factors:
                  - source: attribution
                    category: sanctioned
                    label: Sanctions / OFAC
                    entity_name: Example Sanctions
                    direction: attribution
                    exposure_type: attribution
                    amount_usd: null
                    percentage: 0
                    is_high_risk: true
                    description: >-
                      the address is attributed to Sanctions / OFAC (Example
                      Sanctions)
                  - source: exposure
                    category: sanctioned
                    label: Sanctions / OFAC
                    entity_name: Example Sanctions
                    direction: incoming
                    exposure_type: direct
                    amount_usd: 9813695
                    percentage: 51.679304
                    is_high_risk: true
                    description: >-
                      51.6793% direct incoming exposure to Sanctions / OFAC
                      (Example Sanctions)
                  - source: exposure
                    category: defi
                    label: DeFi / Bridges
                    entity_name: Example DeFi 7
                    direction: outgoing
                    exposure_type: indirect
                    amount_usd: 7783414.38
                    percentage: 40.987766
                    is_high_risk: false
                    description: >-
                      40.9878% indirect outgoing exposure to DeFi / Bridges
                      (Example DeFi 7)
                  - source: exposure
                    category: defi
                    label: DeFi / Yield Aggregator
                    entity_name: Example DeFi 2
                    direction: outgoing
                    exposure_type: indirect
                    amount_usd: 1392494.37
                    percentage: 7.33293
                    is_high_risk: false
                    description: >-
                      7.33293% indirect outgoing exposure to DeFi / Yield
                      Aggregator (Example DeFi 2)
                raw_response:
                  ...: provider-specific details
                report_signature: <hmac-sha256 over the result, scoped to your application>
        '400':
          description: >-
            Ошибка валидации — некорректный адрес кошелька, отсутствует
            `wallet_address`, неподдерживаемый `blockchain`, `blockchain` не
            указан для адреса, формат которого не определяет сеть, или LIGHTNING
            без подключения к Elliptic или Chainalysis BYOK Marketplace.
        '401':
          description: Отсутствует или недействителен `x-api-key`.
        '409':
          description: >-
            Для приложения не настроен AML-провайдер, либо настроенный провайдер
            пока не поддерживает скрининг кошельков. Сначала настройте
            мониторинг транзакций.
        '422':
          description: >-
            `blockchain` опущен для адреса `0x`, который является общим для всех
            сетей EVM. Скрининг не проводится, и плата не взимается; отправьте
            запрос повторно, указав в `blockchain` одну из сетей из
            `candidate_chains`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  blockchain:
                    type: array
                    items:
                      type: string
                    example:
                      - >-
                        A 0x address is valid on every EVM chain. Send
                        blockchain as one of: ETH, BNB, MATIC, BASE, ARB, OP,
                        CELO, MODE, PLUME.
                  candidate_chains:
                    type: array
                    items:
                      type: string
                    example:
                      - ETH
                      - BNB
                      - MATIC
                      - BASE
                      - ARB
                      - OP
                      - CELO
                      - MODE
                      - PLUME
        '502':
          description: AML-провайдер не смог завершить скрининг. Повторите попытку позже.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/wallet-screening/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                "blockchain": "ETH"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.wallet_screening.screen(
                wallet_address="0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                blockchain="ETH",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.walletScreening.screen({
              wallet_address: "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
              blockchain: "ETH",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.WalletScreening.Screen(ctx, didit.WalletScreeningScreenParams{\n\tWalletAddress: \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n\tBlockchain:    didit.Some(didit.WalletScreeningScreenParamsBlockchain(\"ETH\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.WalletScreeningScreenParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.walletScreening().screen(WalletScreeningScreenParams.builder()
                    .walletAddress("0x94f1b9b64e2932f6a2db338f616844400cd58e8a")
                    .blockchain(WalletScreeningScreenParams.Blockchain.of("ETH"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->walletScreening->screen([
                'wallet_address' => '0x94f1b9b64e2932f6a2db338f616844400cd58e8a',
                'blockchain' => 'ETH',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.wallet_screening.screen(
              wallet_address: "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
              blockchain: "ETH"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.WalletScreening.ScreenAsync(new
            WalletScreeningScreenParams

            {
                WalletAddress = "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                Blockchain = new WalletScreeningScreenParamsBlockchain("ETH"),
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WalletScreeningResult:
      type: object
      properties:
        provider:
          type: string
          description: >-
            Провайдер, выполнивший скрининг (например, `merklescience`,
            `crystal`).
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: Всегда `WALLET_SCREENING` для этого endpoint.
        risk_score:
          type: integer
          description: >-
            Нормализованная оценка риска от 0 до 100. Чем выше значение, тем
            выше подверженность взаимодействию с рискованными сущностями. Merkle
            Science оценивает адрес от 0 до 5, что соответствует значениям 0,
            15, 35, 55, 75 или 95.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            Категория риска, рассчитываемая на основе `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` как подтверждённый низкий риск или статус
            «чисто»; не отображайте его как успешное прохождение.
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: Статус результата скрининга.
        summary:
          type: string
          description: Понятная человеку сводка результатов скрининга.
        wallet_address:
          type: string
          description: Проверенный адрес, возвращённый в ответе.
        transaction_hash:
          type: string
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        blockchain:
          type: string
          description: Блокчейн, по которому проводился скрининг.
        block_timestamp:
          type: string
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        total_value_usd:
          type: number
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        fee_usd:
          type: number
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        sender_rows:
          type: array
          items:
            type: object
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            пустое в результатах скрининга кошельков.
        receiver_rows:
          type: array
          items:
            type: object
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            пустое в результатах скрининга кошельков.
        transaction_flows:
          type: array
          items:
            type: object
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            пустое в результатах скрининга кошельков.
        transaction_flows_status:
          type: string
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        transaction_flows_error:
          type: string
          nullable: true
          description: >-
            Поле скрининга транзакций, общее со структурой результата. Всегда
            `null` в результатах скрининга кошельков.
        source_of_funds:
          type: array
          description: >-
            Откуда адрес получал средства с атрибуцией по сущностям. Каждая
            запись представляет собой детализацию экспозиции.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Нормализованная категория риска, например `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`.
              percentage:
                type: number
                description: Доля от общей экспозиции в данном направлении, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Сумма в USD, приписанная этому субъекту.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Название атрибутированной сущности, например биржи, миксера
                  или подсанкционной группы.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Тип сущности провайдера (например, `Exchange`, `DeFi`,
                  `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Более детализированный подтип (например, `Mandatory KYC and
                  AML`, `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Количество переходов до сущности (1 для прямого контрагента),
                  если провайдер его возвращает. Всегда `null` для Merkle
                  Science, который сообщает только о том, является ли экспозиция
                  прямой или косвенной: используйте `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, как сущность помечена
                  провайдером.
              is_direct:
                type: boolean
                description: True, когда `exposure_type` имеет значение `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Поступили ли средства от этой сущности (`incoming`) или были
                  отправлены этой сущности (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: >-
                  `direct` (1 переход) или `indirect` (несколько переходов)
                  экспозиция.
              provider_entity_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для сущности.
              provider_entity_type_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  Основная страна субъекта в формате ISO 3166-1 alpha-2. Пусто
                  или `null`, если поставщик её не знает.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Сумма в собственной единице измерения актива, когда поставщик
                  сообщает её.
              raw_currency:
                type: string
                nullable: true
                description: Единица измерения `raw_amount`, если провайдер сообщает её.
        destination_of_funds:
          type: array
          description: >-
            Куда адрес отправлял средства, с атрибуцией по сущностям. Та же
            структура элементов, что и у `source_of_funds`, с
            `exposure_direction` = `outgoing`.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Нормализованная категория риска, например `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`.
              percentage:
                type: number
                description: Доля от общей экспозиции в данном направлении, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Сумма в USD, приписанная этому субъекту.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Название атрибутированной сущности, например биржи, миксера
                  или подсанкционной группы.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Тип сущности провайдера (например, `Exchange`, `DeFi`,
                  `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Более детализированный подтип (например, `Mandatory KYC and
                  AML`, `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Количество переходов до сущности (1 для прямого контрагента),
                  если провайдер его возвращает. Всегда `null` для Merkle
                  Science, который сообщает только о том, является ли экспозиция
                  прямой или косвенной: используйте `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, как сущность помечена
                  провайдером.
              is_direct:
                type: boolean
                description: True, когда `exposure_type` имеет значение `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Поступили ли средства от этой сущности (`incoming`) или были
                  отправлены этой сущности (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: >-
                  `direct` (1 переход) или `indirect` (несколько переходов)
                  экспозиция.
              provider_entity_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для сущности.
              provider_entity_type_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  Основная страна субъекта в формате ISO 3166-1 alpha-2. Пусто
                  или `null`, если поставщик её не знает.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Сумма в собственной единице измерения актива, когда поставщик
                  сообщает её.
              raw_currency:
                type: string
                nullable: true
                description: Единица измерения `raw_amount`, если провайдер сообщает её.
        counterparty_connections:
          type: array
          description: >-
            Сущности, которым провайдер приписывает проверяемый адрес. Для
            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` для определения прямого
            характера транзакции.
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: Название связанной сущности.
              entity_type:
                type: string
                nullable: true
                description: Тип сущности провайдера.
              entity_subtype:
                type: string
                nullable: true
                description: Подтип сущности провайдера.
              risk_level:
                type: string
                description: >-
                  В нижнем регистре и зависит от провайдера. Для Merkle Science
                  это собственная степень риска адреса от 0 до 5 (`no_risk`,
                  `low`, `medium_low`, `medium`, `high`, `critical`), повышаемая
                  до `high`, если категория сущности относится к высокому риску;
                  это не отдельная оценка самой сущности.
              categories:
                type: array
                items:
                  type: string
                description: Нормализованные категории риска сущности.
              received_usd:
                type: number
                nullable: true
                description: >-
                  Сумма в USD, полученная от субъекта, если провайдер сообщает
                  эти данные.
              sent_usd:
                type: number
                nullable: true
                description: >-
                  Сумма в USD, отправленная субъекту, если провайдер сообщает
                  эти данные.
              received_hops:
                type: integer
                nullable: true
                description: >-
                  Количество переходов (hops) до сущности на стороне получателя,
                  если провайдер передаёт эти данные.
              sent_hops:
                type: integer
                nullable: true
                description: >-
                  Количество переходов (hops) до сущности на стороне
                  отправителя, если провайдер передаёт эти данные.
              percentage:
                type: number
                description: >-
                  Доля экспозиции адреса, если поставщик сообщает это значение;
                  в противном случае 0.
              is_direct:
                type: boolean
                description: >-
                  Всегда `true` для Merkle Science, чьи связи являются
                  атрибуциями, а не контрагентами.
              country:
                type: string
                nullable: true
                description: Страна юридического лица, если известна.
              provider_entity_id:
                type: string
                nullable: true
                description: Собственный идентификатор провайдера для сущности.
        network_nodes:
          type: array
          items:
            type: object
          description: >-
            Узлы графа экспозиции для скрининга транзакций. Пусто для результата
            скрининга кошелька.
        network_edges:
          type: array
          items:
            type: object
          description: >-
            Рёбра графа экспозиции для скрининга транзакций. Пусто для
            результата скрининга кошелька.
        sanctions_hit:
          type: boolean
          description: >-
            True, если адрес подвержен прямому или косвенному санкционному
            воздействию.
        pep_counterparty:
          type: boolean
          description: >-
            Статус политически значимого лица (PEP). `null`, если данных о PEP
            нет (что относится ко всем текущим результатам, так как ни один
            провайдер их не возвращает); `false` только при явном отрицательном
            результате скрининга. Не интерпретируйте `null` как завершённую
            проверку PEP.
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            Категория высокого риска с наибольшим весом или `null`, если ни одна
            не доминирует (например, `sanctioned`, `mixer`, `stolen_funds`).
        risk_factors:
          type: array
          description: >-
            Ранжированное объяснение `risk_score`: что привело к этому вердикту.
            Провайдеры оценивают адрес по собственной модели и возвращают только
            вердикт (Merkle Science возвращает целое число 0-5), поэтому сама по
            себе оценка не дает практического понимания. Отсортировано: сначала
            с высоким риском, затем по значению, прошедшему через каждый
            драйвер, и ограничено пятью наиболее значимыми; `source_of_funds` и
            `destination_of_funds` всегда содержат полную детализацию. Высокий
            `risk_score` без записей с флагом `is_high_risk` означает, что
            провайдер не обнаружил совпадений по санкциям или атрибутированным
            сущностям и оценил адрес исключительно на основе своей собственной
            модели подверженности риску, и `summary` указывает на это явно.
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution` показывает, чем, по данным провайдера, является
                  сам адрес (его собственный тег или кластер); `exposure`
                  показывает, куда фактически переместились его средства.
              category:
                type: string
                description: >-
                  Нормализованная категория риска, тот же словарь, что и в
                  детализации подверженности рискам.
              label:
                type: string
                description: >-
                  Собственная формулировка фактора от провайдера (например,
                  `Gambling / Crypto only`), которую вы также увидите в панели
                  управления провайдера.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Связанная с драйвером сущность, например игорный сайт или
                  биржа.
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  Направление движения средств, `attribution`, если триггером
                  является собственный тег адреса, или `unknown`, если провайдер
                  не сообщил направление.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct` (1 переход) или `indirect` (несколько переходов),
                  `attribution` для собственного тега адреса или `unknown`,
                  когда провайдер не указал, на скольких переходах находится
                  контрагент. Считайте `unknown` неклассифицированным, а не
                  `direct`.
              amount_usd:
                type: number
                format: float
                nullable: true
                description: Сумма в USD, относящаяся к этому драйверу.
              percentage:
                type: number
                format: float
                description: >-
                  Доля от ОБЩЕГО проверенного объёма адреса в обоих направлениях
                  суммарно, в отличие от `percentage` внутри
                  `source_of_funds`/`destination_of_funds`, который
                  нормализуется по каждому направлению отдельно. Сопоставима и
                  суммируема по всему списку.
              is_high_risk:
                type: boolean
                description: >-
                  Относится ли категория к тем, которые Didit считает
                  высокорисковыми (`sanctioned`, `mixer`, `stolen_funds`,
                  `ransomware`, `scam`, `darknet_market`, `terrorist_financing`,
                  `child_exploitation`, `hacked_exchange`, `high_risk_exchange`,
                  `seized_funds`).
              description:
                type: string
                description: >-
                  Однострочное представление фактора, например: `9.01% indirect
                  outgoing exposure to Gambling / Crypto only (Example
                  Gambling)`.
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            Собственный payload провайдера. Его формат зависит от провайдера и
            может изменяться без предупреждения: считывайте нормализованные поля
            вместо его парсинга.
        report_signature:
          type: string
          description: >-
            Непрозрачная подпись HMAC-SHA256 для этого точного результата,
            ограниченная областью вашего приложения. Сама по себе не имеет
            значения — отправьте повторно полное тело ответа без изменений и
            включая это поле в `POST /v3/wallet-screening/pdf/`, чтобы
            сгенерировать его в виде PDF. Endpoint для PDF отклоняет запрос с
            ошибкой `400`, если `report_signature` отсутствует или если
            какое-либо подписанное поле (например, `risk_score`, `severity`,
            `sanctions_hit`) было изменено перед повторной отправкой.
      required:
        - provider
        - screening_type
        - risk_score
        - severity
        - status
        - summary
        - wallet_address
        - blockchain
        - sanctions_hit
        - dominant_risk_category
        - source_of_funds
        - destination_of_funds
        - counterparty_connections
        - report_signature
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.