Documentación API
Introducción
Bienvenido a la documentación de la API de AML Protektor.

Esta documentación proporciona la información necesaria para integrar nuestro servicio de Debida Diligencia en tus sistemas de manera sencilla y segura. A través de los endpoints disponibles podrás crear contrapartes, iniciar procesos de Debida Diligencia y consultar la información resultante una vez finalizado el proceso.
Inicio Rápido
Para comenzar a utilizar la API de AML Protektor, sigue estos pasos:

  1. Solicita la activación de la integración por medio de la API al equipo de AML Protektor.
  2. Una vez que tu integración esté activa, recibirás un token de acceso que necesitarás para autenticar tus solicitudes a la API.
  3. Revisa los endpoints disponibles en esta documentación y utiliza el token para realizar solicitudes a la API según tus necesidades.
Descripción
La API de AML Protektor permite integrar el proceso de Debida Diligencia de contrapartes dentro de sistemas externos o aplicaciones empresariales.

Mediante esta API es posible:
  • Crear contrapartes e iniciar su proceso de Debida Diligencia.
  • Enviar automáticamente el formulario para su diligenciamiento.
  • Consultar la información registrada una vez el proceso haya finalizado.
El servicio utiliza arquitectura REST y respuestas en formato JSON, permitiendo una integración sencilla con diferentes plataformas y lenguajes de programación.
Arquitectura: REST API
Formato de respuesta: JSON
Autenticación: Token en Headers
Autenticación
Para utilizar la API de AML Protektor es necesario contar con un token de acceso asociado a la empresa. Este token es proporcionado por el equipo de AML Protektor una vez que se ha solicitado la activación de la integración por medio de la API.

El token debe enviarse en los headers de cada petición realizada a los endpoints de la API.
URL Base
https://api.amlprotektor.com
Todos los endpoints descritos en esta documentación deben utilizar esta URL como base para realizar las solicitudes.
Header de autenticación
token: YOUR_API_TOKEN
Todas las solicitudes a la API deben incluir el token de acceso en los headers de la petición. Este header es obligatorio en todas las solicitudes.
Ejemplo de Header
POST /api/createContrapart HTTP/1.1
Host: api.amlprotektor.com
Content-Type: application/json
token: YOUR_API_TOKEN
Método de entrada
Descripción
Este endpoint permite crear una contraparte en AML Protektor y enviar automáticamente el correo electrónico para iniciar el proceso de Debida Diligencia. Nota: este endpoint hace las veces del botón Crear Contraparte dentro de la aplicación de AML Protektor.
POST
/api/createContrapart
Body - Content type: application/json
    
{ "Name": "Nombre de la contraparte", "TypeIdentification": "Ver tabla de referencia (enviar ID)", "Identification": "Identificación de la contraparte", "Address": "Dirección de la contraparte", "Email": "Correo electrónico de la persona encargada de realizar la Debida Diligencia", "PhoneNumber": "Celular de la persona encargada de realizar la Debida Diligencia", "IdRisk": "Ver tabla de referencia (enviar ID)", "TypeCounterpart": "Ver tabla de referencia (enviar ID)", "ExpeditionDate": "Fecha de expedición de la cédula en los casos que aplique formato (DD/MM/AAAA)", "EmailNotification": "Correo electrónico de notificación (existe una contraparte por diligenciar)" , "CityName": "Nombre de la Ciudad", "Country": "Nombre del País", "State": "Nombre del Departamento", "DialCodePhoneNumber": "Código telefónico relacionado al celular" }
Tablas de referencia

★ "TypeIdentification"

ID Nombre
1 CC
2 CE
3 NIT
4 PP

★ "IdRisk"

ID Tipo de flujo
2 Regular: Este tipo de flujo se determina para todas las contrapartes que se le va a hacer la debida diligencia con todos los pasos
3 Simplificado: Este tipo de flujo se determina para todas las contrapartes que ya tienen implementado el sistema de SAGRILAFT en su empresa y por ende únicamente se va a pedir el certificado del mismo

★ "TypeCounterpart"

ID Nombre
1 Cliente
2 Proveedor
3 Empleado
4 Accionista
5 Contratista
6 Otro

Ejemplo de Header
Ejemplo de Body
Respuestas

