> ## 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.

# Informe de screening AML: coincidencias y JSON

> Interpreta el informe de screening AML de Didit: coincidencias en sanciones, PEP y medios adversos, puntuaciones de riesgo y monitorización continua.

## Descripción general

El análisis AML coteja la identidad verificada de la persona con conjuntos de datos globales de sanciones, PEP, listas de vigilancia y medios adversos. Cada coincidencia devuelve la entidad coincidente, los conjuntos de datos que produjeron la coincidencia y dos puntuaciones: `match_score` (confianza en la identidad) y `risk_score` (riesgo de la entidad). También incluye un desglose estructurado por fuente (`pep_matches[]`, `sanction_matches[]`, `warning_matches[]`, `adverse_media_matches[]`). La puntuación agregada `score` es el `risk_score` más alto entre las coincidencias que no están marcadas como `False Positive`.

El análisis AML devuelve la misma estructura en las sesiones de usuario (KYC), en las sesiones de empresas (KYB) y en la API de AML independiente.

![Captura de pantalla del informe de análisis AML de Didit con coincidencias de sanciones, PEP y medios adversos](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/aml-screening-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=5b74561abdd242f108fee1b429ff5020)

## Dónde aparece en las respuestas de la API

En el endpoint de decisión de la sesión, el análisis AML se devuelve como el array en plural **`aml_screenings[]`**. Cada entrada corresponde a una ejecución de AML en el flujo (una comprobación AML que se ejecuta dos veces produce dos entradas con valores de `node_id` distintos).

```text theme={null}
GET /v3/session/{sessionId}/decision/
  ──▶ { "aml_screenings": [ { node_id, status, total_hits, hits, … }, … ] }
```

