Saltar al contenido principal
POST
curl

Autorizaciones

x-api-key
string
header
requerido

La clave de API de tu aplicación, que encontrarás en Developers -> API keys en la Business Console. La clave principal tiene acceso completo. Una clave con nombre puede tener un alcance limitado: ninguno, lectura o escritura por recurso, limitada a algunos flujos o a sesiones aprobadas, a una lista de direcciones IP y a una fecha de caducidad. 401 significa que la clave es incorrecta, se revocó o expiró; 403 significa que no se envió ninguna clave, que la clave no tiene acceso a este recurso o acción, o que la solicitud provino de una dirección fuera de su lista de IP; 404 en una ruta de sesión significa que la sesión está fuera de los flujos o estados de la clave. Una clave sin acceso a contenido multimedia recibe las URL de imágenes, videos y PDF como null, y una clave sin permiso de escritura en sesiones recibe los enlaces y tokens de sesión como null. Consulta https://docs.didit.me/console/api-keys.

Cuerpo

application/json
wallet_address
string
requerido

La dirección cripto o el identificador de red que se va a analizar. Debe corresponder a la red seleccionada (por ejemplo, una dirección de 40 caracteres hexadecimales con el prefijo 0x para cadenas EVM). Alias: address.

Ejemplo:

"0x94f1b9b64e2932f6a2db338f616844400cd58e8a"

blockchain
enum<string>

Identificador de red opcional. Si se omite, la red se deduce del formato de la dirección: las direcciones bc1, 1 y 3 son de Bitcoin (BTC), las direcciones T son de Tron (TRX) y las claves públicas base58 son de Solana (SOL). Una dirección 0x es válida en todas las redes EVM, por lo que, si se omite blockchain para ella, la respuesta es 422 con las redes candidatas en candidate_chains. El análisis gestionado admite 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) y HBAR (Hedera). USDT y USDC son alias heredados de Ethereum, no búsquedas en varias redes. La cobertura de los proveedores conectados varía. LIGHTNING requiere un proveedor conectado compatible. CELO (Celo), MODE (Mode) y PLUME (Plume) se analizan a través de una cuenta de TRM Labs conectada; el análisis gestionado responde 400 para ellas. Alias: currency.

Opciones disponibles:
BTC,
LIGHTNING,
ETH,
LTC,
XRP,
BCH,
DOGE,
TRX,
SOL,
MATIC,
BNB,
USDT,
USDC,
BASE,
OP,
ARB,
AVAX,
ADA,
XLM,
HBAR,
CELO,
MODE,
PLUME
Ejemplo:

"ETH"

direction
enum<string>

Opcional. Indica si la dirección se analiza como contraparte entrante (depósito) o saliente (retiro). Acepta inbound, outbound, deposit o withdrawal. Si se omite, se realiza por defecto un análisis neutro previo a la transferencia. Este valor se pasa al proveedor solo como contexto; no cambia el risk_score ni la severity devueltos, ni los desgloses source_of_funds/destination_of_funds, que siempre se devuelven ambos independientemente de direction. Por tanto, cambiar u omitir direction no requiere volver a analizar una dirección.

Opciones disponibles:
inbound,
outbound,
deposit,
withdrawal

Respuesta

El resultado normalizado del análisis de wallets.

provider
string
requerido

Proveedor que realizó el análisis (p. ej., merklescience, crystal).

screening_type
enum<string>
requerido

Siempre WALLET_SCREENING para este endpoint.

Opciones disponibles:
WALLET_SCREENING
risk_score
integer
requerido

Puntuación de riesgo normalizada de 0 a 100. Un valor más alto indica una mayor exposición a entidades de riesgo. Merkle Science califica una dirección de 0 a 5, lo que se corresponde con 0, 15, 35, 55, 75 o 95.

severity
enum<string>
requerido

Nivel de riesgo derivado de risk_score: 0-9 UNKNOWN, 10-39 LOW, 40-69 MEDIUM, 70-89 HIGH, 90-100 CRITICAL. UNKNOWN es la banda más baja, no un estado aparte sin datos: un risk_score de 0 (el caso habitual de una dirección limpia) significa que no hay ninguna evaluación adversa, mientras que una puntuación distinta de cero en el rango 1-9 es una señal real pero inferior a LOW; consulta el risk_score, no solo la banda. Nunca trates UNKNOWN como una calificación afirmativa de riesgo bajo o sin riesgo; no lo muestres como aprobado.