✗ ERRORES
401
{ message: "Error: El token es requerido" }
Este error se genera cuando se hace la petición a la API sin llevar el token en los Headers.
403
{ message: "Error: El token enviado no esta asociado a ninguna empresa" }
Este error se genera porque el token que se envía no es identificado por el sistema como un token válido, en este caso hay validar que se esté enviando el token tal cual incluyendo puntos, comas, guiones, etc. En caso de haber validado todo lo anterior y persistir el error, se debe comunicar con soporte para que genere un nuevo token.
403
{ message: "Error: La empresa no cuenta con la funcionalidad activa" }
Este error se genera cuando no se ha activado la integración por medio de API a la empresa, en este caso hay que comunicarse con soporte para que la active.
404
{ message: "Los siguientes campos son requeridos: Fields" }
Este error se genera cuando el request no contiene la cantidad de campos requeridos: Fields equivale a algun dato o datos que faltan por llenar en el Body.
422
{ message: "Error: Field no válido" }
Este error se genera cuando algún dato en el Body no es válido: Field equivale a un dato específico.
400
{ message: "Error: Este número de documento ya tiene un proceso en curso" }
Este error se genera cuando el número de documento ya tiene un proceso en curso, es decir, ya se creo la contraparte pero aún ha sido diligenciada.
503
{ message: "Error creando la contraparte" }
Error interno.
✔ EXITOSO
200
{ message: "pre-formulario creado correctamente" }
Todo esta correcto y se crea el pre-formulario.
Método de salida
Descripción
Método por el cual es posible obtener los datos de aquella contraparte que ya realizo la Debida Diligencia.
GET
/api/getDataContrapart/:numeroDeDocumento
El parámetro en la petición :numeroDeDocumento se reemplaza por el número de documento que se desea consultar.
Ejemplo
Respuestas

✗ ERRORES
401
{ message: "Error: El token es requerido" }
Este error se genera cuando se hace la petición a la API sin llevar el token en los Headers.
403
{ message: "Error: El token enviado no esta asociado a ninguna empresa" }
Este error se genera porque el token que se envía no es identificado por el sistema como un token válido, en este caso hay validar que se esté enviando el token tal cual incluyendo puntos, comas, guiones, etc. En caso de haber validado todo lo anterior y persistir el error, se debe comunicar con soporte para que genere un nuevo token.
403
{ message: "Error: El token no se encuentra activo" }
Este error se genera cuando no se ha activado la integración por medio de API a la empresa, en este caso hay que comunicarse con soporte para que la active.
404
{ message: "No existe un formulario asociado a la empresa con el número de documento :numeroDeDocumento" }
Este error se genera cuando la identificación solicitada a traves de la API no existe en la empresa.
400
{ message: "El formulario no se ha diligenciado en su totalidad" }
Este error se genera cuando ha sido lanzado un formulario para su Debida Diligencia, y la contraparte aún no lo ha terminado de diligenciar.
503
{ message: "Error obteniendo información de la contraparte" }
Error interno.
✔ EXITOSO
200 - Respuesta exitosa
    
{ "mainInformation": { "Name": "Nombre", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "Address": "Dirección", "Email": "ejemplo@dominio.com", "PhoneNumber": "Celular", "IdRisk": "Tipo de flujo", "TypeCounterpart": "Tipo de contraparte", "ExpeditionDate": "Fecha de expedición", "FormState": "Estado del formulario", "DialCodePhoneNumber": "Código telefónico", "City": "Ciudad", "Country": "País", "State": "Departamento" }, "otherInformation": { "MainEconomicActivity": "", "codeCIIU": "", "AnnualOrdinaryIncome": 0, "AnnualTotalIncome": 0, "Assets": 0, "Liabilities": 0, "ConceptOthersMonthlyIncome": "", "PublicResources": 0, "HoldsPublicOffice": 0, "PublicRecognition": 0, "RelationPublicExposed": 0, "InternationalOperation": 0, "InternacionalOperationImports": 0, "InternacionalOperationExports": 0, "InternationalOperationDescrip": "", "HasIntFinProducts": 0, "Investments": 0, "Transfers": 0, "FinancialProductsAbroadDescrip": "", "FlowType": 2, "tradeWithVirtualAssets": 0, "tradeWithVirtualAssetsDescrip": "" }, "dataFinProduct": [ { "Id": 134, "ProductTypeName": "N/A", "ProductNumber": "", "Entity": "", "Amount": 0, "CountryName": "N/A", "CurrencyName": "N/A" } ], "legalRepresentatives": [ { "Name": "Nombre del representante", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "PlaceOfBirth": "Lugar de nacimiento", "ExpeditionDate": "Fecha de expedición", "DateBorn": "Fecha de nacimiento", "Address": "Dirección ", "PhoneNumber": "Celular", "Occupation": "Cargo", "Principal": "SI o NO", "PublicResource": "0", "Political": "0" } ], "boardDirectors": [ { "Name": "Nombre del miembro de la junta directiva", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "City": "Ciudad Junta directiva", "ExpeditionDate": "Fecha de expedición", "PhoneNumber": "Celular", "Principal": "SI o NO " } ], "shareholders": [ { "Name": "Nombre del accionista", "Actions": Cantidad de acciones, "TypeIdentification": "Tipo de documento", "Identification": "Número de documento", "ExpeditionDate": "Fecha de expedición", "PublicResource": "NO", "Political": "0", "Partner": "Empresa socia" } ], "taxAuditors": { "Name": "Nombre", "TypeIdentification": "Tipo de identifcación", "Identification": "Número de documento", "City": "Ciudad", "ExpeditionDate": "Fecha de expedición", "PhoneNumber": "Celular" }, "queries": [ { "documentNumber": "Número de documento (Consulta)", "typeDoc": "Tipo de identificación (Consulta)", "name": "Nombre (Consulta)", "findings": { "altos": [], "bajos": [], "infos": [], "medios": [] }, "errors": "Fuentes con errores" } ] }
mainInformation: Información principal del formulario.
otherInformation: Información adicional del formulario.
dataFinProduct: Arreglo con la informacion de productos financieros en el extranjero. Si no existe información correspondiente responde un vector vacío [].
legalRepresentatives: Arreglo con la información de los representantes legales. Si no existe información correspondiente responde un vector vacío [].
boardDirectors: Arreglo con la información de la junta directiva. Si no existe información correspondiente responde un vector vacío [].
shareholders: Arreglo con la información de los accionistas. Si no existe información correspondiente responde un vector vacío [].
taxAuditors: Información con la información de los revisores fiscales. Si no existe información correspondiente responde un objeto vacío {}.
queries: Arreglo con las consultas realizadas a las personas y empresas relacionadas a la contraparte.
Obtener datos de contrapartes (Formularios Personalizados)
Descripción
Este endpoint permite obtener la información de una contraparte que ha finalizado su proceso de Debida Diligencia mediante formularios personalizados. El servicio devuelve los datos registrados en el formulario, junto con información general de la contraparte y el estado final del proceso.
Este endpoint solo retorna información cuando el formulario ha finalizado su proceso de Debida Diligencia. Si el proceso aún se encuentra en curso, la API responderá con un error indicando que el formulario no ha sido completado.
Endpoint
GET
/api/counterparts/:numeroDeDocumento/custom-form
El parámetro :numeroDeDocumento corresponde al número de documento de la contraparte que se desea consultar.
Requiere autenticación:
Ejemplo
Respuestas

