API de licencias de conducción de Colombia por documento
PlacApi expone una API REST para consultar las licencias de conducción de una persona en Colombia usando su tipo y número de documento. Devuelve en JSON el estado del conductor en el RUNT, cada licencia con su categoría y vigencias, si tiene multas asociadas y el número de paz y salvo. Es un endpoint por persona (no por placa): las licencias son del conductor, no del vehículo.
¿No eres desarrollador? Consulta el RUNT por placa aquí sin escribir código.
Qué problema resuelve
Validar la licencia de un conductor —para vincularlo a una flota, una app de movilidad o un seguro— exige consultar el RUNT ciudadano, que resuelve por captcha y no ofrece API pública. PlacApi lo entrega como un endpoint REST por documento, con la respuesta ya normalizada en JSON.
Para quién sirve
Apps de movilidad y última milla que verifican conductores, aseguradoras, empresas de transporte y flotas que exigen licencia vigente antes de asignar un vehículo.
Datos requeridos
- docType — tipo de documento de la persona (CC, CE…).
- docNumber — número de documento de la persona. No se requiere placa.
Fuentes y cobertura
- RUNT ciudadanoLicencias de conducción por persona: categoría, vigencias, estado del conductor, multas asociadas y paz y salvo. Consultado por cédula, sin placa.
¿Se consulta por placa o por cédula?
Por documento de la persona (docType y docNumber). Las licencias son del conductor, no del vehículo, así que no se envía placa.
¿Devuelve todas las licencias y categorías?
Sí: data.licenses[] lista cada licencia con su categoría (A1, B1, C1…), estado y fechas de expedición y vencimiento. data.totalLicenses indica cuántas hay.
Ejemplo de solicitud
POST https://placapi.com/api/licencia. Autenticación por API key en el header x-api-key. Los datos del ejemplo son ficticios.
curl -X POST 'https://placapi.com/api/licencia' \
-H 'x-api-key: pk_live_TU_CLAVE' \
-H 'content-type: application/json' \
-d '{"docType":"CC","docNumber":"1020304050"}'Ejemplo de respuesta
Respuesta JSON (fragmento con los campos de esta consulta; la API integral devuelve todas las fuentes en el mismo objeto).
{
"data": {
"documentType": "CC",
"documentNumber": "1020304050",
"fullName": "JUAN PÉREZ",
"driverStatus": "ACTIVO",
"citizenStatus": "ACTIVA",
"inscriptionNumber": "20310213",
"inscriptionDate": "08/02/2021",
"totalLicenses": "1",
"licenses": [
{
"category": "B1",
"status": "ACTIVA",
"licenceNumber": "885466652067",
"expeditionDate": "23/04/2025",
"dueDate": "23/04/2035",
"substratum": "12345678"
}
],
"infractions": {
"tieneMultas": "NO",
"nroPazYSalvo": "PS-20310213"
},
"requests": [],
"aptitudeCertificates": [],
"medicalCertificates": []
},
"mode": "live"
}Explicación campo por campo
| Campo | Tipo | Descripción |
|---|---|---|
| data.driverStatus | string | Estado del conductor en el RUNT (ACTIVO, INACTIVO…). |
| data.citizenStatus | string | Estado del ciudadano en el RUNT (ACTIVA, INACTIVA…). |
| data.totalLicenses | string | Cantidad de licencias registradas para la persona. |
| data.licenses[].category | string | Categoría de la licencia (A1, A2, B1, C1…). |
| data.licenses[].status | string | Estado de cada licencia (ACTIVA, VENCIDA, SUSPENDIDA…). |
| data.licenses[].dueDate | string (DD/MM/YYYY) | Fecha de vencimiento de la licencia. |
| data.licenses[].expeditionDate | string (DD/MM/YYYY) | Fecha de expedición de la licencia. |
| data.infractions.tieneMultas | string | "SI"/"NO": si la persona tiene multas asociadas. |
| data.infractions.nroPazYSalvo | string | Número de paz y salvo cuando aplica. |
Tiempo de respuesta
Entre 30 y 90 segundos la primera vez —es lo que tardan los portales oficiales en responder—. Reconsultar la misma placa es casi instantáneo porque el resultado queda en caché.
Precio y cobro
1 crédito por consulta con datos, desde 349 COP. El precio por crédito baja por volumen: 349 COP desde 30, 249 COP desde 1.000, 149 COP desde 5.000, 139 COP desde 10.000, 119 COP desde 20.000, 99 COP desde 50.000. Los créditos se compran por adelantado (mínimo 30 = 10.470 COP), no vencen y no hay mensualidad. El mismo precio aplica por la web y por API. Solo se cobra cuando la consulta devuelve datos; por API, las consultas sin resultado (404) tienen 10 gratis al mes por cada tipo de respuesta sin datos y después cobran igual.
Caché y actualización
El estado de una licencia cambia poco, así que se cachea por días; una suspensión o renovación reciente puede requerir refrescar.
Seguridad y privacidad
La placa y el documento se usan solo para ejecutar la consulta; el resultado queda en caché temporal. No se almacenan datos de tarjetas (los pagos los procesa Wompi). Ver privacidad y seguridad.
Limitaciones y posibles errores
- La consulta es por persona (documento), no por placa.
- Las fechas vienen en formato DD/MM/YYYY, tal como las expone el RUNT.
- Si el RUNT ciudadano no responde, la consulta devuelve error.
- PlacApi reporta lo que el RUNT expone; no emite, renueva ni gestiona licencias.
Códigos de error del endpoint (401, 402, 429, 5xx) en la referencia de errores.
Otras preguntas frecuentes
¿Informa si el conductor tiene multas?
+
Sí: data.infractions.tieneMultas devuelve "SI"/"NO" y data.infractions.nroPazYSalvo el número de paz y salvo cuando aplica.
Seguir explorando
Última revisión: 27 de julio de 2026 · Versión de la API: v1 · Fuentes y metodología