Respuesta corta: Para verificar a un conductor en Colombia antes de despacharle carga, valida seis cosas por API: identidad con comparación facial y prueba de vida, licencia y categoría en el RUNT (/v2/co/runt/conductor), multas y suspensiones en el SIMIT, formación SISCONMP si transporta mercancías peligrosas, antecedentes en la Policía y SOAT y RTM del vehículo.
Si operas una transportadora, un 3PL, una flota de última milla o una app de domicilios, la pregunta no es solo “¿quién es esta persona?”. También importa si su licencia sirve para ese vehículo, si está vencida o suspendida y si el camión puede salir a la vía. Esta guía arma ese flujo con las APIs de Verifik, paso por paso, con ejemplos de código, los campos que debes leer y una tabla de decisión que tu equipo de operaciones puede aplicar el mismo día.
Checklist: qué verificar de un conductor antes de despacharle carga
Estos son los seis controles, en el orden en que conviene hacerlos:
- Identidad: que la cédula exista y que la persona que se presenta sea su titular (selfie con prueba de vida comparada con la foto del documento).
- Licencia en el RUNT: estado
ACTIVA, categoría correcta para el vehículo, fecha de vencimiento y suspensiones registradas. - SIMIT: multas pendientes por cédula y suspensiones o cancelaciones de la licencia.
- SISCONMP: curso vigente si el conductor transporta mercancías peligrosas.
- Antecedentes: consulta en la Policía Nacional.
- Vehículo: SOAT y revisión técnico-mecánica (RTM) vigentes para la placa del viaje.
Ninguna de estas consultas reemplaza tu estudio de seguridad ni tu criterio, pero convierte una revisión manual de varias páginas oficiales en llamadas a una sola API, con respuestas firmadas que puedes guardar como evidencia.
¿Quieres probarlo? Crea tu cuenta en Verifik y haz tu primera consulta hoy.
Por qué ahora: temporada alta, transportistas falsos y cambios en la licencia
El último trimestre concentra presión sobre la operación. En su guía del 15 de octubre de 2026, el Grupo Experto en Hurtos de Satrack explica que la temporada alta multiplica los viajes, el inventario en movimiento, las entregas urgentes y las excepciones. Su calendario marca fechas como Black Friday (27 de noviembre) y los puentes festivos, y pide revisar a los terceros y vehículos temporales que entran en los picos de pedidos.

