> ## 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 de cribratge de carteres: AML cripto sota demanda

> Cribra una cartera cripto amb Didit per risc AML, sense crear transaccions. Origen dels fons, sancions i puntuació de risc. Des de $0.02 per crida.



Prompt de l'API de cribratge de carteres
        Copia el prompt al porta-retalls



      
      

\<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>



      
      

Enganxa a



## OpenAPI

````yaml ca/openapi-25.json POST /v3/wallet-screening/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/wallet-screening/:
    post:
      tags:
        - Transactions
      summary: Fes el cribratge d'una adreça de cartera
      description: >-
        Executa un cribratge AML sota demanda per a una única cartera o adreça
        cripto sense crear cap transacció. Resol el proveïdor d'anàlisi de
        blockchain configurat a la teva aplicació, fa el cribratge de l'adreça
        de manera síncrona i retorna el resultat de risc normalitzat. LIGHTNING
        només està disponible amb una connexió BYOK d'Elliptic o Chainalysis
        afegida a través del Marketplace. No s'escriu res a la taula de
        transaccions. Es factura un ús de monitoratge AML per cada cribratge
        satisfactori (les aplicacions de sandbox no es facturen).
      operationId: screenWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallet_address
              properties:
                wallet_address:
                  type: string
                  description: >-
                    L'adreça de criptomoneda o l'identificador de xarxa que cal
                    analitzar. Ha de coincidir amb la xarxa seleccionada (p.
                    ex., una adreça de 40 caràcters hexadecimals amb el prefix
                    `0x` per a cadenes EVM). Àlies: `address`.
                  example: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                blockchain:
                  type: string
                  description: >-
                    Identificador de xarxa opcional. Si s'omet, la xarxa es
                    llegeix a partir del format de l'adreça: les adreces `bc1`,
                    `1` i `3` són Bitcoin (BTC), les adreces `T` són Tron (TRX)
                    i les claus públiques base58 són Solana (SOL). Una adreça
                    `0x` és vàlida a totes les xarxes EVM, de manera que ometre
                    `blockchain` per a aquesta respon 422 amb les xarxes
                    candidates a `candidate_chains`. El cribratge gestionat
                    admet 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) i HBAR
                    (Hedera). USDT i USDC són àlies heretats d'Ethereum, no
                    cerques multixarxa. La cobertura de proveïdors connectats
                    varia. LIGHTNING requereix un proveïdor connectat
                    compatible. CELO (Celo), MODE (Mode) i PLUME (Plume) es
                    cribren mitjançant un compte connectat de TRM Labs; el
                    cribratge gestionat respon 400 per a aquests. Àlies:
                    `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: >-
                    Opcional. Indica si l'adreça s'està cribrant com a
                    contrapart entrant (dipòsit) o sortint (retirada). Accepta
                    `inbound`, `outbound`, `deposit` o `withdrawal`. Per defecte
                    aplica un cribratge neutre previ a la transferència si
                    s'omet. Això només es passa al proveïdor com a context; no
                    canvia el `risk_score`, la `severity` ni el desglossament de
                    `source_of_funds`/`destination_of_funds` retornats, que es
                    retornen sempre tots dos independentment de `direction`. Per
                    tant, canviar o ometre `direction` no requereix tornar a
                    cribrar una adreça.
                  enum:
                    - inbound
                    - outbound
                    - deposit
                    - withdrawal
            example:
              wallet_address: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
              blockchain: ETH
      responses:
        '200':
          description: El resultat normalitzat del cribratge de carteres.
          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: >-
            Error de validació — adreça de cartera mal formada, falta
            `wallet_address`, `blockchain` no admès, `blockchain` omès per a una
            adreça el format de la qual no especifica cap xarxa, o LIGHTNING
            sense una connexió del Marketplace BYOK d'Elliptic o Chainalysis.
        '401':
          description: Falta l'`x-api-key` o no és vàlid.
        '409':
          description: >-
            No hi ha cap proveïdor d'AML configurat per a l'aplicació, o el
            proveïdor configurat encara no admet el cribratge de carteres.
            Configura primer el monitoratge de transaccions.
        '422':
          description: >-
            `blockchain` omès per a una adreça `0x`, que comparteixen totes les
            xarxes EVM. No s'analitza ni es factura res; torna-ho a enviar amb
            `blockchain` establert a una de les `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: >-
            El proveïdor d'AML no ha pogut completar el cribratge. Torna-ho a
            provar més tard.
      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: >-
            Proveïdor que ha dut a terme el cribratge (p. ex. `merklescience`,
            `crystal`).
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: Sempre `WALLET_SCREENING` per a aquest endpoint.
        risk_score:
          type: integer
          description: >-
            Puntuació de risc normalitzada de 0 a 100. Un valor més alt indica
            una exposició més gran a entitats de risc. Merkle Science qualifica
            una adreça de 0 a 5, la qual cosa es correspon amb 0, 15, 35, 55, 75
            o 95.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            Grup de risc derivat de `risk_score`: `0-9` UNKNOWN, `10-39` LOW,
            `40-69` MEDIUM, `70-89` HIGH, `90-100` CRITICAL. `UNKNOWN` és la
            franja més baixa, no un estat independent sense dades: un
            `risk_score` de 0 (el cas habitual d'una adreça neta) significa
            sense avaluació adversa, mentre que una puntuació diferent de zero
            en l'interval 1-9 és un senyal real però inferior a LOW; llegeix el
            `risk_score`, no només la franja. No tractis mai `UNKNOWN` com una
            qualificació afirmativa de risc baix o neta; no la mostris com un
            aprovat.
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: Estat del resultat del cribratge.
        summary:
          type: string
          description: Resum del resultat del cribratge, llegible per a humans.
        wallet_address:
          type: string
          description: L'adreça analitzada, que es retorna tal qual.
        transaction_hash:
          type: string
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        blockchain:
          type: string
          description: La blockchain que s'ha analitzat.
        block_timestamp:
          type: string
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        total_value_usd:
          type: number
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        fee_usd:
          type: number
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        sender_rows:
          type: array
          items:
            type: object
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre està buit en un resultat de cribratge de carteres.
        receiver_rows:
          type: array
          items:
            type: object
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre està buit en un resultat de cribratge de carteres.
        transaction_flows:
          type: array
          items:
            type: object
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre està buit en un resultat de cribratge de carteres.
        transaction_flows_status:
          type: string
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        transaction_flows_error:
          type: string
          nullable: true
          description: >-
            Camp de cribratge de transaccions, compartit amb l'estructura del
            resultat. Sempre és `null` en un resultat de cribratge de carteres.
        source_of_funds:
          type: array
          description: >-
            D'on ha rebut fons l'adreça, atribuït per entitat. Cada entrada és
            un desglossament de l'exposició.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Categoria de risc normalitzada, p. ex. `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`.
              percentage:
                type: number
                description: Proporció de l'exposició total de la direcció, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Valor en USD atribuït a aquesta entitat.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Nom de l'entitat atribuïda, per exemple una plataforma
                  d'intercanvi, un mesclador o un grup sancionat.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Tipus d'entitat del proveïdor (p. ex. `Exchange`, `DeFi`,
                  `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Subtipus més granular (p. ex., `Mandatory KYC and AML`,
                  `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Nombre de salts fins a l'entitat (1 per a una contrapart
                  directa), quan el proveïdor n'informa. Sempre és `null` per a
                  Merkle Science, que només informa de si l'exposició és directa
                  o indirecta: utilitza `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, tal com el proveïdor etiqueta
                  l'entitat.
              is_direct:
                type: boolean
                description: Cert quan `exposure_type` és `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Indica si els fons provenien d'aquesta entitat (`incoming`) o
                  hi anaven destinats (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: Exposició `direct` (1 salt) o `indirect` (múltiples salts).
              provider_entity_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a l'entitat.
              provider_entity_type_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  País principal ISO 3166-1 alfa-2 de l'entitat. Buit o `null`
                  si el proveïdor no el coneix.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Import en la unitat pròpia de l'actiu, quan el proveïdor ho
                  notifica.
              raw_currency:
                type: string
                nullable: true
                description: Unitat de `raw_amount`, quan el proveïdor la reporta.
        destination_of_funds:
          type: array
          description: >-
            Cap a on ha enviat fons l'adreça, atribuït per entitat. Té la
            mateixa estructura d'element que `source_of_funds` amb
            `exposure_direction` = `outgoing`.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Categoria de risc normalitzada, p. ex. `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`.
              percentage:
                type: number
                description: Proporció de l'exposició total de la direcció, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Valor en USD atribuït a aquesta entitat.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Nom de l'entitat atribuïda, per exemple una plataforma
                  d'intercanvi, un mesclador o un grup sancionat.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Tipus d'entitat del proveïdor (p. ex. `Exchange`, `DeFi`,
                  `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Subtipus més granular (p. ex., `Mandatory KYC and AML`,
                  `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Nombre de salts fins a l'entitat (1 per a una contrapart
                  directa), quan el proveïdor n'informa. Sempre és `null` per a
                  Merkle Science, que només informa de si l'exposició és directa
                  o indirecta: utilitza `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, tal com el proveïdor etiqueta
                  l'entitat.
              is_direct:
                type: boolean
                description: Cert quan `exposure_type` és `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Indica si els fons provenien d'aquesta entitat (`incoming`) o
                  hi anaven destinats (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: Exposició `direct` (1 salt) o `indirect` (múltiples salts).
              provider_entity_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a l'entitat.
              provider_entity_type_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  País principal ISO 3166-1 alfa-2 de l'entitat. Buit o `null`
                  si el proveïdor no el coneix.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Import en la unitat pròpia de l'actiu, quan el proveïdor ho
                  notifica.
              raw_currency:
                type: string
                nullable: true
                description: Unitat de `raw_amount`, quan el proveïdor la reporta.
        counterparty_connections:
          type: array
          description: >-
            Entitats a les quals el proveïdor atribueix l'adreça analitzada. En
            el cas de Merkle Science, provenen de les etiquetes de propietari i
            d'usuari de la mateixa adreça, de manera que la mateixa entitat pot
            aparèixer dues vegades, i no comporten fluxos de fons:
            `received_usd`, `sent_usd`, `received_hops` i `sent_hops` són `null`
            i `percentage` és 0. No facis encaminament segons `risk_level` o
            `is_direct` aquí: fes servir `sanctions_hit`,
            `dominant_risk_category` i `risk_factors[].is_high_risk` per al
            veredicte, i `exposure_type` a
            `source_of_funds`/`destination_of_funds` per determinar si són
            directes.
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: Nom de l'entitat atribuïda.
              entity_type:
                type: string
                nullable: true
                description: Tipus d'entitat del proveïdor.
              entity_subtype:
                type: string
                nullable: true
                description: Subtipus d'entitat del proveïdor.
              risk_level:
                type: string
                description: >-
                  En minúscules i depenent del proveïdor. Per a Merkle Science
                  és el grau de risc de 0 a 5 de la pròpia adreça (`no_risk`,
                  `low`, `medium_low`, `medium`, `high`, `critical`), augmentat
                  a `high` quan la categoria de l'entitat és d'alt risc; no és
                  un grau independent de l'entitat.
              categories:
                type: array
                items:
                  type: string
                description: Categories de risc normalitzades de l'entitat.
              received_usd:
                type: number
                nullable: true
                description: USD rebuts de l'entitat, quan el proveïdor ho informa.
              sent_usd:
                type: number
                nullable: true
                description: USD enviats a l'entitat, quan el proveïdor ho informa.
              received_hops:
                type: integer
                nullable: true
                description: >-
                  Salts fins a l'entitat de la part receptora, quan el proveïdor
                  els informa.
              sent_hops:
                type: integer
                nullable: true
                description: >-
                  Salts fins a l'entitat de la part emissora, quan el proveïdor
                  els informa.
              percentage:
                type: number
                description: >-
                  Proporció de l'exposició de l'adreça, quan el proveïdor ho
                  informa; en cas contrari, 0.
              is_direct:
                type: boolean
                description: >-
                  Sempre `true` per a Merkle Science, les connexions del qual
                  són atribucions en lloc de contraparts.
              country:
                type: string
                nullable: true
                description: País de l'entitat, quan es coneix.
              provider_entity_id:
                type: string
                nullable: true
                description: L'identificador propi del proveïdor per a l'entitat.
        network_nodes:
          type: array
          items:
            type: object
          description: >-
            Nodes del graf d'exposició per al cribratge de transaccions. Buit en
            un resultat de cribratge de carteres.
        network_edges:
          type: array
          items:
            type: object
          description: >-
            Arestes del graf d'exposició per al cribratge de transaccions. Buit
            en un resultat de cribratge de carteres.
        sanctions_hit:
          type: boolean
          description: Cert si l'adreça té exposició directa o indirecta a sancions.
        pep_counterparty:
          type: boolean
          description: >-
            Exposició com a persona políticament exposada. `null` quan no hi ha
            cap detecció de PEP disponible, que és el cas de tots els resultats
            actualment perquè cap proveïdor n'informa; `false` només per a un
            resultat de cribratge explícitament negatiu. No interpretis `null`
            com una comprovació de PEP completada.
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            Categoria d'alt risc amb més pes, o `null` quan cap no és dominant
            (p. ex. `sanctioned`, `mixer`, `stolen_funds`).
        risk_factors:
          type: array
          description: >-
            Explicació classificada de `risk_score`: què ha produït aquest
            veredicte. Els proveïdors avaluen una adreça segons el seu propi
            model i només retornen un veredicte (Merkle Science retorna un enter
            del 0 al 5), de manera que la puntuació per si sola no permet
            prendre decisions. S'ordena primer per risc alt i després pel valor
            que ha passat per cada factor determinant, limitat als cinc més
            rellevants; `source_of_funds` i `destination_of_funds` sempre
            inclouen el desglossament complet. Un `risk_score` alt sense cap
            entrada `is_high_risk` significa que el proveïdor no ha detectat
            coincidències amb sancions ni entitats atribuïdes i ha avaluat
            l'adreça purament segons el seu propi model d'exposició; `summary`
            ho indica explícitament.
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution` és el que el proveïdor diu que és la pròpia
                  adreça (la seva pròpia etiqueta o clúster); `exposure` és cap
                  a on s'han mogut realment els seus fons.
              category:
                type: string
                description: >-
                  Categoria de risc normalitzada, mateix vocabulari que el
                  desglossament d'exposició.
              label:
                type: string
                description: >-
                  La redacció pròpia del proveïdor per al factor determinant
                  (per exemple, `Gambling / Crypto only`), que és el que també
                  veuries a la consola del proveïdor.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Entitat atribuïda darrere del factor determinant, per exemple
                  un lloc web de jocs d'atzar o una plataforma d'intercanvi.
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  Direcció del flux de fons, `attribution` quan el causant és
                  l'etiqueta pròpia de l'adreça, o `unknown` quan el proveïdor
                  no ha informat de cap direcció.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct` (1 salt) o `indirect` (múltiples salts),
                  `attribution` per a l'etiqueta pròpia de l'adreça, o `unknown`
                  quan el proveïdor no ha indicat a quants salts de distància és
                  la contrapart. Tracta `unknown` com a no classificat, no com a
                  `direct`.
              amount_usd:
                type: number
                format: float
                nullable: true
                description: Valor en USD atribuït a aquest factor determinant.
              percentage:
                type: number
                format: float
                description: >-
                  Proporció del volum TOTAL analitzat de l'adreça, combinant
                  ambdues direccions - a diferència de `percentage` dins de
                  `source_of_funds`/`destination_of_funds`, que està normalitzat
                  per direcció. Comparable i sumable a tota la llista.
              is_high_risk:
                type: boolean
                description: >-
                  Indica si la categoria és una de les que Didit tracta com
                  d'alt risc (`sanctioned`, `mixer`, `stolen_funds`,
                  `ransomware`, `scam`, `darknet_market`, `terrorist_financing`,
                  `child_exploitation`, `hacked_exchange`, `high_risk_exchange`,
                  `seized_funds`).
              description:
                type: string
                description: >-
                  Representació en una línia del factor determinant, p. ex.
                  `9.01% indirect outgoing exposure to Gambling / Crypto only
                  (Example Gambling)`.
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            El payload propi del proveïdor. La seva estructura és específica del
            proveïdor i pot canviar sense previ avís: llegeix els camps
            normalitzats en lloc d'analitzar-lo directament.
        report_signature:
          type: string
          description: >-
            Signatura HMAC-SHA256 opaca sobre aquest resultat exacte, delimitada
            a la teva aplicació. No té sentit per si sola: torna a enviar el cos
            complet de la resposta, sense modificar i incloent aquest camp, a
            `POST /v3/wallet-screening/pdf/` per renderitzar-lo com a PDF.
            L'endpoint de PDF rebutja la sol·licitud amb `400` si falta
            `report_signature` o si s'ha editat algun camp signat (p. ex.,
            `risk_score`, `severity`, `sanctions_hit`) abans de tornar-lo a
            enviar.
      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: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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