Las sesiones de AML independientes y las sesiones de empresas devuelven la misma estructura por registro. Los campos que aparecen a continuación reflejan el esquema canónico de la página [Modelos de datos](https://docs.didit.me/es/reference/data-models.md#análisis-aml).

## Tres puntuaciones, no un único veredicto

El `status` es un veredicto, y los números de los que se derivó están en el mismo payload. Consúltalos cuando construyas tus propios niveles de riesgo en lugar de ramificar solo según `Approved` / `In Review` / `Declined`. Por ejemplo, puedes combinar el riesgo AML con respuestas de cuestionarios como el origen del patrimonio o la autodeclaración de PEP:

| Puntuación | Dónde | Escala | Responde a |
| - | - | - | - |
| `hits[].match_score` | por coincidencia | 0-100 | ¿Esta coincidencia es la misma persona que la analizada? Determina el `review_status` inicial de la coincidencia. |
| `hits[].risk_score` | por coincidencia | 0-100 | ¿Qué riesgo representa la entidad coincidente? Depende de las categorías de la coincidencia (sanción, PEP, delito, ...). |
| `score` | por análisis | 0-100 | El `risk_score` más alto entre las coincidencias que no están marcadas como `False Positive`. Es el valor que se compara con los umbrales de aprobación y revisión para producir el `status`. |

Las tres están presentes en todos los lugares donde se entrega el informe AML: `GET /v3/session/{sessionId}/decision/`, el objeto `decision` de los webhooks `status.updated` y `data.updated` en **todas** las versiones de webhook (V3 `aml_screenings[]` y el `aml` en singular de las versiones heredadas V2 / V1) y la API de AML independiente. Un consumidor que solo ve una etiqueta de alerta / sin alertas está leyendo el `status` (o el `review_status` de una coincidencia) y omite las puntuaciones que lo acompañan. La consola muestra los mismos números: el encabezado de la sección AML incluye la **Puntuación de riesgo** agregada, y cada fila de la tabla de coincidencias incluye la **Puntuación de coincidencia** y la **Puntuación de riesgo**, con un desglose al pasar el cursor.

## Esquema

Consulta [Análisis AML en la referencia de modelos de datos](https://docs.didit.me/es/reference/data-models.md#análisis-aml) para ver el esquema canónico. Campos de nivel superior:

| Campo | Tipo | Notas |
| - | - | - |
| `status` | `Not Finished` \| `Approved` \| `Declined` \| `In Review` | Estado a nivel de función (`FeatureStatusChoices`). Determina las reglas del flujo de verificación (workflow) y la pantalla de revisión manual. |
| `total_hits` | integer | Número de entradas en `hits[]`. `0` cuando no hay coincidencias. |
| `entity_type` | `person` \| `company` | El tipo de sujeto analizado. Las empresas y las personas físicas usan una lógica de coincidencia distinta. |
| `score` | float (0-100) \| null | Puntuación de riesgo AML agregada: el `risk_score` más alto entre los hits no marcados como `False Positive`. `0` cuando no hay posibles coincidencias; `null` hasta que se ejecuta el análisis. |
| `hits` | `Hit[]` | Una entrada por cada registro coincidente, **incluidos** los hits clasificados automáticamente como `False Positive` (siguen en la lista, pero se excluyen del `score` agregado). Consulta los campos por hit más abajo. |
| `screened_data` | object | Los valores exactos que Didit envió al análisis: `full_name`, `date_of_birth`, `nationality` (ISO 3166-1 alfa-2), `document_number`. Útil para explicar un hit a un revisor o para auditar qué se buscó. |
| `is_ongoing_monitoring_enabled` | boolean | `true` en cuanto activas la monitorización continua para la sesión. |
| `next_ongoing_monitoring_bill_date` | string \| null | `YYYY-MM-DD` de la próxima renovación anual de **la facturación** (`last_aml_bill_date` + 365 días). `null` hasta que se activa la monitorización. No es una fecha de análisis: consulta `last_ongoing_screening_at` más abajo. |
| `last_ongoing_screening_at` | string (ISO 8601) \| null | Momento en que la monitorización continua completó por última vez un nuevo análisis de este registro, haya cambiado o no el resultado. `null` cuando el registro nunca se ha vuelto a analizar desde que se publicó este campo; nunca se rellena retroactivamente a partir de la fecha de activación ni de la de facturación. |
| `last_ongoing_screening_datasets_updated_at` | string (ISO 8601) \| null | La fecha de actualización más reciente de los conjuntos de datos AML que el proveedor informó en el momento de ese análisis. `null` cuando el proveedor no informó fechas de los conjuntos de datos; nunca se estima. |
| `warnings` | `Warning[]` | Etiquetas de advertencia específicas de AML. Consulta [Advertencias AML](https://docs.didit.me/es/core-technology/aml-screening/warnings-aml-screening.md). |
| `node_id` | string \| null | Identifica el nodo del grafo del flujo que produjo esta ejecución AML en las respuestas de sesión de `/v3/`. La respuesta de la API AML independiente no lo incluye. |

### Campos por hit

Cada entrada de `hits[]` tiene los siguientes campos (se muestra un subconjunto). Los arrays de origen de la coincidencia (`pep_matches[]`, `sanction_matches[]`, `warning_matches[]`, `adverse_media_matches[]`) solo se rellenan para los conjuntos de datos a los que pertenece el hit.

| Campo | Tipo | Notas |
| - | - | - |
| `id` | string | Identificador estable del hit: `hit_` seguido de 24 caracteres hexadecimales. La misma entidad coincidente conserva el mismo `id` cuando el sujeto se vuelve a analizar. Úsalo como `hit_id` al actualizar `review_status` mediante el endpoint de estado de hits AML. |
| `caption` | string | El nombre principal de la entidad tal como figura en el conjunto de datos. |
| `datasets` | string\[] | Categorías de riesgo en las que figura la entidad: `PEP` (con su nivel, de `PEP Level 1` a `PEP Level 4`), `Sanctions`, `Adverse Media`, `Warnings and Regulatory Enforcement`, `Fitness and Probity`, `SIP`, `SIE` o `Insolvency`, y `Other Lists` cuando la fuente de la entidad no indica ninguna de ellas. |
| `match_score` | number (0-100) | Confianza en la identidad: la probabilidad de que el hit sea la misma persona. Los hits por debajo de `aml_match_score_threshold` (por defecto `93`) empiezan como `False Positive`; los que lo igualan o superan empiezan como `Unreviewed`. Consulta [Puntuación de coincidencia AML](https://docs.didit.me/es/core-technology/aml-screening/aml-match-score.md). |
| `risk_score` | number (0-100) | Riesgo de la entidad: el nivel de riesgo que presenta la entidad coincidente. El `risk_score` más alto entre los hits que no son `False Positive` se convierte en el `score` de nivel superior. Consulta [Puntuación de riesgo AML](https://docs.didit.me/es/core-technology/aml-screening/aml-risk-score.md). |
| `score` | number (0-1) | Puntuación de coincidencia ponderada **obsoleta**. Usa `match_score` en su lugar. |
| `match` | boolean \| null | Indicador heredado de coincidencia exacta. Es preferible usar `match_score` + `review_status`. |
| `target` | boolean \| null | Indica si la entidad es el objetivo directo de la inclusión en la lista. |
| `review_status` | `Unreviewed` \| `Confirmed Match` \| `False Positive` \| `Inconclusive` | El valor inicial se deriva de comparar `match_score` con `aml_match_score_threshold`. Se puede modificar mediante el endpoint de estado de hits AML; actualizarlo dispara un webhook `data.updated`, pero **no** recalcula automáticamente el `status` de la función: para eso, usa el endpoint de estado AML o la revisión en la consola. |
| `score_breakdown` | object | Cómo se calculó `match_score`: puntuaciones de nombre, fecha de nacimiento y país, ponderaciones, contribuciones y el efecto "llave maestra" del número de documento (`MATCH` lo fija en 100, `NEUTRAL` mantiene la puntuación base, `HARD_MISMATCH` penaliza). |
| `properties` | object | Atributos sin procesar del conjunto de datos (nombres, alias, fechas de nacimiento, ciudadanía, …). Útil para resolver el caso. |
| `url` | string \| null | URL de origen de la entidad coincidente, cuando está disponible. |
| `rca_name` | string \| null | Cuando el hit es un familiar o allegado cercano (RCA), el nombre de la persona relacionada a través de la cual se produjo la coincidencia. |
| `pep_matches[]` | object\[] | Cargos PEP, publicadores, fechas de nacimiento y formación académica del hit. |
| `sanction_matches[]` | object\[] | Nombre de la lista de sanciones, programa, autoridad sancionadora, fecha de inclusión en la lista y URL de origen. |
| `warning_matches[]` | object\[] | Registros genéricos de listas de vigilancia o de acciones de aplicación de la normativa. |
| `adverse_media_matches[]` | object\[] | Medios adversos a nivel de artículo: titular, resumen, sentimiento, URL de origen, fecha de publicación y palabras clave. |
| `adverse_media_details` | object \| null | Sentimiento agregado de medios adversos y recuento de palabras clave de todo el hit. |
| `risk_view` | object | Desglose del riesgo del hit ponderado por categoría, país y delito (`risk_level`, `risk_scores`, `weightage`). |
| `linked_entities[]` | object\[] | Entidades relacionadas que el conjunto de datos vincula al hit (por ejemplo, familiares o socios comerciales). |
| `first_seen` / `last_seen` | string \| null | Cuándo el conjunto de datos registró esta entrada por primera y por última vez. |
| `additional_information` | object | Datos adicionales de formato libre del proveedor del conjunto de datos. |

> [!NOTE]
>
> Los hits clasificados como `False Positive` (porque `match_score` quedó por debajo del umbral de puntuación de coincidencia o porque un revisor los marcó así) permanecen en `hits[]` para que se puedan auditar. Solo se excluyen del cálculo del `score` agregado.

### Monitorización continua

Cuando `is_ongoing_monitoring_enabled` es `true`, Didit vuelve a analizar al sujeto de forma continua y emite de nuevo el informe AML cada vez que se añade, se elimina o cambia una coincidencia. Los nuevos análisis que cambian el estado AML disparan un webhook `status.updated`; los que solo cambian los datos de las coincidencias disparan `data.updated`. El periodo de monitorización abarca 365 días a partir de `last_aml_bill_date`; `next_ongoing_monitoring_bill_date` indica cuándo se produce la siguiente renovación anual.

Todas esas señales dependen de cambios, así que un sujeto analizado de nuevo durante meses sin coincidencias nuevas no genera ninguna. `last_ongoing_screening_at` es el único campo que se actualiza en **cada** ejecución completada, y el [endpoint del historial de análisis](https://docs.didit.me/es/core-technology/aml-screening/continuous-monitoring-aml-screening.md#demostrar-que-la-monitorización-se-ejecutó) enumera cada ejecución por separado, incluidas las que no cambiaron nada. Consulta [Monitorización AML continua](https://docs.didit.me/es/core-technology/aml-screening/continuous-monitoring-aml-screening.md) para ver el ciclo de vida completo.

> [!WARNING]
>
> Tres fechas de este informe significan tres cosas distintas. `next_ongoing_monitoring_bill_date` es cuándo se te factura la próxima vez. `last_ongoing_screening_at` es cuándo se analizó realmente al sujeto por última vez. `last_ongoing_screening_datasets_updated_at` es cuándo el proveedor actualizó por última vez las listas en las que se basa ese análisis. Solo la segunda demuestra que el control se ejecutó.

## Valores de estado

| Valor | Significado |
| - | - |
| `Not Finished` | El análisis AML aún no se ha ejecutado para esta sesión o este nodo. |
| `Approved` | La puntuación agregada está en el umbral de aprobación o por debajo (por defecto `80`), incluso cuando no hay coincidencias o todas las coincidencias son `False Positive` (puntuación `0`). |
| `In Review` | La puntuación agregada está por encima del umbral de aprobación (y en el umbral de revisión o por debajo), o se disparó `COULD_NOT_PERFORM_AML_SCREENING`. |
| `Declined` | La puntuación agregada está por encima del umbral de revisión (por defecto `100`, por lo que el rechazo automático solo se produce si lo reduces), o el estado se estableció manualmente. |

Los umbrales se pueden configurar por nodo del flujo; consulta [Puntuación de riesgo AML](https://docs.didit.me/es/core-technology/aml-screening/aml-risk-score.md). Las reglas de estado personalizadas se combinan con el estado derivado según la precedencia `Declined` > `In Review` > `Approved`; los revisores también pueden anular el estado AML desde la consola o mediante el endpoint de estado AML.

## Ejemplos

### Aprobado — sin coincidencias

```json theme={null}
{
  "aml_screenings": [
    {
      "node_id": "aml-1",
      "status": "Approved",
      "total_hits": 0,
      "entity_type": "person",
      "score": 0,
      "hits": [],
      "screened_data": {
        "full_name": "Jane Doe",
        "nationality": "US",
        "date_of_birth": "1990-06-12",
        "document_number": "P9876543"
      },
      "is_ongoing_monitoring_enabled": false,
      "last_ongoing_screening_at": null,
      "last_ongoing_screening_datasets_updated_at": null,
      "next_ongoing_monitoring_bill_date": null,
      "warnings": []
    }
  ]
}
```

### En revisión — coincidencia con PEP y medios adversos

Todos los nombres, URL y artículos que aparecen a continuación son ficticios.

```json theme={null}
{
  "aml_screenings": [
    {
      "node_id": "aml-1",
      "status": "In Review",
      "total_hits": 1,
      "entity_type": "person",
      "score": 85,
      "hits": [
        {
          "id": "hit_7c1e9a40b2d35f86e0a4c912",
          "caption": "John Q. Exampleton",
          "datasets": ["PEP"],
          "match_score": 96,
          "risk_score": 85,
          "score": 0.97,
          "match": false,
          "target": null,
          "review_status": "Unreviewed",
          "properties": {
            "name": ["John Q. Exampleton"],
            "alias": ["Johnny Example"],
            "birthDate": ["1974"],
            "birthPlace": ["Springfield"]
          },
          "score_breakdown": {
            "name_score": 95,
            "name_weight": 60,
            "name_weight_normalized": 70.59,
            "name_contribution": 67.06,
            "dob_score": 100,
            "dob_weight": 25,
            "dob_weight_normalized": 29.41,
            "dob_contribution": 29.41,
            "country_score": 0,
            "country_weight": 15,
            "country_weight_normalized": 0,
            "country_contribution": 0,
            "document_number_match_type": "NEUTRAL",
            "document_number_effect": "No document number provided for screening",
            "total_score": 96
          },
          "pep_matches": [
            {
              "list_name": "Example PEP Registry",
              "publisher": "Example Registry",
              "matched_name": "John Q. Exampleton",
              "pep_position": "Regional council member",
              "date_of_birth": "1974-01-01",
              "place_of_birth": "Springfield",
              "source_url": "https://example.org/registry/entities/Q0000001"
            }
          ],
          "sanction_matches": [],
          "warning_matches": [],
          "adverse_media_matches": [
            {
              "country": "freedonia",
              "headline": "Court opens inquiry into council hiring irregularities",
              "summary": "John Q. Exampleton is named in a legal investigation regarding irregularities in public hiring.",
              "sentiment": "moderately negative",
              "sentiment_score": -2,
              "source_url": "https://example-news.org/articles/12345",
              "publication_date": "2025-06-09T10:19:10",
              "adverse_keywords": ["fraud", "irregularities"]
            }
          ],
          "adverse_media_details": {
            "sentiment": "Moderately Negative",
            "sentiment_score": -2,
            "entity_type": "person",
            "adverse_keywords": { "fraud": 3, "corruption": 2 }
          },
          "risk_view": {
            "categories": { "score": 100.0, "weightage": 50, "risk_level": "High", "risk_scores": { "PEP": 100.0 } },
            "countries":  { "score": 0.0,   "weightage": 30, "risk_level": "Low",  "risk_scores": {} },
            "crimes":     { "score": 0.0,   "weightage": 20, "risk_level": "Low",  "risk_scores": {} },
            "custom_list": {}
          },
          "linked_entities": [
            { "name": ["Mary Exampleton"], "relation": [], "details": [], "active": [], "status": [] }
          ],
          "first_seen": "2025-01-18T00:00:00",
          "last_seen": "2025-06-13T00:00:00"
        }
      ],
      "screened_data": {
        "full_name": "John Q. Exampleton",
        "nationality": "US",
        "date_of_birth": "1974-01-01",
        "document_number": null
      },
      "is_ongoing_monitoring_enabled": true,
      "next_ongoing_monitoring_bill_date": "2027-05-17",
      "warnings": [
        {
          "feature": "AML",
          "risk": "POSSIBLE_MATCH_FOUND",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "Possible match found in AML screening",
          "long_description": "The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.",
          "node_id": "aml-1"
        }
      ]
    }
  ]
}
```

## Contenido relacionado

* [Advertencias de AML](https://docs.didit.me/es/core-technology/aml-screening/warnings-aml-screening.md): todos los códigos de advertencia que puede emitir el análisis AML
* [Puntuación de riesgo AML](https://docs.didit.me/es/core-technology/aml-screening/aml-risk-score.md) y [Puntuación de coincidencia AML](https://docs.didit.me/es/core-technology/aml-screening/aml-match-score.md): cómo se calculan las dos puntuaciones
* [Monitorización AML continua](https://docs.didit.me/es/core-technology/aml-screening/continuous-monitoring-aml-screening.md): cómo activar y consumir los eventos de monitorización
* [Base de datos de listas de vigilancia](https://docs.didit.me/es/core-technology/aml-screening/watchlist-database-aml-screening.md): conjuntos de datos cubiertos
* [Modelos de datos — Análisis AML](https://docs.didit.me/es/reference/data-models.md#análisis-aml): esquema canónico
* [Webhooks](https://docs.didit.me/es/integration/webhooks.md): `status.updated` se dispara cuando el análisis AML cambia el estado de la sesión; los cambios en el estado de revisión de las coincidencias y las actualizaciones de datos de la monitorización disparan `data.updated`


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