El otro riesgo no necesita armas. Fenix describe (21 de octubre de 2026) a los transportistas falsos: alguien se hace pasar por una transportadora real, consigue que le asignen el despacho y se lleva la mercancía con los papeles en orden. Según las alertas de IUMI y TAPA EMEA que cita, estos grupos usan empresas fachada, identidades de compañías legítimas, credenciales robadas y documentos falsificados, y en Alemania los casos pasaron de 80 en 2022 a 266 en 2024. En Colombia no hay reportes públicos de este esquema, pero la contratación de carga por plataformas digitales crea las mismas condiciones. La vulnerabilidad aparece antes de que el vehículo salga, en el momento de decidir a quién se le entrega la carga. Ahí es donde una verificación rápida del conductor y del vehículo marca la diferencia.
Las plataformas de reparto tienen además una razón legal: el artículo 26 de la Ley 2466 de 2025 les exige crear un mecanismo de reconocimiento de identidad plena que permita individualizar a cada trabajador digital de reparto, respetando el habeas data.
Paso 1: identidad con cédula y comparación facial con prueba de vida
Empieza por confirmar que quien se registra es el titular del documento. El endpoint POST /v2/face-recognition/compare-with-liveness compara una selfie en vivo (probe) con la foto del documento (gallery) y, si la comparación supera el umbral, ejecuta la prueba de vida sobre la selfie. Según la documentación, compare_min_score acepta valores entre 0,67 y 0,95 y liveness_min_score vale 0,6 si no lo envías.
curl -X POST "https://api.verifik.co/v2/face-recognition/compare-with-liveness" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
-d '{
"probe": "<selfie_base64>",
"gallery": ["<foto_cedula_base64>"],
"search_mode": "ACCURATE",
"liveness_min_score": 0.6,
"compare_min_score": 0.8
}'La respuesta trae comparison.score y liveness.passed. Para validar además la cédula contra la Registraduría y sumar listas, revisa nuestra guía de API KYC en Colombia.
Paso 2: licencia en el RUNT (estado, categoría, vencimiento y suspensiones)
El endpoint GET https://api.verifik.co/v2/co/runt/conductor consulta el RUNT con el tipo y número de documento del conductor. Acepta CC, CE, PA (pasaporte) y PPT; para pasaporte el parámetro primerApellido es obligatorio. La documentación explica dos formas de cobro desde el 1 de septiembre de 2026:
- Premium: omites
primerApellidoy Verifik resuelve el apellido internamente. - Básica: envías
primerApellidoy se omite la consulta de nombre. Es la misma tarifa de la ruta v3, donde el apellido es obligatorio.
Consulta Premium (sin apellido):
curl -G "https://api.verifik.co/v2/co/runt/conductor" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789"Consulta Básica (con apellido, misma URL):
curl -G "https://api.verifik.co/v2/co/runt/conductor" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789" \
--data-urlencode "primerApellido=GARCIA"El mismo llamado en Python:
import os, requests
url = "https://api.verifik.co/v2/co/runt/conductor"
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}",
}
params = {"documentType": "CC", "documentNumber": "123456789"}
r = requests.get(url, headers=headers, params=params, timeout=60)
print(r.json())Respuesta 200 de ejemplo de la documentación, recortada a los campos que usarás para decidir:
{
"data": {
"citizenStatus": "ACTIVA",
"documentNumber": "63535709",
"documentType": "CC",
"driverStatus": "ACTIVO",
"infractions": {
"nroPazYSalvo": "840377030067",
"tieneMultas": "NO"
},
"licenses": [
{
"category": "B1",
"dueDate": "19/09/2034",
"endDateSuspension": null,
"expeditionDate": "19/09/2024",
"otExpide": "SECRETARIA DISTRITAL DE MOVILIDAD DE BOGOTA ",
"restrictions": null,
"startDateSuspension": null,
"status": "ACTIVA"
}
],
"medicalCertificates": [],
"totalLicenses": "1"
},
"signature": {
"dateTime": "October 10, 2025 7:29 PM",
"message": "Certified by Verifik.co"
},
"id": "3R2V0"
}Qué leer en cada respuesta:
driverStatusycitizenStatus: estado del conductor y del documento en el RUNT.licenses[]: una entrada por licencia, concategory,status(por ejemploACTIVA),dueDate,restrictions,otExpidey las fechasstartDateSuspension/endDateSuspension.infractions.tieneMultas: un primer aviso de multas, que luego amplías en el SIMIT.medicalCertificatesyaptitudeCertificates: certificados asociados al conductor.
El error más común en operación es aprobar una licencia ACTIVA de una categoría que no corresponde al vehículo. Un conductor puede tener varias categorías, así que compara cada una contra las que tu política exige para ese tipo de vehículo. Esta función hace el chequeo básico:
// Convierte "19/09/2034" (formato RUNT) en fecha
const parseRunt = (s) => {
const [d, m, y] = s.split("/").map(Number);
return new Date(y, m - 1, d);
};
// requiredCategories: las categorías que TU política exige para ese vehículo
function isFitToDrive(runtData, requiredCategories, today = new Date()) {
if (runtData.driverStatus !== "ACTIVO") return false;
return runtData.licenses.some((lic) =>
requiredCategories.includes(lic.category) &&
lic.status === "ACTIVA" &&
parseRunt(lic.dueDate) > today &&
!lic.startDateSuspension // sin suspensión registrada en esa licencia
);
}Si el documento está mal escrito o falta un parámetro, la API responde 409; si el RUNT no tiene registro, 404 NotFound:
{
"code": "MissingParameter",
"message": "documentType must be one of: [CC, CE, PPT, PA, NIT]"
}Para el detalle del endpoint por sí solo, lee nuestra guía de verificación de licencias de conducir en Colombia.
Paso 3: SIMIT, multas y suspensiones por cédula
El SIMIT agrega dos señales que el RUNT no siempre muestra completas. GET /v2/co/simit/consultar devuelve las multas[] de una persona (valor, placa, infracciones y estadoComparendo), los cursos y los acuerdosPago, con montos en pesos (documentación). GET /v2/co/simit/suspensiones se enfoca en suspensiones o cancelaciones de la licencia (documentación):
curl -G "https://api.verifik.co/v2/co/simit/suspensiones" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789"Ejemplo de respuesta de la documentación (recortado):
{
"data": {
"documentType": "CC",
"documentNumber": "123456789",
"suspensiones": [
{
"numeroResolucion": "RES-2024-000123",
"fechaSuspension": "2024/03/15",
"estado": "VIGENTE"
}
]
},
"signature": {
"message": "Certified by Verifik.co",
"dateTime": "April 8, 2026 11:00 PM"
}
}Los nombres de los campos vienen del SIMIT y pueden variar frente al ejemplo, así que lee la lista con tolerancia. Una lista suspensiones vacía puede significar que no se encontraron suspensiones para esa identidad. Para multas por placa y el resto de registros, consulta nuestra guía del SIMIT en Colombia.
Paso 4: formación SISCONMP para mercancías peligrosas
Si el conductor transporta mercancías peligrosas, verifica su formación en el SISCONMP, el sistema de control y monitoreo de ese personal. GET /v2/co/sisconmp/trainings recibe documentType (CC, CE o PA) y documentNumber:
curl -G "https://api.verifik.co/v2/co/sisconmp/trainings" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789"Según la documentación, la respuesta incluye el curso (nameTraining, por ejemplo “CURSO BASICO”), la institución, expirationDate del curso, expirationDateLicense e inactive (“No” indica que el registro está activo). Bloquea el despacho de carga peligrosa si el curso está vencido. Más detalle en nuestra guía de verificación SISCONMP.
Paso 5: antecedentes judiciales en la Policía
GET /v2/co/policia/consultar (también acepta POST) verifica si la persona tiene asuntos pendientes con las autoridades judiciales y devuelve la frase oficial en data.details. Acepta CC, CE, PPT, PA y DP (documentación).
Dos detalles prácticos: cuando el portal de la Policía no puede generar el certificado en línea, la API igual responde 200 con la frase de atención presencial, y los fallos temporales de la fuente llegan como 409 Endpoint_out_of_service. Trata ambos casos como “pendiente de revisión”, no como aprobado. Lo explicamos en la guía de antecedentes policiales por API.
Paso 6: el vehículo, SOAT y RTM vigentes
El conductor puede estar en regla y el camión no. GET /v2/co/runt/vehiculo recibe la placa y el documento del propietario, y devuelve los objetos soat y techReview, cada uno con valid y dueDate (documentación). Lo cubrimos a fondo en la guía de consulta de SOAT y tecnomecánica.
Si el vehículo es de un tercero y no tienes el documento del propietario, la consulta RUNT por placa parte solo de la placa e incluye los bloques de SOAT y tecnomecánica cuando existen.
Cómo combinar los pasos en el alta y antes de cada despacho
No todas las consultas se repiten con la misma frecuencia. La identidad y la biometría se validan en el alta (y otra vez si cambia el celular o la cuenta). La licencia, el SIMIT, los antecedentes y el vehículo cambian con el tiempo, así que conviene repetirlos de forma periódica, por ejemplo cada mes, y antes de cada viaje cuando la carga es de alto valor.

