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.

POST/api/licencia1 crédito

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

body (JSON)
{
  "docType": "CC",
  "docNumber": "1020304050",
  "primerApellido": "PÉREZ"
}
Parámetros del cuerpo de la solicitud
CampoTipoQué es
docTypeobligatoriostringTipo 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
docNumberobligatoriostringNúmero de documento. Alias aceptado: `doc`.
primerApellidostringPrimer 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`.
refreshbooleanIgnora 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
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"}'
JavaScript (fetch)
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();
Python (requests)
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

200 OK — ejemplo (placas y documentos ficticios)
{
  "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.

Contacto