API del RUAF: afiliaciones a seguridad social por cédula

PlacApi consulta el Registro Único de Afiliados del Ministerio de Salud y devuelve en un solo JSON las siete secciones del informe: salud (EPS, régimen, tipo de afiliado y estado), pensiones (fondo y régimen), riesgos laborales (ARL), caja de compensación familiar, cesantías, si la persona está pensionada y a qué programas de asistencia social está vinculada. Responde con el documento y su fecha de expedición, que es lo que la fuente exige para autenticar la consulta.

¿No eres desarrollador? Consulta el RUNT por placa aquí sin escribir código.

Qué problema resuelve

Saber si una persona está cotizando hoy, a qué EPS y por qué régimen es la pregunta de una vinculación laboral, un estudio de seguridad o una verificación de referencias. Consultarlo oficialmente exige pasar por un portal con captcha y esperar a que un visor de reportes genere el informe. Este endpoint hace ese recorrido y entrega las siete secciones ya estructuradas, en vez de siete consultas separadas a siete entidades.

Para quién sirve

Áreas de talento humano que verifican afiliación antes de contratar, empresas de estudios de seguridad, operadores de riesgos laborales, entidades de crédito que confirman actividad laboral, y plataformas de contratación de personal.

Datos requeridos

  • docType — tipo de documento. Por defecto CC.
  • docNumber — número de documento.
  • fechaExpedicion — fecha de expedición del documento en formato DD/MM/AAAA. La exige la fuente para autenticar, no nosotros.

Fuentes y cobertura

  • RUAF — Registro Único de Afiliados, Ministerio de Salud y Protección SocialInforme de afiliaciones de una persona: salud, pensiones, riesgos laborales, compensación familiar, cesantías, pensionados y vinculación a programas de asistencia social, con la fecha de corte del propio informe.

¿Cómo saber a qué EPS está afiliada una persona desde una API?

Con una llamada POST a /api/ruaf enviando docNumber y fechaExpedicion. El bloque salud trae la EPS, el régimen (contributivo o subsidiado), el tipo de afiliado, el estado de la afiliación y el municipio.

¿Por qué se necesita la fecha de expedición del documento?

Porque la fuente del Ministerio la exige para autenticar la consulta. No es un requisito nuestro: sin ese dato el portal no responde. Va en formato DD/MM/AAAA.

Ejemplo de solicitud

POST https://placapi.com/api/ruaf. Autenticación por API key en el header x-api-key. Los datos del ejemplo son ficticios.

Ejemplo cURL de la solicitud
curl -X POST 'https://placapi.com/api/ruaf' \
  -H 'x-api-key: pk_live_TU_CLAVE' \
  -H 'content-type: application/json' \
  -d '{"docType":"CC","docNumber":"1020304050","fechaExpedicion":"05/10/2018"}'

Ejemplo de respuesta

Respuesta JSON (fragmento con los campos de esta consulta; la API integral devuelve todas las fuentes en el mismo objeto).

Ejemplo de respuesta JSON
{
  "source": "afiliaciones-seguridad-social",
  "status": "info",
  "data": {
    "fechaCorte": "2026-08-14",
    "persona": {
      "nombre": "MARIA FERNANDA GOMEZ RUIZ",
      "sexo": "F"
    },
    "salud": {
      "tiene": true,
      "registros": [
        {
          "administradora": "NUEVA EPS S.A.",
          "regimen": "Contributivo",
          "fechaAfiliacion": "01/11/2024",
          "estado": "Activo",
          "tipoAfiliado": "COTIZANTE",
          "ubicacion": "SANTIAGO DE CALI"
        }
      ]
    },
    "pensiones": {
      "tiene": true,
      "registros": []
    },
    "riesgosLaborales": {
      "tiene": true,
      "registros": []
    },
    "compensacionFamiliar": {
      "tiene": true,
      "registros": []
    },
    "cesantias": {
      "tiene": true,
      "registros": []
    },
    "pensionado": {
      "tiene": false,
      "registros": []
    },
    "asistenciaSocial": {
      "tiene": true,
      "registros": []
    }
  }
}

Explicación campo por campo

CampoTipoDescripción
salud.registros[].regimenstringContributivo o Subsidiado. Junto con estado y tipoAfiliado responde si la persona cotiza hoy.
fechaCortestringHasta cuándo están actualizados los datos según el propio informe. NO es la fecha de la consulta: el Ministerio consolida con rezago, y publicarlas como si fueran la misma haría creer que el dato es de hoy.
pensionadoobjecttiene en false significa que no se reportan pensiones para esa persona. Es un hallazgo, no un hueco.
asistenciaSocialobjectProgramas del Estado a los que está vinculada, con el estado del beneficio y su última entrega.
riesgosLaborales.registros[].actividadEconomicastringSuele llegar en blanco en el informe oficial. Se devuelve vacío en vez de correr el municipio a esa casilla.

Tiempo de respuesta

Decenas de segundos. Es el endpoint más lento del catálogo y el cuello está en el visor de reportes del Ministerio, no en nuestro lado: conviene llamarlo de forma asíncrona y no dentro de una petición web con el usuario esperando.

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

3 días con datos y 1 hora sin ellos. Una novedad de EPS o de ARL cambia el mismo día en que el empleador la reporta; el sin-resultado dura poco porque casi siempre es una fecha mal escrita, no una persona inexistente.

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

  • Requiere la fecha de expedición del documento en DD/MM/AAAA. Sin ella la fuente no responde, y una fecha que no coincide devuelve 404 sin cobrar: es un dato mal escrito, no un veredicto sobre la persona.
  • No se acepta el formato AAAA-MM-DD: la fuente lo leería al revés y respondería 'no coincide' sin explicar por qué.
  • La fecha de corte del informe va con rezago frente a la realidad. Una afiliación de esta semana puede no aparecer todavía.
  • Es un registro de personas naturales: con NIT se responde 400 sin cobrar.
  • Cuesta 2 créditos, el doble que el resto de la familia, porque es el scrape más caro del catálogo. A cambio sustituye siete consultas.

Códigos de error del endpoint (401, 402, 429, 5xx) en la referencia de errores.

Otras preguntas frecuentes

¿Qué devuelve además de la EPS?

+

Seis secciones más en la misma llamada: fondo de pensiones y su régimen, ARL, caja de compensación familiar, cesantías, si la persona está pensionada y a qué programas de asistencia social está vinculada.

¿Por qué se demora más que las otras consultas?

+

El informe lo genera un visor de reportes del Ministerio de Salud que no se puede apurar. Conviene llamar este endpoint de forma asíncrona, encolarlo, y no dentro de una petición web con un usuario esperando la respuesta.

Seguir explorando

Última revisión: 19 de agosto de 2026 · Versión de la API: v1 · Fuentes y metodología

Contacto