IMSS · Verificación de empleo

¿Esta persona trabaja hoy? El IMSS lo contesta.

Mandas CURP y NSS. Recibes si tiene empleo vigente, quién es el patrón que la tiene dada de alta, su salario base de cotización y los días cotizados del periodo — en JSON, listo para tu decisión. Sin PDF que leer ni captura manual.

entrada: CURP + NSSrespuesta síncrona1 crédito por consulta
empleo-imssEJEMPLOS DEL API

Elige un escenario y mira qué recibe tu sistema:

Datos ficticios con la misma estructura que regresa el API. Ninguno corresponde a una persona real.

Dónde encaja

Tres decisiones que hoy tomas a ciegas.

La persona te dice dónde trabaja y cuánto gana. Esta consulta te dice qué reportó su patrón al IMSS. La diferencia entre ambas cosas es justo donde vive el riesgo.

◈
OnboardingConfirma que el empleo que declaró existe y está vigente, antes de avanzar en el proceso. Si no hay alta vigente, lo sabes al inicio y no al final.
$
Decisión de créditoEl salario base de cotización y los días cotizados te dan una señal verificable de ingreso y de permanencia, para dimensionar línea y plazo.
⚑
Prevención de fraudeEmpleo inventado, patrón que no existe o ingreso inflado: se ven al comparar lo declarado contra lo que el patrón reporta al IMSS.
La respuesta del API

Un JSON que tu sistema ya puede leer.

No es una constancia en PDF que alguien tenga que abrir y capturar. Cada dato llega en su propio campo, con el mismo nombre siempre.

Qué recibesCampoPara qué te sirve
Si tiene empleo vigentetypeLa decisión principal: hay alta vigente ante el IMSS o no la hay.
Quién es el patrónemployerName · employerRfc · employerRegistration · stateRazón social, RFC, registro patronal y estado. Contrasta contra la empresa que la persona declaró.
Salario base de cotizaciónbaseSalary.amountEl salario diario que el patrón reporta al IMSS, en pesos. Señal de ingreso contrastable con lo declarado.
Días cotizadoscontributedDaysDías del periodo con cotización. Señal de continuidad: un mes completo no es lo mismo que unos días sueltos.
Modalidad de aseguramientomodalityEl tipo de afiliación según el catálogo del IMSS: trabajador de la ciudad, del campo, doméstico, independiente, del gobierno…
Identidad confirmadapersonalInfo · nssNombre completo, CURP y NSS tal como los tiene el IMSS. Cruza contra el nombre que capturó la persona.
Vigencia del reportereportDetailsPeriodo que cubre el reporte y fecha de emisión, para saber qué tan actual es el dato que estás usando.

Si cotiza con más de un patrón, vienen todos. employmentInformation es una lista: cada empleo con su propio salario base de cotización y sus días. Así ves el ingreso completo y detectas empleos simultáneos.

Una precisión sobre el salario: el salario base de cotización es el que el patrón reporta al IMSS para calcular cuotas y tiene topes legales. Es una señal verificable de ingreso — no un recibo de nómina, y no incluye bonos ni comisiones.

Casos de negocio

Cada respuesta ya trae su decisión.

El campo type nombra el caso con un código estable. Tu backend hace un switch, no interpreta textos.

typeQué pasóQué hacer
SUCCESSTiene empleo vigente. Vienen patrón, salario base de cotización y días cotizados.Avanza. Usa el salario y los días en tu modelo de decisión.
INACTIVE_EMPLOYMENTLa persona existe en el IMSS, pero hoy no tiene un alta vigente.Analiza. No es un rechazo: puede ser independiente o estar entre empleos. Pide otra evidencia de ingreso.
MISMATCH_CURP_NSSLa CURP y el NSS no corresponden a la misma persona.Analiza. Lo más común es un error de captura; también puede ser un NSS ajeno.
CURP_NOT_FOUNDEl IMSS no localizó esa CURP.Analiza. Verifica la CURP en RENAPO antes de concluir.
IMSS_INCONSISTENT_DATALa CURP existe, pero sus datos están inconsistentes del lado del IMSS.Analiza. El dato no es utilizable; la persona tendría que corregirlo ante el IMSS.
IMSS_OPERATION_LIMITSe alcanzó el límite diario de operaciones del IMSS.Reintenta más tarde. No es un problema del dato de tu usuario.
SERVICE_UNAVAILABLEEl IMSS no está respondiendo en este momento.Reintenta. Llega con billable: false: no se te cobra.
INVALID_REQUESTLa CURP o el NSS vienen mal formados.Corrige la captura. También llega con billable: false.

Ningún caso te deja adivinando: cuando no hay un dato utilizable, la respuesta dice exactamente por qué. Ese es el contrato de todos los servicios de OrigoID.

Infraestructura cruda · 100% API REST

Una llamada. Dos datos de entrada.

Consultamos al IMSS en cada llamada, sin cache: el estatus es el de este momento. Mismo envelope que todos los servicios de OrigoID — aprendes el contrato una vez y te sirve para IMSS, CURP, INE, RFC y más.

