Screening AML

Cotejo contra listas de sanciones, personas políticamente expuestas y medios adversos, con re-screening periódico por portafolio.

Un screening devuelve hits, no veredictos: la decisión de negocio sigue siendo tuya.

El monitoreo continuo se dispara por portafolio, no por persona.

Lanzar un screening

POST /v1/screenings

Requiere una API key secreta (belfort_{env}_sk_…) con scope aml:write.

Coteja una empresa y sus personas asociadas contra listas de sanciones, PEP y medios adversos. Idempotency-Key obligatoria.

Parámetros

Idempotency-Key header

Cuerpo de la petición

application/json · schema ScreeningCreate

CampoRequeridoTipoDescripción
companyId sí string Opaque company id.

Respuestas

201 Successful Response — ScreeningResponse

CampoRequeridoTipoDescripción
companyScreeningId sí string Opaque screening id.
personScreeningIds sí string[]
status sí string
totalHits sí integer

Errores posibles (problem+json): 400 405 422 500

Listar coincidencias

GET /v1/screening-hits

Requiere una API key secreta (belfort_{env}_sk_…) con scope aml:read.

Las coincidencias encontradas, filtrables por estado. Una coincidencia es material para decidir, no una decisión.

Parámetros

status query
limit query Tamaño de página (1–100).
startingAfter query nextCursor de la página anterior. Excluyente con endingBefore.
endingBefore query previousCursor de la página actual. Excluyente con startingAfter.
includeTotal query Calcula totalCount. Cuesta un COUNT(*) sobre el filtro entero, así que está apagado por defecto: pídelo solo cuando vayas a enseñar el total.

Respuestas

200 Successful Response — ListEnvelope_ScreeningHitResponse_

CampoRequeridoTipoDescripción
data sí ScreeningHitResponse[]
hasMore sí boolean true si quedan resultados después de esta página.
limit sí integer El límite realmente aplicado (puede ser menor al pedido).
nextCursor no string | null Pásalo como startingAfter para la siguiente página.
object no "list"
previousCursor no string | null Pásalo como endingBefore para la página anterior.
totalCount no integer | null Total de coincidencias. Solo se calcula si pides includeTotal=true — es un COUNT(*) sobre el filtro entero y no se cobra a quien no lo necesita.

Errores posibles (problem+json): 400 405 422 500

Re-escanear un portafolio

POST /v1/monitoring/portfolios/{portfolio_id}/run

Requiere una API key secreta (belfort_{env}_sk_…) con scope aml:write.

Vuelve a cotejar todo un portafolio contra las listas actualizadas. Es el mecanismo de monitoreo continuo.

Parámetros

portfolio_id path · requerido string

Respuestas

200 Successful Response — MonitoringRunResponse

CampoRequeridoTipoDescripción
completedAt sí string (date-time) | null
error sí string | null
id sí string Opaque monitoring run id.
newHits sí integer | null
portfolioId sí string Opaque monitoring portfolio id.
startedAt sí string (date-time) | null
status sí string
subjectsScreened sí integer | null

Errores posibles (problem+json): 400 405 422 500