AMLConsensus · curso
Programa · Lección 5.4
Sección 5 · Lección 5.4

API y automatización de las comprobaciones AML

Comprobar una dirección a mano lleva un minuto. Pero cuando cientos de clientes al día pasan por tu exchanger o por tu bot, comprobar cada uno manualmente es imposible. Aquí es donde entra la API de AML: una interfaz programática que toma una dirección y devuelve un veredicto en una fracción de segundo. En esta lección desglosamos cómo funciona la API por dentro, cómo integrarla en el flujo de fondos entrantes y por qué un servicio serio no puede operar sin automatización.

Qué es una API de AML, en términos sencillos

Una API (Application Programming Interface, interfaz de programación de aplicaciones) es el «enchufe» donde tu programa conecta una petición y recibe una respuesta de vuelta. En lugar de abrir un sitio web, pegar una dirección en un campo y leer un informe con los ojos, tu código envía la dirección por la red y recibe una respuesta estructurada, normalmente en formato JSON. La diferencia es como ir al pozo con un cubo cada vez frente a tener cañerías dentro de casa.

La idea clave: la entrada es una dirección (y una red), la salida es un veredicto. El veredicto casi siempre consta de tres cosas: una puntuación de riesgo numérica (0–100), una categoría de riesgo (por ejemplo, mixer, sanctions, scam, exchange) y una recomendación (aceptar / comprobar manualmente / rechazar). Todo lo demás es detalle: cuotas de exposición, una lista de contactos de riesgo, la profundidad de saltos.

Petición
dirección + red
→
Motor AML
etiquetas, sanciones, grafo
→
Respuesta (JSON)
score, categoría, veredicto

Qué aspecto tienen una petición y una respuesta

Técnicamente una petición es una llamada HTTP ordinaria. Envías parámetros y una clave de autorización al endpoint del servicio. Esquemáticamente tiene este aspecto:

Petición: GET /v1/check?address=0xABC...&network=eth con la cabecera Authorization: Bearer YOUR_KEY.

Respuesta (simplificada):

{ "score": 78, "risk": "high", "category": "mixer", "exposure": { "mixer": 41, "exchange": 22, "unknown": 37 }, "verdict": "reject" }

Tu código lee el campo verdict y el campo score, y decide qué hacer a continuación en función de ellos. Sin «ojos» y sin lectura manual: todo se convierte en una bifurcación dentro del programa.

Por qué JSON, no un «informe bonito». A un humano le resulta cómodo un informe con imágenes; una máquina quiere una estructura estricta. La API devuelve datos para que puedan analizarse programáticamente: comparar un número con un umbral, comprobar si una categoría está en una lista, escribirlo en una base de datos. Un informe bonito para el cliente puede después ensamblarse en tu lado a partir de estos campos.

Integración en un exchanger o bot: el flujo de comprobación a la entrada

Trabajemos con un escenario típico: un cliente quiere cambiar USDT por rublos y te envía la dirección desde la que llegará la cripto (o la dirección de depósito que le diste, a la que ya ha enviado los fondos). Un servicio adecuado comprueba la dirección antes de entregar dinero/rublos. Aquí está el flujo paso a paso.

  1. El cliente inicia la operación. Especifica la red y el importe; el bot/sitio emite una dirección de depósito o acepta la dirección del remitente.
  2. La transacción llega. Tu backend capta la transferencia entrante (vía un webhook del nodo o consultando el explorador) y extrae la dirección del remitente.
  3. Una llamada automática a la API de AML. El código envía la dirección a la API y recibe JSON de vuelta en 0,3–2 segundos.
  4. Bifurcación por umbral. Si score < 40 — aprobación automática, la operación continúa. Si 40–74 — pasa a un operador para revisión manual. Si ≥ 75 o la categoría es sanctions/mixer — rechazo automático y retención de los fondos.
  5. Registro (logging). El resultado de la comprobación (score, categoría, hora, respuesta de la API) se guarda en la base de datos: esta es tu base probatoria en caso de disputa o requerimiento.
  6. Respuesta al cliente. Aprobado — pago; gris — «la comprobación llevará algún tiempo, por favor indica el origen de los fondos»; rechazado — devolución a la dirección del remitente (importante: devuélvelo exactamente adonde vino).
Depósito recibido
→
API de AML
→
<40: pago
40–74: operador
≥75: alto

Webhooks: monitorización sin sondeo constante

Hay dos formas de obtener datos: sondeo (polling) —tú mismo preguntas «¿y bien, ya ha llegado?» cada N segundos— y un webhook —el servicio llama a tu puerta por sí mismo cuando ocurre un evento—. Un webhook es más eficiente: registras tu URL con el proveedor, y este envía una petición POST cuando, por ejemplo, una nueva transacción ha pasado por una dirección vigilada o su estado de riesgo ha cambiado.

Seguridad del webhook. Dado que un webhook es una petición entrante a tu servidor, debes verificar su autenticidad: comprobar la firma (HMAC) o un token secreto. De lo contrario un atacante podría falsificar una «aprobación» y colar una operación sucia. Nunca confíes en un webhook sin verificar la firma.

Límites, caché y coste

Cada llamada a la API cuesta dinero o consume cuota. Por eso una integración bien pensada siempre incluye: caché (no compruebes la misma dirección diez veces por minuto: guarda el resultado durante unas horas), un límite de tasa (rate limit) (para que no llegues al techo de tu plan), y una reserva para el bot (si la misma clave sirve al sitio y al bot, aparta lo suficiente para que el sitio no «se coma» toda la cuota). Esta es exactamente la lógica implementada en los sistemas reales: caché + tope + reserva.

Por qué un no programador debería saber esto. Aunque no escribas código, encargarás la integración o elegirás un proveedor. Entender qué son un endpoint, un umbral, un webhook y una caché te permite fijar un pliego técnico claro y evitar pagar de más por llamadas excesivas.

La lección en resumen

Este material tiene fines educativos. Los nombres de campos y los formatos son ilustrativos y dependen del proveedor concreto.