> ## 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 Triagem de Carteiras: AML Cripto sob Pedido

> Faça triagem AML de uma carteira cripto na Didit sem criar transação: origem dos fundos, sanções e pontuação de risco. A partir de $0.02 por chamada.



Prompt da API de triagem de carteiras
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em



## OpenAPI

````yaml pt/openapi-25.json POST /v3/wallet-screening/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/wallet-screening/:
    post:
      tags:
        - Transactions
      summary: Fazer a triagem de um endereço
      description: >-
        Executar uma triagem AML a pedido para uma única carteira/endereço
        cripto sem criar uma transação. Resolve o fornecedor de análise de
        blockchain configurado para a sua aplicação, efetua a triagem do
        endereço de forma síncrona e devolve o resultado de risco normalizado. O
        LIGHTNING está disponível apenas com uma ligação BYOK da Elliptic ou da
        Chainalysis adicionada através do Marketplace. Nada é escrito na tabela
        de transações. É faturada uma utilização de monitorização AML por cada
        triagem bem-sucedida (as aplicações em sandbox não são faturadas).
      operationId: screenWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallet_address
              properties:
                wallet_address:
                  type: string
                  description: >-
                    O endereço de criptoativos ou identificador de rede a
                    analisar. Deve corresponder à rede selecionada (por exemplo,
                    um endereço de 40 carateres hexadecimais com prefixo `0x`
                    para redes EVM). Pseudónimo: `address`.
                  example: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                blockchain:
                  type: string
                  description: >-
                    Identificador de rede opcional. Quando omitido, a rede é
                    lida a partir do formato do endereço: endereços `bc1`, `1` e
                    `3` são Bitcoin (BTC), endereços `T` são Tron (TRX) e chaves
                    públicas base58 são Solana (SOL). Um endereço `0x` é válido
                    em todas as redes EVM, pelo que omitir `blockchain` para o
                    mesmo devolve 422 com as redes candidatas em
                    `candidate_chains`. A triagem gerida suporta 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) e HBAR (Hedera). USDT e USDC
                    são aliases legados de Ethereum, não pesquisas em várias
                    redes. A cobertura de fornecedores associados varia. O
                    LIGHTNING requer um fornecedor associado suportado. CELO
                    (Celo), MODE (Mode) e PLUME (Plume) são analisados através
                    de uma conta TRM Labs associada; a triagem gerida devolve
                    400 para estes. Alias: `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. Se o endereço está a ser submetido a triagem como
                    contraparte de entrada (depósito) ou de saída
                    (levantamento). Aceita `inbound`, `outbound`, `deposit` ou
                    `withdrawal`. O valor predefinido é uma triagem neutra
                    pré-transferência quando omitido. Isto é transmitido ao
                    fornecedor apenas como contexto; não altera o `risk_score`,
                    `severity` ou os detalhes de
                    `source_of_funds`/`destination_of_funds` devolvidos, que são
                    sempre ambos devolvidos independentemente da `direction`.
                    Alterar ou omitir `direction`, portanto, não requer uma nova
                    triagem do endereço.
                  enum:
                    - inbound
                    - outbound
                    - deposit
                    - withdrawal
            example:
              wallet_address: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
              blockchain: ETH
      responses:
        '200':
          description: O resultado normalizado da triagem de carteiras.
          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: >-
            Erro de validação — endereço malformado, `wallet_address` em falta,
            `blockchain` não suportada, `blockchain` omitida para um endereço
            cujo formato não indica nenhuma rede, ou LIGHTNING sem uma ligação
            de Marketplace BYOK da Elliptic ou Chainalysis.
        '401':
          description: '`x-api-key` em falta ou inválido.'
        '409':
          description: >-
            Nenhum fornecedor de AML está configurado para a aplicação, ou o
            fornecedor configurado ainda não suporta a triagem de carteiras.
            Configure a monitorização de transações primeiro.
        '422':
          description: >-
            `blockchain` omitido para um endereço `0x`, cujo formato é
            partilhado por todas as redes EVM. Nada é analisado nem faturado;
            reenvie com `blockchain` definido para uma das `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: >-
            O fornecedor de AML não conseguiu concluir a triagem. Tente
            novamente mais tarde.
      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: >-
            Fornecedor que realizou a triagem (por exemplo, `merklescience`,
            `crystal`).
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: Sempre `WALLET_SCREENING` para este endpoint.
        risk_score:
          type: integer
          description: >-
            Pontuação de risco normalizada de 0-100. Um valor mais alto
            significa maior exposição a entidades de risco. A Merkle Science
            classifica um endereço de 0 a 5, o que mapeia para 0, 15, 35, 55, 75
            ou 95.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            Intervalo de risco derivado de `risk_score`: `0-9` UNKNOWN, `10-39`
            LOW, `40-69` MEDIUM, `70-89` HIGH, `90-100` CRITICAL. `UNKNOWN` é a
            faixa mais baixa, não um estado separado sem dados: um `risk_score`
            de 0 (o caso comum de endereço limpo) significa que não há avaliação
            adversa, enquanto uma pontuação diferente de zero no intervalo de 1
            a 9 é um sinal real, mas abaixo de LOW - leia o `risk_score`, não
            apenas a faixa. Nunca trate `UNKNOWN` como uma classificação
            afirmativa de baixo risco ou limpa; não a apresente como aprovação.
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: Estado do resultado da triagem.
        summary:
          type: string
          description: Resumo legível por humanos do resultado da triagem.
        wallet_address:
          type: string
          description: O endereço submetido a triagem, devolvido tal como foi recebido.
        transaction_hash:
          type: string
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        blockchain:
          type: string
          description: A blockchain que foi analisada.
        block_timestamp:
          type: string
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        total_value_usd:
          type: number
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        fee_usd:
          type: number
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        sender_rows:
          type: array
          items:
            type: object
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. Está sempre vazio num resultado de triagem de carteiras.
        receiver_rows:
          type: array
          items:
            type: object
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. Está sempre vazio num resultado de triagem de carteiras.
        transaction_flows:
          type: array
          items:
            type: object
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. Está sempre vazio num resultado de triagem de carteiras.
        transaction_flows_status:
          type: string
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        transaction_flows_error:
          type: string
          nullable: true
          description: >-
            Campo de triagem de transações, partilhado com o formato do
            resultado. É sempre `null` num resultado de triagem de carteiras.
        source_of_funds:
          type: array
          description: >-
            De onde o endereço recebeu fundos, atribuídos por entidade. Cada
            entrada é um detalhe de exposição.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Categoria de risco normalizada, por exemplo,
                  `exchange_licensed`, `dex`, `defi`, `payment_processor`,
                  `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
                  `high_risk_exchange`.
              percentage:
                type: number
                description: Percentagem da exposição total da direção, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Valor em USD atribuído a esta entidade.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Nome da entidade atribuída, por exemplo uma exchange, um
                  misturador ou um grupo sancionado.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Tipo de entidade do fornecedor (por exemplo, `Exchange`,
                  `DeFi`, `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Subtipo mais granular (p. ex., `Mandatory KYC and AML`,
                  `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Número de saltos até à entidade (1 para uma contraparte
                  direta), quando o fornecedor indicar um. Sempre `null` para a
                  Merkle Science, que apenas indica se a exposição é direta ou
                  indireta: utilize `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, tal como o fornecedor rotula a
                  entidade.
              is_direct:
                type: boolean
                description: True quando `exposure_type` é `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Indica se os fundos provieram (`incoming`) ou foram enviados
                  para (`outgoing`) esta entidade.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: Exposição `direct` (1 salto) ou `indirect` (múltiplos saltos).
              provider_entity_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para a entidade.
              provider_entity_type_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  País principal da entidade, segundo a norma ISO 3166-1
                  alpha-2. Vazio ou `null` quando o fornecedor não o conhece.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Montante na própria unidade do ativo, quando o fornecedor o
                  reporta.
              raw_currency:
                type: string
                nullable: true
                description: Unidade de `raw_amount`, quando o fornecedor a comunica.
        destination_of_funds:
          type: array
          description: >-
            Para onde o endereço enviou fundos, atribuídos por entidade. Mesma
            estrutura de itens que `source_of_funds` com `exposure_direction` =
            `outgoing`.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  Categoria de risco normalizada, por exemplo,
                  `exchange_licensed`, `dex`, `defi`, `payment_processor`,
                  `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`,
                  `high_risk_exchange`.
              percentage:
                type: number
                description: Percentagem da exposição total da direção, 0-100.
              amount_usd:
                type: number
                nullable: true
                description: Valor em USD atribuído a esta entidade.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Nome da entidade atribuída, por exemplo uma exchange, um
                  misturador ou um grupo sancionado.
              entity_type:
                type: string
                nullable: true
                description: >-
                  Tipo de entidade do fornecedor (por exemplo, `Exchange`,
                  `DeFi`, `Sanctions`, `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  Subtipo mais granular (p. ex., `Mandatory KYC and AML`,
                  `OFAC`, `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  Número de saltos até à entidade (1 para uma contraparte
                  direta), quando o fornecedor indicar um. Sempre `null` para a
                  Merkle Science, que apenas indica se a exposição é direta ou
                  indireta: utilize `exposure_type`.
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, tal como o fornecedor rotula a
                  entidade.
              is_direct:
                type: boolean
                description: True quando `exposure_type` é `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  Indica se os fundos provieram (`incoming`) ou foram enviados
                  para (`outgoing`) esta entidade.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: Exposição `direct` (1 salto) ou `indirect` (múltiplos saltos).
              provider_entity_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para a entidade.
              provider_entity_type_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  País principal da entidade, segundo a norma ISO 3166-1
                  alpha-2. Vazio ou `null` quando o fornecedor não o conhece.
              raw_amount:
                type: number
                nullable: true
                description: >-
                  Montante na própria unidade do ativo, quando o fornecedor o
                  reporta.
              raw_currency:
                type: string
                nullable: true
                description: Unidade de `raw_amount`, quando o fornecedor a comunica.
        counterparty_connections:
          type: array
          description: >-
            Entidades às quais o fornecedor atribui o endereço submetido a
            triagem. Para a Merkle Science, estas provêm das etiquetas de
            proprietário e utilizador do próprio endereço, pelo que a mesma
            entidade pode surgir duas vezes, e não transportam fluxos de fundos:
            `received_usd`, `sent_usd`, `received_hops` e `sent_hops` são `null`
            e `percentage` é 0. Não efetue o encaminhamento com base em
            `risk_level` ou `is_direct` aqui: utilize `sanctions_hit`,
            `dominant_risk_category` e `risk_factors[].is_high_risk` para o
            veredito, e `exposure_type` em
            `source_of_funds`/`destination_of_funds` para aferir a ligação
            direta.
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: Nome da entidade atribuída.
              entity_type:
                type: string
                nullable: true
                description: Tipo de entidade do fornecedor.
              entity_subtype:
                type: string
                nullable: true
                description: Subtipo de entidade do fornecedor.
              risk_level:
                type: string
                description: >-
                  Em minúsculas e dependente do fornecedor. Para a Merkle
                  Science, é o próprio grau de risco de 0 a 5 do endereço
                  (`no_risk`, `low`, `medium_low`, `medium`, `high`,
                  `critical`), elevado para `high` quando a categoria da
                  entidade é de alto risco; não é um grau separado da entidade.
              categories:
                type: array
                items:
                  type: string
                description: Categorias de risco normalizadas da entidade.
              received_usd:
                type: number
                nullable: true
                description: USD recebidos da entidade, quando comunicado pelo fornecedor.
              sent_usd:
                type: number
                nullable: true
                description: >-
                  USD enviados para a entidade, quando comunicado pelo
                  fornecedor.
              received_hops:
                type: integer
                nullable: true
                description: >-
                  Saltos até à entidade no lado recetor, quando o fornecedor os
                  comunica.
              sent_hops:
                type: integer
                nullable: true
                description: >-
                  Saltos até à entidade no lado emissor, quando o fornecedor os
                  comunica.
              percentage:
                type: number
                description: >-
                  Percentagem de exposição do endereço, quando comunicada pelo
                  fornecedor; caso contrário, 0.
              is_direct:
                type: boolean
                description: >-
                  Sempre `true` para a Merkle Science, cujas ligações são
                  atribuições em vez de contrapartes.
              country:
                type: string
                nullable: true
                description: País da entidade, quando conhecido.
              provider_entity_id:
                type: string
                nullable: true
                description: O identificador próprio do fornecedor para a entidade.
        network_nodes:
          type: array
          items:
            type: object
          description: >-
            Nós do grafo de exposição para triagem de transações. Vazio no
            resultado de uma triagem de carteiras.
        network_edges:
          type: array
          items:
            type: object
          description: >-
            Arestas do grafo de exposição para triagem de transações. Vazio no
            resultado de uma triagem de carteiras.
        sanctions_hit:
          type: boolean
          description: True se o endereço tiver exposição direta ou indireta a sanções.
        pep_counterparty:
          type: boolean
          description: >-
            Exposição como pessoa politicamente exposta. `null` quando não há
            qualquer conclusão de PEP disponível, o que corresponde a todos os
            resultados atualmente porque nenhum fornecedor o comunica; `false`
            apenas para um resultado de triagem explicitamente negativo. Não
            interprete `null` como uma verificação de PEP concluída.
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            Categoria de alto risco com maior peso, ou `null` quando nenhuma é
            dominante (ex.: `sanctioned`, `mixer`, `stolen_funds`).
        risk_factors:
          type: array
          description: >-
            Explicação classificada de `risk_score`: o que produziu este
            veredito. Os fornecedores avaliam um endereço no seu próprio modelo
            e devolvem apenas um veredito (a Merkle Science devolve um número
            inteiro de 0 a 5), pelo que a pontuação por si só não é acionável.
            Com os elementos de maior risco primeiro e, depois, ordenada pelo
            valor movimentado através de cada fator, limitada aos cinco mais
            fortes; `source_of_funds` e `destination_of_funds` incluem sempre o
            detalhe completo. Um `risk_score` elevado sem nenhuma entrada
            `is_high_risk` significa que o fornecedor não reportou sanções nem
            qualquer correspondência com entidades atribuídas e avaliou o
            endereço puramente no seu próprio modelo de exposição - o `summary`
            indica isto explicitamente.
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution` é o que o fornecedor indica que o próprio
                  endereço é (a sua própria etiqueta ou cluster); `exposure` é
                  para onde os respetivos fundos foram efetivamente
                  movimentados.
              category:
                type: string
                description: >-
                  Categoria de risco normalizada, o mesmo vocabulário da
                  desagregação de exposição.
              label:
                type: string
                description: >-
                  A redação própria do fornecedor para o fator (por ex.
                  `Gambling / Crypto only`), que é também o que veria na consola
                  do fornecedor.
              entity_name:
                type: string
                nullable: true
                description: >-
                  Entidade atribuída por trás do motor, por exemplo, um site de
                  apostas ou uma exchange.
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  Direção do fluxo de fundos, `attribution` quando o fator
                  determinante é a própria etiqueta do endereço, ou `unknown`
                  quando o fornecedor não comunicou uma direção.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct` (1 salto) ou `indirect` (múltiplos saltos),
                  `attribution` para a própria etiqueta do endereço, ou
                  `unknown` quando o fornecedor não indicou a quantos saltos de
                  distância está a contraparte. Trate `unknown` como não
                  classificado, e não como `direct`.
              amount_usd:
                type: number
                format: float
                nullable: true
                description: Valor em USD atribuído a este fator.
              percentage:
                type: number
                format: float
                description: >-
                  Percentagem do volume TOTAL analisado do endereço, combinando
                  ambas as direções - ao contrário de `percentage` dentro de
                  `source_of_funds`/`destination_of_funds`, que é normalizado
                  por direção. Comparável e somável em toda a lista.
              is_high_risk:
                type: boolean
                description: >-
                  Indica se a categoria é considerada de alto risco pela Didit
                  (`sanctioned`, `mixer`, `stolen_funds`, `ransomware`, `scam`,
                  `darknet_market`, `terrorist_financing`, `child_exploitation`,
                  `hacked_exchange`, `high_risk_exchange`, `seized_funds`).
              description:
                type: string
                description: >-
                  Apresentação numa única linha do fator determinante, p. ex.,
                  `9.01% indirect outgoing exposure to Gambling / Crypto only
                  (Example Gambling)`.
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            O payload próprio do fornecedor. O seu formato é específico do
            fornecedor e pode mudar sem aviso prévio: leia os campos
            normalizados em vez de o analisar diretamente.
        report_signature:
          type: string
          description: >-
            Assinatura HMAC-SHA256 opaca sobre este resultado exato, com âmbito
            restrito à sua aplicação. Não tem significado por si só — reenvie o
            corpo completo da resposta, sem modificações e incluindo este campo,
            para `POST /v3/wallet-screening/pdf/` para o renderizar como um PDF.
            O endpoint de PDF rejeita o pedido com `400` se `report_signature`
            estiver em falta ou se qualquer campo assinado (por exemplo,
            `risk_score`, `severity`, `sanctions_hit`) tiver sido editado antes
            do reenvio.
      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: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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