Este ejemplo en JavaScript hace la biometría en el alta y lanza en paralelo las cuatro consultas de despacho. Reutiliza la función isFitToDrive del paso 2:
import axios from "axios";
const api = axios.create({
baseURL: "https://api.verifik.co",
headers: { Authorization: `Bearer ${process.env.VERIFIK_TOKEN}` },
timeout: 60000,
});
const doc = { documentType: "CC", documentNumber: conductor.cedula };
// Alta: identidad + biometría (una vez, y de nuevo si cambia el celular o la cuenta)
const { data: rostro } = await api.post("/v2/face-recognition/compare-with-liveness", {
probe: selfieBase64,
gallery: [fotoCedulaBase64],
search_mode: "ACCURATE",
});
// Antes de cada despacho (o cada mes): licencia, SIMIT, antecedentes y vehículo en paralelo
const [runt, susp, policia, vehiculo] = await Promise.all([
api.get("/v2/co/runt/conductor", { params: doc }),
api.get("/v2/co/simit/suspensiones", { params: doc }),
api.get("/v2/co/policia/consultar", { params: doc }),
api.get("/v2/co/runt/vehiculo", {
params: { documentType: "CC", documentNumber: propietario.cedula, plate: viaje.placa },
}),
]);
const apto =
isFitToDrive(runt.data.data, viaje.categoriasExigidas) &&
vehiculo.data.data.soat.valid &&
vehiculo.data.data.techReview.valid;
// Guarda cada respuesta con su id y su signature como evidencia del despachoGuarda el id y la signature (“Certified by Verifik.co”) de cada respuesta junto con la orden de transporte. Si algo sale mal, tendrás evidencia de qué verificaste, cuándo y con qué resultado.
Tabla de decisión: del resultado a la acción
| Resultado | Acción sugerida |
|---|---|
Biometría aprobada, licencia ACTIVA en la categoría exigida y dueDate futura | Aprobar y seguir con SIMIT, antecedentes y vehículo |
Licencia vencida, suspendida o con startDateSuspension registrada | Bloquear el despacho |
| Licencia activa pero de otra categoría | Reasignar a un vehículo compatible o bloquear |
| Suspensión en el SIMIT o multas pendientes altas según tu política | Revisión manual antes de asignar |
| Curso SISCONMP vencido o inactivo (carga peligrosa) | Bloquear para mercancías peligrosas |
| Policía: registra asuntos pendientes, atención presencial o 409 | Revisión manual; no aprobar automáticamente |
SOAT o RTM con valid en false | El vehículo no sale hasta renovar |
404 NotFound en el RUNT | Pedir el documento original y repetir la consulta |
Qué viene: examen teórico obligatorio y licencia por puntos
El régimen de la licencia está cambiando, y eso refuerza la idea de consultar la fuente en vez de confiar en una copia del documento:
- Examen teórico: según la Circular Externa 20261010000277 del Viceministerio de Transporte, desde el lunes 14 de septiembre de 2026 la expedición de la primera licencia y las recategorizaciones exigen aprobar el examen teórico en todo el país.
- Licencia por puntos: el Ministerio de Transporte presentó el 2 de noviembre de 2026 una propuesta en la que cada conductor tendría un puntaje que baja con cada infracción y podría perder la licencia al agotarlo. Es una propuesta dentro de la reforma al Código Nacional de Tránsito, todavía no está vigente.
Cómo elegir un proveedor de verificación de conductores
En Colombia hay APIs locales de datos vehiculares y plataformas internacionales de identidad. Antes de elegir, compara estos criterios:
| Criterio | Qué preguntar | Verifik |
|---|---|---|
| Fuente oficial | ¿Consulta el RUNT, el SIMIT y la Policía o solo revisa la imagen del documento? | Consulta las fuentes oficiales |
| Categoría y suspensiones | ¿Devuelve cada categoría con estado, vencimiento y fechas de suspensión? | Sí, en licenses[] |
| Mercancías peligrosas | ¿Incluye el SISCONMP? | Sí, /v2/co/sisconmp/trainings |
| Biometría | ¿Liga a la persona con el documento con comparación facial y prueba de vida? | Sí, compare-with-liveness |
| Evidencia | ¿Cada respuesta llega firmada y con un id? | Sí, signature e id |
| Cobertura | ¿Sirve también para otros países de la región? | Varios países de LATAM en la misma cuenta |
Si tu operación es de logística, revisa también nuestra página de soluciones para logística.
Precios y cómo empezar
Las consultas se pagan con créditos. Los planes de smartCHECK van de $49 al mes (Starter) a $129 (Basic), $299 (Plus) y $649 (Business); en el plan anual, el Starter cuesta $490 y entrega $588 en créditos. El costo de cada endpoint lo ves en tu panel, y en /v2/co/runt/conductor la tarifa depende de si envías el primer apellido (Básica) o no (Premium). Si tu equipo no programa, smartCHECK permite elegir el servicio, ver el resultado en formato no code y hacer consultas masivas cargando un CSV.
Puedes crear tu cuenta y probar el flujo con tus propios conductores, o revisar la documentación del RUNT conductor para empezar a integrar.




