Endpoint: licencias de conducción
Con el tipo y número de documento —más el primer apellido del titular, que la fuente oficial exige desde el 6 de agosto de 2026— devuelve las licencias de conducción de una persona: categorías, vigencias, estado, suspensiones, multas y paz y salvo.
Licencias de conducción por cédula (RUNT ciudadano): datos del conductor (nombre, estado de conductor y de ciudadano, número y fecha de inscripción), el arreglo licenses con una entrada por categoría —categoría, estado, número, organismo que expide, expedición, vencimiento, restricciones y, si aplica, resolución y fechas de suspensión— y los bloques de infracciones, solicitudes, certificados de aptitud y médicos, trámites SICOV, pagos ANSV, validaciones de identidad e impuestos de tránsito. Los bloques que el RUNT devuelve vacíos para la mayoría de documentos llegan como arreglos vacíos, no como null. Desde el 6-ago-2026 la fuente oficial exige el primerApellido del titular y devuelve el nombre ENMASCARADO (J**N P***Z). Acá el campo es OPCIONAL y define el precio: 1 crédito si envías el apellido, 2 si no lo mandas —en ese caso lo averiguamos por ti—. Si no lo mandas y tampoco se logra averiguar, la respuesta es 400 apellido_requerido y no cobra; si el registro de donde lo averiguamos no responde, es 503 identidad_no_disponible con Retry-After, que tampoco cobra. Dos aclaraciones: el status de cada categoría es el estado de la LICENCIA en el RUNT —por eso una categoría con la vigencia vencida puede decir ACTIVA; la fecha con la que se lee la vigencia es dueDate—, y infractions: null significa que esa sección del RUNT no se pudo consultar, no que la persona no tenga multas.
Cuerpo de la solicitud
{
"docType": "CC",
"docNumber": "1020304050",
"primerApellido": "PÉREZ"
}| Campo | Tipo | Qué es |
|---|---|---|
| docTypeobligatorio | string | Tipo de documento (CC, CE, NIT, PA, TI, CD, PPT, RC). Se aceptan alias comunes: PAS y PASAPORTE se normalizan a PA, y P.P.T. y P.P. se normalizan a PPT.Valores: CC · CE · NIT · PA · TI · CD · PPT · RC |
| docNumberobligatorio | string | Número de documento. Alias aceptado: `doc`. |
| primerApellido | string | Primer apellido del titular del documento. La fuente oficial lo exige desde el 6-ago-2026, pero acá es OPCIONAL: **1 crédito si envías el apellido, 2 si no lo mandas** (lo averiguamos por ti). Si no lo mandas y tampoco se logra averiguar, la respuesta es 400 con `code: "apellido_requerido"` y no cobra; si no se pudo averiguar porque el registro de identidad no respondió, es 503 `identidad_no_disponible` con `Retry-After` (tampoco cobra: reintenta o manda el apellido). Una vez averiguado queda asociado al documento, así que la siguiente consulta de esa misma cédula vuelve a costar 1. ⚠️ Envía el **primer apellido**, no un nombre: si el que mandas no es el del titular, con algunas personas la respuesta es 404 `consulta_sin_resultado` en vez de 400, idéntica a la de alguien sin registro. Ante un 404 con apellido, verifícalo antes de concluir que no tiene licencias. Alias aceptados: `apellido`, `firstLastName`, `primer_apellido`. |
| refresh | boolean | Ignora la caché y vuelve a consultar la fuente oficial. Ojo: una consulta refrescada con datos siempre cobra (el hit de caché no). |
Ejemplos por lenguaje
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","primerApellido":"PÉREZ"}'const res = await fetch("https://placapi.com/api/licencia", {
method: "POST",
headers: {
"x-api-key": "pk_live_TU_CLAVE",
"content-type": "application/json",
},
body: JSON.stringify({"docType":"CC","docNumber":"1020304050","primerApellido":"PÉREZ"}),
});
const data = await res.json();import requests
res = requests.post(
"https://placapi.com/api/licencia",
headers={"x-api-key": "pk_live_TU_CLAVE"},
json={"docType":"CC","docNumber":"1020304050","primerApellido":"PÉREZ"},
)
data = res.json()Respuesta exitosa
{
"data": {
"documentType": "CC",
"documentNumber": "1020304050",
"fullName": "J**N P***Z",
"driverStatus": "ACTIVO",
"citizenStatus": "ACTIVA",
"inscriptionNumber": "20310213",
"inscriptionDate": "08/02/2021",
"consultationDateTime": "11/07/2026",
"totalLicenses": "1",
"licenses": [
{
"category": "B1",
"status": "ACTIVA",
"licenceNumber": "1020304050",
"otExpide": "INSTITUTO DE MOVILIDAD",
"expeditionDate": "23/04/2025",
"dueDate": "23/04/2035",
"examExpirationDate": null,
"restrictions": null,
"authorityTransit": null,
"resolutionNumber": null,
"startDateSuspension": null,
"endDateSuspension": null,
"substratum": "1020304050"
}
],
"infractions": {
"tieneMultas": "NO",
"nroPazYSalvo": "885466652067"
},
"requests": [],
"aptitudeCertificates": [],
"medicalCertificates": [],
"sicovRequests": [],
"ANSVpayments": [],
"identityValidationAttempts": {
"estadoUsuario": "ACTIVO",
"fechaDesbloqueo": null,
"validaciones": []
},
"identityValidationRequests": {
"estadoUsuario": "ACTIVO",
"fechaDesbloqueo": null,
"validaciones": []
},
"transitTaxes": {}
},
"mode": "live",
"fetchedAt": "2026-07-24T15:04:05.000Z"
}Errores y cobro
Cuesta 1 crédito cuando devuelve datos. Códigos posibles: 400 401 402 404 429 500 502 — qué significa cada uno, cuál reintentar y cuál cobra, en errores y rate limits. Autenticación por x-api-key: cómo generar la clave.
Cómo la usan, sector por sector, las empresas que verifican la licencia de sus conductores: API de licencias de conducción.
Última revisión: 6 de agosto de 2026 · PlacApi opera desde Colombia. PlacApi no es una entidad oficial del Gobierno.