> ## 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 sob demanda: sem transação

> Faça a triagem AML de uma carteira cripto com o Didit, sem criar transação: origem dos recursos, exposição a sanções e pontuação de risco.

Às vezes você precisa verificar o risco AML de uma carteira cripto **antes** de existir qualquer transação a registrar, por exemplo, quando um cliente adiciona um endereço de saque ou quando sua equipe de conformidade quer avaliar um endereço pontualmente. O endpoint de triagem de carteiras sob demanda analisa um único endereço e retorna o resultado de risco completo sem criar uma transação.

Esta é a versão independente da [triagem cripto automática](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md) executada durante o [envio de transações](https://docs.didit.me/pt-br/transaction-monitoring/transactions.md). Os dois usam os mesmos provedores de análise de blockchain e o mesmo formato de resultado.

## Quando usar

| Caso de uso | Endpoint |
| - | - |
| Verificar previamente um endereço sem transação a registrar | **Análise de carteira**: `POST /v3/wallet-screening/` |
| Analisar uma carteira como parte de um depósito/saque registrado | [Criar transação](https://docs.didit.me/pt-br/transaction-monitoring/transactions.md) com `currency_kind: "crypto"` |

A triagem de carteiras não grava nada na tabela de transações. Se você precisa que a triagem fique vinculada a uma transação monitorada (com regras, alertas e webhooks), envie uma transação.

## Pré-requisitos

O monitoramento de transações precisa estar configurado para a aplicação com um provedor gerenciado ou uma [chave de provedor existente](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md#provedores-compatíveis). Configure-o em **Transações** > **Configurações** > **Provider Preferences** no [Business Console](https://business.didit.me). Se nenhum provedor estiver configurado, o endpoint retorna `409 Conflict`.

## Requisição

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

Autentique-se com o cabeçalho `x-api-key`.

| Campo | Tipo | Obrigatório | Descrição |
| - | - | - | - |
| `wallet_address` | string | Sim | O endereço ou identificador de rede a analisar. Precisa corresponder à rede escolhida, como `0x` + 40 caracteres hexadecimais para redes EVM ou um identificador Lightning aceito pelo seu provedor. Alias: `address`. |
| `blockchain` | string | Não | Identificador do ativo / da rede. Quando omitido, a Didit identifica a rede pelo 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 em base58 são Solana (`SOL`). Um endereço `0x` é válido em todas as redes EVM, então retorna `422` com `candidate_chains`, e nada é analisado nem cobrado; reenvie-o com a rede definida. Qualquer outro formato retorna `400`. Valores aceitos: `BTC`, `LIGHTNING`, `ETH`, `LTC`, `XRP`, `BCH`, `DOGE`, `TRX`, `SOL`, `MATIC`, `BNB`, `BASE`, `OP`, `ARB`, `AVAX`, `ADA`, `XLM`, `HBAR`, `CELO`, `MODE`, `PLUME`, `USDT`, `USDC`. Nomes comuns de redes também são aceitos, por exemplo `POLYGON` ou `POL` para `MATIC`, `BSC` para `BNB` e `TRON` para `TRX`. Alias: `currency`. |
| `direction` | string | Não | `inbound`, `outbound`, `deposit` ou `withdrawal`. Contexto opcional para o provedor; omita para uma triagem neutra antes da transferência. Não altera o `risk_score`, a `severity` nem os detalhamentos do fluxo de fundos retornados (veja a observação em [Resposta](#resposta)). |

### Cobertura de redes

A triagem gerenciada oferece suporte a Base (`BASE`), Optimism (`OP`) e Arbitrum One (`ARB`), tanto para triagem de carteiras quanto de hash de transação.
Provedores conectados podem ter cobertura diferente; a rede também precisa ser suportada pelo provedor e pela conta que você selecionou.
Celo (`CELO`), Mode (`MODE`) e Plume (`PLUME`) são analisadas por meio de uma conta TRM Labs conectada (Marketplace, com sua própria chave); a triagem gerenciada não cobre essas redes e retorna `400`.
Não envie `ETH` para outra rede EVM: o mesmo endereço pode ter atividade e risco diferentes em cada rede.

Na triagem gerenciada, `USDT` e `USDC` são aliases legados para Ethereum, e não uma busca em todas as redes em que esses tokens existem.
Use o identificador da rede (`ETH`, `TRX`, `SOL`, `MATIC`, `BNB`, `BASE`, `OP`, `ARB`, `AVAX`, `ADA`, `XLM`, `HBAR` ou, com TRM Labs, `CELO`, `MODE` ou `PLUME`) correspondente à rede usada pela carteira.
Para tokens em transações registradas, mantenha o token em `transaction_details.currency` e especifique a rede separadamente em `transaction_details.crypto_params.crypto_chain`.
Veja [seleção de ativo e rede](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md#seleção-de-ativo-e-rede).

> [!WARNING]
>
> `LIGHTNING` está disponível somente quando a aplicação tem um provedor BYOK da Elliptic ou da Chainalysis conectado no **Marketplace** do console.
> Não está disponível com a Merkle Science gerenciada nem com Crystal ou TRM Labs.
> Requisições sem um provedor conectado compatível retornam `400` e não são analisadas nem cobradas.

```bash theme={null}
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"
  }'
```

## Resposta

A resposta é o resultado de triagem padronizado, com o mesmo formato do resultado de provedor `WALLET_SCREENING` retornado pela triagem de transações.

| Campo | Tipo | Descrição |
| - | - | - |
| `provider` | string | Provedor que fez a triagem do endereço (`merklescience`, `crystal`, `chainalysis`, `elliptic`, `trmlabs`). |
| `screening_type` | string | Sempre `WALLET_SCREENING`. |
| `risk_score` | integer | Pontuação de risco normalizada de 0 a 100. A Merkle Science classifica um endereço de `0-5`, o que corresponde a `0`, `15`, `35`, `55`, `75` ou `95`. |
| `severity` | string | Faixa de risco derivada de `risk_score` (veja a nota abaixo): `UNKNOWN`, `LOW`, `MEDIUM`, `HIGH` ou `CRITICAL`. |
| `status` | string | `SCREENED`, `PENDING` ou `ERROR`. |
| `summary` | string | Resumo legível para pessoas. |
| `wallet_address` | string | O endereço analisado. |
| `blockchain` | string | A blockchain analisada. |
| `sanctions_hit` | boolean | `true` quando a carteira analisada está sancionada ou quando os fundos de alguma de suas contrapartes vieram de entidades sancionadas (exposição). O campo não distingue os dois casos. |
| `pep_counterparty` | boolean \| null | Exposição a pessoa politicamente exposta. `null` quando não há nenhuma constatação de PEP disponível, o que vale hoje para todos os resultados, porque nenhum provedor reporta essa informação; `false` somente para um resultado de triagem explicitamente negativo. Não interprete `null` como uma verificação de PEP concluída. |
| `dominant_risk_category` | string \| null | Categoria de alto risco com maior peso, ou `null`. |
| `risk_factors` | array | Explicação ranqueada de `risk_score`, ou seja, o que produziu este veredito. Veja [Fatores de risco](#fatores-de-risco). |
| `source_of_funds` | array | De onde os fundos foram recebidos, por entidade. Veja [Detalhamento da exposição](#detalhamento-da-exposição). |
| `destination_of_funds` | array | Para onde os fundos foram enviados, por entidade. Mesmo formato de entrada de `source_of_funds`. |
| `counterparty_connections` | array | Entidades às quais o provedor atribui o endereço. Veja [Conexões com contrapartes](#conexões-com-contrapartes). |
| `network_nodes`, `network_edges` | array | Grafo da exposição para a triagem de transações. Vazio em um resultado de triagem de carteira. |
| `transaction_hash`, `block_timestamp`, `total_value_usd`, `fee_usd`, `transaction_flows_status`, `transaction_flows_error` | null | Campos da triagem de transações, compartilhados com o formato do resultado. Sempre `null` em um resultado de triagem de carteira. |
| `sender_rows`, `receiver_rows`, `transaction_flows` | array | Campos da triagem de transações. Sempre vazios em um resultado de triagem de carteira. |
| `raw_response` | object | O payload próprio do provedor. Seu formato é específico de cada provedor e pode mudar sem aviso prévio: leia os campos normalizados acima em vez de interpretá-lo. |
| `report_signature` | string | Assinatura opaca sobre este resultado, restrita à sua aplicação. Reenvie a resposta sem modificações, incluindo este campo, para [renderizá-la como PDF](#relatório-em-pdf). |

> [!NOTE]
>
> **Como `severity` é definido.** `severity` é a faixa da `risk_score` normalizada: `0-9` → `UNKNOWN`, `10-39` → `LOW`, `40-69` → `MEDIUM`, `70-89` → `HIGH`, `90-100` → `CRITICAL`. `UNKNOWN` é a faixa mais baixa, e não um estado separado de "sem dados": `risk_score: 0` (o caso comum de endereço limpo) significa que o provedor não retornou nenhuma avaliação adversa, enquanto uma pontuação diferente de zero na faixa `1-9` é um sinal real, mas abaixo de `LOW`. Por isso, leia a própria `risk_score`, e não apenas a faixa. Em qualquer caso, não apresente `UNKNOWN` como um "liberado" afirmativo nem como uma aprovação.
>
> **`direction` não altera o modelo de risco.** O campo opcional `direction` é repassado ao provedor apenas como contexto. Ele não afeta `risk_score`, `severity` nem quais listas de detalhamento são retornadas: `source_of_funds` e `destination_of_funds` são sempre retornados, independentemente desse campo. Portanto, alterar ou omitir `direction` não exige refazer a triagem de um endereço já analisado.

### Fatores de risco

`risk_factors` é a resposta ranqueada para a pergunta "por que este endereço recebeu esta pontuação". Os provedores classificam um endereço com o próprio modelo e retornam apenas um veredito (a Merkle Science retorna um inteiro `0-5`), então não é possível agir com base apenas em `risk_score`. Cada entrada indica um fator determinante, com os de alto risco primeiro e, em seguida, ordenados pelo valor que passou por eles.

| Campo | Tipo | Descrição |
| - | - | - |
| `source` | string | `attribution` (o que o provedor diz que o endereço *é*: sua própria tag ou cluster) ou `exposure` (onde seus fundos realmente foram movimentados). |
| `category` | string | Categoria de risco normalizada, com o mesmo vocabulário do detalhamento da exposição. |
| `label` | string | O texto do próprio provedor, por exemplo `Gambling / Crypto only`. Use-o em uma interface: ele corresponde ao que você veria no console do provedor. |
| `entity_name` | string \| null | Entidade atribuída, por exemplo um site de apostas ou uma exchange. Os exemplos desta página usam marcadores como `Example Gambling`. |
| `direction` | string | `incoming`, `outgoing`, `connected`, `attribution` (a própria tag do endereço) ou `unknown` quando o provedor não informou uma direção. |
| `exposure_type` | string | `direct` (1 salto), `indirect` (vários saltos), `attribution` (a própria tag do endereço) ou `unknown` quando o provedor não informou a quantos saltos de distância está a contraparte. Trate `unknown` como não classificado, nunca como `direct`. |
| `amount_usd` | number \| null | Valor em USD atribuído a este fator. |
| `percentage` | number | Participação no volume analisado **total** do endereço, com as duas direções somadas, 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` | boolean | Indica se a categoria é uma das que a Didit considera de alto risco (`sanctioned`, `mixer`, `stolen_funds`, `ransomware`, `scam`, `darknet_market`, `terrorist_financing`, `child_exploitation`, `hacked_exchange`, `high_risk_exchange`, `seized_funds`). |
| `description` | string | Descrição do fator em uma linha, por exemplo `9.01% indirect outgoing exposure to Gambling / Crypto only (Example Gambling)`. |

> [!NOTE]
>
> **Uma pontuação alta sem nenhum fator `is_high_risk` é um resultado real e significativo.** Isso significa que o provedor classificou o endereço com o próprio modelo de exposição sem reportar uma correspondência com sanções, PEP ou entidade atribuída; os fatores que *estão* listados são os fluxos de fundos por trás da classificação. `summary` informa isso explicitamente, então trate esses endereços como "revisar os fluxos", e não como uma ocorrência confirmada. `risk_factors` é limitado aos cinco fatores mais fortes; `source_of_funds` e `destination_of_funds` sempre trazem o detalhamento completo.
>
> **`risk_factors` é um campo de nível superior, não aninhado.** Resultados analisados antes de ele existir omitem a chave por completo: trate-a como uma lista vazia, em vez de supor uma explicação vazia.

### Detalhamento da exposição

Cada entrada em `source_of_funds` / `destination_of_funds` descreve uma entidade com a qual o endereço trocou fundos:

| Campo | Tipo | Descrição |
| - | - | - |
| `category` | string | Categoria de risco normalizada (`exchange_licensed`, `dex`, `defi`, `mixer`, `sanctioned`, `darknet_market`, `stolen_funds`, …). |
| `entity_name` | string \| null | Entidade atribuída, por exemplo uma exchange, um mixer ou um grupo sancionado. Os exemplos desta página usam valores fictícios. |
| `entity_type` | string \| null | Tipo de entidade do provedor (`Exchange`, `DeFi`, `Sanctions`). |
| `entity_subtype` | string \| null | Subtipo detalhado (`Mandatory KYC and AML`, `OFAC`). |
| `description` | string \| null | `entity_type / entity_subtype`, conforme o provedor rotula a entidade. |
| `exposure_direction` | string | `incoming`, `outgoing` ou `connected`. |
| `exposure_type` | string | `direct` (1 salto) ou `indirect` (vários saltos). |
| `is_direct` | boolean | `true` quando `exposure_type` é `direct`. |
| `amount_usd` | number \| null | Valor em USD atribuído à entidade. |
| `percentage` | number | Participação na exposição total da direção (0–100). |
| `hops` | integer \| null | Número de saltos até a entidade (`1` para uma contraparte direta), quando o provedor informa esse dado. Sempre `null` para Merkle Science, que informa apenas se a exposição é direta ou indireta: use `exposure_type`. |
| `country` | string \| null | País principal da entidade, no formato ISO 3166-1 alfa-2. Vazio ou `null` quando o provedor não o conhece. |
| `provider_entity_id`, `provider_entity_type_id`, `provider_entity_subtype_id` | string \| null | Os identificadores próprios do provedor para a entidade e seu tipo. |
| `raw_amount`, `raw_currency` | number \| null, string \| null | Valor na unidade do próprio ativo, quando o provedor o informa. |

### Conexões com contrapartes

`counterparty_connections` lista as entidades às quais o provedor atribui o endereço analisado. Para Merkle Science, elas vêm das tags de proprietário e de usuário do próprio endereço, por isso a mesma entidade pode aparecer duas vezes, e não trazem fluxos de fundos: `received_usd`, `sent_usd`, `received_hops` e `sent_hops` são `null`, e `percentage` é `0.0`. Leia os fluxos de fundos em `source_of_funds` e `destination_of_funds`.

| Campo | Tipo | Descrição |
| - | - | - |
| `entity_name` | string \| null | Entidade atribuída. |
| `entity_type` | string \| null | Tipo de entidade do provedor. |
| `entity_subtype` | string \| null | Subtipo detalhado. |
| `categories` | array | Categorias de risco normalizadas da entidade. |
| `risk_level` | string | Em minúsculas, depende do provedor. Para Merkle Science, é a própria classificação de risco de 0 a 5 do endereço (`no_risk`, `low`, `medium_low`, `medium`, `high`, `critical`), elevada para `high` quando a categoria da entidade é de alto risco; não é uma classificação separada da entidade. |
| `is_direct` | boolean | Sempre `true` para Merkle Science, cujas conexões são atribuições e não contrapartes. |
| `received_usd`, `sent_usd` | number \| null | Valor em USD recebido da entidade e enviado a ela, quando o provedor o informa. |
| `received_hops`, `sent_hops` | integer \| null | Saltos até a entidade em cada direção, quando o provedor os informa. |
| `percentage` | number | Participação na exposição do endereço, quando o provedor a informa; caso contrário, `0.0`. |
| `country` | string \| null | País da entidade, quando conhecido. |
| `provider_entity_id` | string \| null | O identificador próprio do provedor para a entidade. |

> [!WARNING]
>
> Não tome decisões de roteamento com base em `counterparty_connections[].risk_level` ou `counterparty_connections[].is_direct`: para Merkle Science, o primeiro repete a própria classificação do endereço (leia `risk_score`) e o segundo é sempre `true`. Use `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 saber se a exposição é direta.

### Exemplo

Uma resposta real para um endereço na lista de sanções da OFAC, analisado com Merkle Science. Apenas `raw_response` foi encurtado e `report_signature` foi substituído:

```json theme={null}
{
  "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.0,
      "amount_usd": 9813695.0,
      "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.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.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.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.0,
      "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>"
}
```

Os exemplos ilustram o formato da resposta, não um veredito garantido para um endereço real.
As pontuações de risco e a exposição a sanções dependem da rede selecionada, da inteligência atual e da política de risco configurada.
Uma atribuição a uma exchange não implica pontuação de risco zero: uma carteira de exchange pode ter exposição a sanções por meio de seus fluxos de fundos.
`sanctions_hit: true` pode indicar que a própria carteira é sancionada ou apenas que seus fundos têm exposição a sanções, portanto isso, por si só, não significa que o titular da carteira analisada seja sancionado.
Quando a mesma análise é executada sobre uma transação registrada, as regras também podem ler `custom_values.wallet_sanctioned`, que é `true` somente quando o provedor atribui a própria carteira a uma entidade sancionada, e `custom_values.aml_sanctions_exposure_pct`.
Consulte [Campos de análise para regras](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md#campos-de-análise-para-regras).
Leia `risk_factors`, `source_of_funds` e `destination_of_funds` para distinguir atribuição de exposição.
Consulte [Triagem de cripto e de carteiras](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md#resultados-da-triagem) para um passo a passo.

## Relatório em PDF

Para obter um PDF com a marca Didit de um resultado de triagem, reenvie o corpo exato da resposta, incluindo `report_signature`, para `POST /v3/wallet-screening/pdf/`. A operação é stateless: nenhuma chamada ao provedor, nenhum faturamento adicional, nada é persistido. Se você editar qualquer campo assinado (`risk_score`, `severity`, `sanctions_hit`, …) antes de reenviar, a requisição falha com `400`.

```bash theme={null}
RESULT=$(curl -s -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"}')

curl -X POST https://verification.didit.me/v3/wallet-screening/pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$RESULT" \
  -o wallet_screening_report.pdf
```

Consulte [PDF da triagem de carteira](https://docs.didit.me/pt-br/management-api/transactions/screen-wallet-pdf.md) para ver o esquema completo de requisição e resposta e os formatos de erro.

## Faturamento

Cada uso de monitoramento AML é cobrado por triagem bem-sucedida, com a mesma tarifa da triagem de cripto vinculada a transações. Consulte os [preços](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md#provedores-compatíveis) para ver as tarifas para chaves gerenciadas e conectadas. Aplicações de sandbox não são cobradas. Erros de validação (`400`) e erros de provedor não configurado (`409`) nunca são cobrados.

## Erros

| Status | Significado |
| - | - |
| `400` | Endereço malformado, `wallet_address` ausente ou `blockchain` não suportada. |
| `401` | `x-api-key` ausente ou inválida. |
| `409` | Nenhum provedor AML configurado para a aplicação: configure primeiro o monitoramento de transações. |
| `409` | O provedor rejeitou a chave de API que você conectou (`wallet_screening_provider_credentials_rejected`): atualize a chave na conexão do Marketplace ou, se a chave tiver sido configurada nas configurações de monitoramento de transações, atualize-a lá. Tentar novamente com a mesma chave não resolve. |
| `409` | O provedor AML configurado ainda não oferece suporte à triagem de carteiras (`wallet_screening_provider_unavailable`). |
| `422` | Um endereço `0x` foi enviado sem `blockchain` (`wallet_screening_chain_undetermined`). O corpo lista `candidate_chains`; reenvie com uma delas. Nada é analisado nem cobrado. |
| `502` | O provedor não conseguiu concluir a triagem; tente novamente mais tarde. |

## Próximos passos

> [card] [Referência da API](https://docs.didit.me/pt-br/management-api/transactions/screen-wallet.md)
>
> Esquema completo de requisição e resposta do endpoint Screen Wallet.

> [card] [PDF da triagem de carteira](https://docs.didit.me/pt-br/management-api/transactions/screen-wallet-pdf.md)
>
> Gere um PDF com a marca Didit a partir de um resultado de triagem.

> [card] [Triagem de cripto e carteiras](https://docs.didit.me/pt-br/transaction-monitoring/aml-screening.md)
>
> Triagem automática durante a criação de transações e o modelo de resultado.


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