> ## 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.

# 지갑 스크리닝 API: 온디맨드 암호화폐 AML 점검

> 거래를 생성하지 않고 단일 암호화폐 지갑 주소의 AML 위험을 스크리닝합니다. Didit의 자금 출처, 제재 노출, 위험 점수 제공. 호출당 $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 ko/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은 Marketplace를
        통해 추가된 Elliptic 또는 Chainalysis BYOK 연결에서만 사용할 수 있습니다. 거래 테이블에는 아무것도 기록되지
        않습니다. 성공한 스크리닝 건당 1회의 AML 모니터링 사용량이 청구됩니다(샌드박스 애플리케이션에는 청구되지 않음).
      operationId: screenWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallet_address
              properties:
                wallet_address:
                  type: string
                  description: >-
                    스크리닝할 암호화폐 주소 또는 네트워크 식별자입니다. 선택한 네트워크와 일치해야 합니다(예: EVM 체인의
                    경우 `0x`로 시작하는 40자 16진수 주소). 별칭: `address`.
                  example: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                blockchain:
                  type: string
                  description: >-
                    선택적 네트워크 식별자입니다. 생략 시 주소 형식에서 네트워크를 판별합니다. `bc1`, `1`, `3`
                    주소는 비트코인(BTC), `T` 주소는 트론(TRX), base58 공개 키는 솔라나(SOL)입니다.
                    `0x` 주소는 모든 EVM 네트워크에서 유효하므로, 이에 대해 `blockchain`을 생략하면
                    `candidate_chains`의 후보 네트워크와 함께 422 응답을 반환합니다. 관리형 스크리닝은
                    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는 레거시 이더리움 별칭이며 다중 네트워크 검색이 아닙니다. 연결된 제공업체의 지원
                    범위는 다를 수 있습니다. 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`, 그리고 `direction`과 관계없이 항상 둘 다 반환되는
                    `source_of_funds`/`destination_of_funds` 분석 내역을 변경하지 않습니다.
                    따라서 `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` 생략, 또는 Elliptic이나 Chainalysis
            BYOK Marketplace 연동이 없는 LIGHTNING.
        '401':
          description: '`x-api-key`가 누락되었거나 유효하지 않습니다.'
        '409':
          description: >-
            애플리케이션에 구성된 AML 제공업체가 없거나, 구성된 제공업체가 아직 지갑 스크리닝을 지원하지 않습니다. 먼저 거래
            모니터링을 구성하세요.
        '422':
          description: >-
            모든 EVM 네트워크가 공유하는 `0x` 주소에 대해 `blockchain`이 생략되었습니다. 아무것도 스크리닝되거나
            청구되지 않았습니다. `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: 이 endpoint의 경우 항상 `WALLET_SCREENING`입니다.
        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 범위의 0이 아닌 점수는 실제이지만 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). 노출이 직접적인지 간접적인지만
                  보고하는 Merkle Science의 경우 항상 `null`이므로 `exposure_type`을 사용하십시오.
              description:
                type: string
                nullable: true
                description: 제공자가 엔티티에 지정한 라벨의 `entity_type / entity_subtype`.
              is_direct:
                type: boolean
                description: '`exposure_type`이 `direct`인 경우 true입니다.'
              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: >-
            주소가 자금을 전송한 대상이며, 엔티티별로 귀속됩니다. `exposure_direction` = `outgoing`인
            `source_of_funds`와 동일한 항목 형태를 갖습니다.
          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). 노출이 직접적인지 간접적인지만
                  보고하는 Merkle Science의 경우 항상 `null`이므로 `exposure_type`을 사용하십시오.
              description:
                type: string
                nullable: true
                description: 제공자가 엔티티에 지정한 라벨의 `entity_type / entity_subtype`.
              is_direct:
                type: boolean
                description: '`exposure_type`이 `direct`인 경우 true입니다.'
              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`를 사용하고, 직접성 여부에는
            `source_of_funds`/`destination_of_funds`의 `exposure_type`을 사용하세요.
          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: 제공업체에서 보고한 경우, 수신 측 엔티티까지의 홉 수입니다.
              sent_hops:
                type: integer
                nullable: true
                description: 제공업체에서 보고한 경우, 송신 측 엔티티까지의 홉 수입니다.
              percentage:
                type: number
                description: 제공업체가 보고하는 경우 주소의 노출 점유율이며, 그렇지 않은 경우 0입니다.
              is_direct:
                type: boolean
                description: 연결이 거래 상대방이 아닌 귀속 정보인 Merkle Science의 경우 항상 `true`입니다.
              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) 노출 여부입니다. PEP 결과가 없는 경우 `null`이며, 현재 어떤 제공업체도 이를 보고하지
            않으므로 모든 결과가 이에 해당합니다. 명시적인 부정적 스크리닝 결과에 대해서만 `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 사이의 정수 반환), 점수만으로는 조치를
            취하기 어렵습니다. 고위험 항목이 먼저 정렬되고, 그 다음 각 요인을 통해 이동한 금액 순으로 정렬되며 상위 5개로
            제한됩니다. `source_of_funds` 및 `destination_of_funds`에는 항상 전체 내역이 포함됩니다.
            `is_high_risk` 항목이 없는데 `risk_score`가 높다면 제공자가 제재 또는 주소에 귀속된 엔티티 일치를
            보고하지 않았으며 순전히 자체 위험 노출 모델에 따라 주소 등급을 매겼음을 의미합니다. `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: >-
                  두 방향을 합산한 주소의 전체 스크리닝 볼륨 점유율입니다. 방향별로 정규화되는
                  `source_of_funds`/`destination_of_funds` 내부의 `percentage`와
                  다릅니다. 전체 목록에 걸쳐 비교 및 합산이 가능합니다.
              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 서명입니다. 단독으로는 의미가
            없으며, PDF로 렌더링하려면 이 필드를 포함하여 수정되지 않은 전체 응답 본문을 `POST
            /v3/wallet-screening/pdf/`로 다시 전송해야 합니다. `report_signature`가 누락되었거나
            다시 전송하기 전에 서명된 필드(예: `risk_score`, `severity`, `sanctions_hit`)가 수정된
            경우, PDF endpoint에서는 요청을 `400`으로 거부합니다.
      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: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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