Síncrono, no por lotesLa respuesta del IMSS viene en tu misma petición. Sin folios que consultar después, sin webhooks que configurar, sin archivos que subir y esperar.
Estructurado, no un PDFCada dato en su campo. Nadie tiene que abrir un documento ni capturar a mano.
Captura inválida = sin cobroUna CURP o un NSS mal formados se rechazan con INVALID_REQUEST y billable: false.
Cero retenciónLa consulta se valida, se responde y se descarta. Sin guardar los datos, en ninguna región.
empleo-imss
const res = await fetch("https://api.origoid.com/mex/social-security/v1/imss-employment-status", {
  method: "POST",
  headers: {
    "x-api-key": process.env.ORIGOID_API_KEY,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    curp: "XEXX010101HNEXXXA4",
    nss: "00000000000",
  }),
});

const result = await res.json();
import os, requests

res = requests.post(
    "https://api.origoid.com/mex/social-security/v1/imss-employment-status",
    headers={"x-api-key": os.environ["ORIGOID_API_KEY"]},
    json={"curp": "XEXX010101HNEXXXA4", "nss": "00000000000"},
    timeout=60,
)
result = res.json()
curl -X POST https://api.origoid.com/mex/social-security/v1/imss-employment-status \
  -H "x-api-key: $ORIGOID_API_KEY" \
  -H "content-type: application/json" \
  -d '{"curp": "XEXX010101HNEXXXA4", "nss": "00000000000"}'
Respuesta con el empleo vigente
{
  "status": "OK",
  "type": "SUCCESS",
  "data": {
    "personalInfo": { "givenNames": "NOMBRE EJEMPLO", "firstSurname": "APELLIDO" },
    "employmentInformation": [{
      "employerName": "EMPRESA EJEMPLO S.A. DE C.V.",
      "employerRfc": "XAXX010101000",
      "state": "CIUDAD DE MEXICO",
      "baseSalary": { "amount": "500.00", "currency": "MXN" },
      "contributedDays": 28
    }],
    "reportDetails": { "reportPeriod": "2026-02" }
  },
  "billable": true
}
¿Tu usuario no te dio el NSS?

Hay un servicio aparte que lo obtiene a partir de la CURP y lo encadenas con esta consulta: dos llamadas síncronas, una tras otra, sin salir del mismo flujo. Pedir una CURP es mucho más fácil que pedir la tarjeta del Seguro Social. Es una llamada distinta y consume su propio crédito.

Ver consulta de NSS →
Por qué OrigoID

El dato es del IMSS. La diferencia es cómo te llega.

Lo que cambia entre proveedores: si el dato llega listo para decidir o hay que leerlo a mano, si se te dice con claridad cuando no hay dato, y qué pasa con la información de tu usuario después.

⚡
Respuesta en la misma llamadaSíncrono de punta a punta: tu usuario no se queda esperando un proceso que corre aparte. Sin folios, sin colas, sin webhooks.
◈
Listo para decidirSalario, días y patrón en campos propios. Tu modelo de riesgo los consume directo, sin pasar por un humano.
⚑
Nunca un silencioCuando no hay dato utilizable, la respuesta dice por qué: CURP no localizada, datos inconsistentes o CURP y NSS que no corresponden.
⊘
Cero retenciónLa consulta se valida, se responde y se descarta. Sin guardar los datos: el historial laboral de tu usuario no se queda con nosotros.
$
Precios publicados1 consulta = 1 crédito, y el precio por crédito baja con tu volumen. Todo público, sin "contáctanos". Ver precios

OrigoID no es el IMSS ni actúa en su nombre: es un medio técnico de consulta y cotejo respecto de esa fuente. La exactitud y la vigencia de la información dependen del propio instituto.

Preguntas frecuentes

Lo que suelen preguntarnos.

¿Qué datos necesito para consultar?

La CURP y el NSS, los dos. El IMSS verifica que correspondan entre sí, por eso no basta con uno. Si no tienes el NSS, hay un servicio aparte que lo obtiene desde la CURP: es otra llamada y consume su propio crédito.

¿El salario base de cotización es su sueldo?

No exactamente. Es el salario diario que el patrón reporta al IMSS para calcular cuotas, y tiene topes legales. Sirve como señal verificable de ingreso, contrastable con lo que la persona declaró, pero no sustituye un recibo de nómina ni incluye bonos o comisiones.

¿Y si cotiza con varios patrones?

Vienen todos. employmentInformation es una lista, cada empleo con su salario base de cotización y sus días cotizados. Así ves el ingreso completo y detectas empleos simultáneos.

¿"Sin empleo vigente" es motivo de rechazo?

No. INACTIVE_EMPLOYMENT significa que hoy no hay un alta vigente ante el IMSS. Puede ser una persona independiente, con ingreso informal o recién salida de un empleo. Es señal para pedir otra evidencia, no un rechazo automático.

¿Guardan los datos de la consulta?

No. Cada consulta se valida, se responde y se descarta, sin guardar los datos. Cero retención en todas nuestras regiones.

¿Cuánto cuesta?

1 crédito por consulta, igual que la mayoría de los servicios. Empiezas con créditos de cortesía y el precio por crédito baja con tu volumen; todos los planes están publicados.

Pruébalo con tus propios casos.

Créditos de cortesía para consultar en producción, contra el IMSS. El acceso se habilita tras una breve validación de tu empresa.

Solicitar acceso