Opciones disponibles:
UNKNOWN,
LOW,
MEDIUM,
HIGH,
CRITICAL
status
enum<string>
requerido

Estado del resultado del análisis.

Opciones disponibles:
SCREENED,
PENDING,
ERROR
summary
string
requerido

Resumen legible del resultado del análisis.

wallet_address
string
requerido

La dirección analizada, devuelta tal cual.

blockchain
string
requerido

La blockchain que se analizó.

source_of_funds
object[]
requerido

De dónde recibió fondos la dirección, atribuido por entidad. Cada entrada es un desglose de exposición.

destination_of_funds
object[]
requerido

A dónde envió fondos la dirección, atribuido por entidad. Misma estructura de elementos que source_of_funds, con exposure_direction = outgoing.

counterparty_connections
object[]
requerido

Entidades a las que el proveedor atribuye la dirección analizada. En Merkle Science provienen de las etiquetas de propietario y de usuario de la propia dirección, por lo que la misma entidad puede aparecer dos veces, y no incluyen flujos de fondos: received_usd, sent_usd, received_hops y sent_hops son null y percentage es 0. No tomes decisiones de enrutamiento según risk_level o is_direct aquí: usa sanctions_hit, dominant_risk_category y risk_factors[].is_high_risk para el veredicto, y exposure_type en source_of_funds/destination_of_funds para saber si la exposición es directa.

sanctions_hit
boolean
requerido

True si la dirección tiene exposición directa o indirecta a sanciones.

dominant_risk_category
string | null
requerido

Categoría de alto riesgo con mayor peso, o null cuando ninguna es dominante (p. ej., sanctioned, mixer, stolen_funds).

report_signature
string
requerido

Firma HMAC-SHA256 opaca sobre este resultado exacto, limitada a tu aplicación. No tiene significado por sí sola: vuelve a enviar el cuerpo completo de la respuesta, sin modificar e incluyendo este campo, a POST /v3/wallet-screening/pdf/ para generarlo como PDF. El endpoint de PDF rechaza la solicitud con 400 si falta report_signature o si se editó algún campo firmado (p. ej., risk_score, severity, sanctions_hit) antes de reenviarlo.

transaction_hash
string | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

block_timestamp
string | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

total_value_usd
number | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

fee_usd
number | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

sender_rows
object[]

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre está vacío en un resultado de análisis de wallets.

receiver_rows
object[]

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre está vacío en un resultado de análisis de wallets.

transaction_flows
object[]

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre está vacío en un resultado de análisis de wallets.

transaction_flows_status
string | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

transaction_flows_error
string | null

Campo del análisis de transacciones, compartido con la estructura del resultado. Siempre es null en un resultado de análisis de wallets.

network_nodes
object[]

Nodos del grafo de exposición para el análisis de transacciones. Vacíos en un resultado de análisis de wallets.

network_edges
object[]

Aristas del grafo de exposición para el análisis de transacciones. Vacías en un resultado de análisis de wallets.

pep_counterparty
boolean | null

Exposición como persona expuesta políticamente. null cuando no hay ningún hallazgo de PEP disponible, lo que ocurre hoy en todos los resultados porque ningún proveedor lo informa; false solo ante un resultado de análisis negativo explícito. No interpretes null como una comprobación de PEP completada.

risk_factors
object[]

Explicación ordenada de risk_score: qué produjo este veredicto. Los proveedores califican una dirección según su propio modelo y devuelven solo un veredicto (Merkle Science devuelve un entero de 0 a 5), por lo que la puntuación por sí sola no permite actuar. Se ordena primero por alto riesgo y luego por el valor que pasó por cada factor, con un máximo de los cinco más relevantes; source_of_funds y destination_of_funds siempre contienen el desglose completo. Un risk_score alto sin ninguna entrada is_high_risk significa que el proveedor no informó ninguna coincidencia con sanciones ni con entidades atribuidas y calificó la dirección únicamente según su propio modelo de exposición; summary lo indica de forma explícita.

raw_response
object

El payload propio del proveedor. Su estructura depende del proveedor y puede cambiar sin previo aviso: lee los campos normalizados en lugar de analizarlo.

Última modificación el 1 de noviembre de 2026