✗ ERRORES
401
{
    "success": false,
    "error": {
        "code": "TOKEN_REQUIRED",
        "message": "El token es requerido"
    } 
}
Este error ocurre cuando la petición se realiza sin enviar el token en los headers.
401
{
    "success": false,
    "error": {
        "code": "INVALID_TOKEN",
        "message": "El token enviado no es válido"
    }
}
Este error ocurre cuando el token enviado no es reconocido por el sistema, en este caso hay validar que se esté enviando el token tal cual incluyendo puntos, comas, guiones, etc. Verifique que el token sea correcto o contacte soporte.
403
{
    "success": false,
    "error": {
        "code": "TOKEN_DISABLED",
        "message": "El token no se encuentra activo"
    }
}
Este error ocurre cuando la empresa no tiene activa la integración por API.
404
{
    "success": false,
    "error": {
        "code": "FORM_NOT_FOUND",
        "message": "No existe un formulario asociado al documento :numeroDeDocumento"
    }
}
Este error ocurre cuando el documento consultado no tiene formularios asociados.
409
{
    "success": false,
    "error": {
        "code": "FORM_NOT_COMPLETED",
        "message": "El formulario aún no se ha diligenciado en su totalidad"
    }
}
Este error ocurre cuando la Debida Diligencia aún no ha sido finalizada por la contraparte, es decir, el proceso todavía se encuentra en curso.
500
{
    "success": false,
    "error": {
        "code": "INTERNAL_ERROR",
        "message": "Ocurrió un error interno procesando la solicitud"
    }
}
Error interno del sistema.
✔ EXITOSO
200
{
    "success": true,
    "data": {
        "nombreFormulario": "Formulario Persona Natural",
        "nombreContraparte": "Juan Pérez",
        "identificacion": "123456789",
        "estado": "Aprobado",
        "fechaCreacion": "25/02/2026 03:20 PM",
        "respuestaJSON": { }
    }
}
nombreFormulario: Nombre del formulario personalizado utilizado.
nombreContraparte: Nombre completo de la contraparte.
identificacion: Número de documento de la contraparte.
estado: Estado final del formulario (Firmado, Aprobado o Rechazado).
fechaCreacion: Fecha y hora en que fue creado el formulario de la contraparte.
respuestaJSON: Objeto JSON que contiene todas las respuestas registradas por la contraparte en el formulario personalizado.
¿Necesitas ayuda?
Si tienes alguna pregunta o necesitas asistencia técnica, no dudes en ponerte en contacto con nuestro equipo al correo alejandra.perez@amlprotektor.com

Estamos emocionados de que utilices la API de AML Protektor y esperamos que esta documentación te ayude a aprovechar al máximo todas sus capacidades.