Saltar al contenido principal
POST
curl

Por qué no guarda estado

El análisis de wallets independiente no escribe nada en la tabla de transacciones, así que este endpoint no tiene ningún registro almacenado a partir del cual generar el documento. En su lugar, vuelves a enviar exactamente el JSON que ya te devolvió POST /v3/wallet-screening/, y Didit convierte ese payload en un PDF sin volver a consultar a ningún proveedor.

El campo report_signature

Cada respuesta de POST /v3/wallet-screening/ incluye ahora un campo report_signature: una firma opaca vinculada a tu aplicación. Este endpoint la verifica antes de generar el PDF, de modo que nadie puede editar risk_score, severity, sanctions_hit ni ningún otro campo y obtener un PDF con la marca de Didit, de aspecto legítimo, para un resultado que Didit nunca produjo. Vuelve a enviar siempre el cuerpo completo de la respuesta sin modificar, incluido report_signature. Puedes reordenar las claves; no puedes cambiar ningún valor firmado.

Facturación

No se realiza ninguna solicitud a ningún proveedor y no se factura nada: esto solo vuelve a renderizar un resultado que ya pagaste al llamar a POST /v3/wallet-screening/.

Errores

Próximos pasos

Analizar wallet

Ejecuta el análisis de wallet bajo demanda subyacente y obtén el resultado JSON que debes volver a publicar aquí.

Análisis de wallets bajo demanda

Visión general del endpoint independiente de análisis de wallets y de su modelo de resultados.

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

El objeto JSON sin modificar que devuelve POST /v3/wallet-screening/, incluido report_signature.

Misma estructura que la respuesta de POST /v3/wallet-screening/: devuelve ese cuerpo de respuesta tal cual, incluido report_signature.

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.

Respuesta

El documento PDF generado, devuelto directamente como binario application/pdf: no hay envoltorio JSON.

The response is of type file.

Última modificación el 1 de noviembre de 2026