RESTv1

API de consultas

Inicia consultas de crédito de persona física, resuelve el NIP con el que el consultado autoriza y descarga el reporte en PDF. Autenticación por API key. Todas las respuestas son JSON, salvo la descarga del reporte, que es application/pdf.

Autenticación

Manda tu API key en el header x-api-key en cada petición. Creas y administras tus keys desde API y MCP en el dashboard.

header
x-api-key: TU_API_KEY

Requiere plan

El acceso a la API está incluido en los planes Equipo e Ilimitado. Con un plan sin API, todas las peticiones responden 401. Compara los planes en Precios.

Entornos

Hay dos entornos y cada uno tiene su propio host. El entorno de la key debe coincidir con el host en ambos sentidos: una key de sandbox solo funciona en el host con prefijo sandbox. y una key de producción solo en el host pelón. Si no coinciden, la petición responde 401.

EntornoBase URLKey
SANDBOXhttps://sandbox.dashboard.consultasnonstop.comKey de sandbox. Datos de prueba: no consulta al buró real, no requiere saldo y no descuenta.
PRODUCCIÓNhttps://dashboard.consultasnonstop.comKey certificada. Datos reales. Requiere certificar el servicio.

Toda cuenta empieza únicamente con keys de sandbox. Para consultar en producción, cada servicio debe certificarse desde Certificación en el dashboard: envías las evidencias de tu proceso y las revisamos para liberarlo. Una key sin certificación nunca llega al buró real, aunque apunte a producción.

Flujo de una consulta

Una consulta se completa en varios pasos. El consultado autoriza con un NIP: un solo código que el buró pide dos veces, una para ingresarlo y otra para confirmarlo.

1Crea la consultaPOST /v1/consultas con el tipo, el canal del NIP y los datos del consultado. Devuelve el id y nipPhase: "CREATE_ACCOUNT". En producción requiere saldo del tipo; en sandbox no.
2Envía el NIPPOST /v1/consultas/:id/nip/send. El consultado recibe el NIP por el canal elegido y nipPhase pasa a VALIDATE.
3Valida el NIPPOST /v1/consultas/:id/nip/validate con el código. nipPhase pasa a VALIDATE_2.
4Confirma el NIPVuelve a llamar /nip/validate con el mismo código. Esta segunda llamada cierra el ciclo: estado: "COMPLETADA" más el reporteId. Aquí se descuenta el crédito del saldo (solo en producción).
5Descarga el reporteGET /v1/consultas/:id/reporte devuelve el PDF del reporte de buró.

Importante

El ciclo lo cierran los NIP, no el GET. GET /v1/consultas/:id es de solo lectura: nunca finaliza la consulta ni descuenta saldo.

Valores de nipPhase: CREATE_ACCOUNT VALIDATE VALIDATE_2 "" (vacío al terminar). Valores de estado: EN_PROGRESO, COMPLETADA, ERROR.

Endpoints

MétodoRutaDescripción
POST/v1/consultasInicia una consulta. En producción requiere saldo del tipo y se descuenta al completarse; en sandbox es gratis.
GET/v1/consultas/:idEstado guardado de la consulta más la fase del NIP en vivo. Solo lectura.
POST/v1/consultas/:id/nip/sendEnvía el NIP al consultado por el canal elegido.
POST/v1/consultas/:id/nip/validateValida y confirma el NIP. Se llama dos veces con el mismo código.
GET/v1/consultas/:id/reporteDescarga el PDF del reporte de buró. Solo si la consulta está COMPLETADA.
GET/v1/saldosSaldo de consultas disponible por tipo de reporte.
GET/v1/paquetesCatálogo de paquetes de consultas vigentes.

Crear una consulta

POSThttps://sandbox.dashboard.consultasnonstop.com/v1/consultas

Inicia una consulta. El body lleva el tipo de reporte, el canal por el que se entrega el NIP y los datos del consultado.

Parámetros

json
{
  "tipo": "ORDINARIO",
  "canal": "SMS",
  "sujeto": {
    "primerNombre": "JUAN",
    "segundoNombre": "",
    "apellidoPaterno": "PEREZ",
    "apellidoMaterno": "LOPEZ",
    "rfc": "PXLJ850101H12",
    "calleNumero": "AV REFORMA 123",
    "cp": "06600",
    "celular": "5555555555",
    "correo": "juan@example.com",
    "fechaNacimiento": "1985-01-01"
  }
}
ParámetroTipoRequeridoDescripción
tipostringTipo de reporte: ORDINARIO o ESPECIAL.
canalstringNoMedio por el que el consultado recibe el NIP: SMS (default), EMAIL o WHATSAPP.
sujeto.primerNombrestringPrimer nombre del consultado.
sujeto.segundoNombrestringNoSegundo nombre del consultado.
sujeto.apellidoPaternostringApellido paterno del consultado.
sujeto.apellidoMaternostringNoApellido materno del consultado.
sujeto.rfcstringRFC de persona física con homoclave (13 caracteres).
sujeto.calleNumerostringDomicilio del consultado: calle y número.
sujeto.cpstringCódigo postal a 5 dígitos.
sujeto.celularstringCelular a 10 dígitos (LADA +52 por defecto).
sujeto.correostringCondicionalRequerido para tipo ESPECIAL o canal EMAIL.
sujeto.fechaNacimientostringCondicionalRequerido para tipo ESPECIAL. Formato AAAA-MM-DD.

Ejemplo rápido

Coloca tu API key en el header x-api-key y agrega el header Content-Type: application/json para enviar el body como JSON.

curl
curl -X POST https://sandbox.dashboard.consultasnonstop.com/v1/consultas \
  -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo": "ORDINARIO",
    "canal": "SMS",
    "sujeto": {
      "primerNombre": "JUAN",
      "segundoNombre": "",
      "apellidoPaterno": "PEREZ",
      "apellidoMaterno": "LOPEZ",
      "rfc": "PXLJ850101H12",
      "calleNumero": "AV REFORMA 123",
      "cp": "06600",
      "celular": "5555555555",
      "correo": "juan@example.com",
      "fechaNacimiento": "1985-01-01"
    }
  }'

Tip

¿Sabías que al pegar un cURL en Postman te crea automáticamente la llamada con todos los elementos?

Respuesta

JSON
201 Created
{
  "id": "6a7f1c2e9b3d4a5f6e7d8c90",
  "tipo": "ORDINARIO",
  "estado": "EN_PROGRESO",
  "nipPhase": "CREATE_ACCOUNT",
  "reporteId": "",
  "errorMensaje": "",
  "creadoEn": "2026-07-07T18:00:00Z"
}

Enviar el NIP

POSThttps://sandbox.dashboard.consultasnonstop.com/v1/consultas/:id/nip/send

Envía el NIP al consultado por el canal que elegiste al crear la consulta. No lleva body. nipPhase pasa a VALIDATE.

curl
curl -X POST https://sandbox.dashboard.consultasnonstop.com/v1/consultas/CONSULTA_ID/nip/send \
  -H "x-api-key: TU_API_KEY"

Validar y confirmar el NIP

POSThttps://sandbox.dashboard.consultasnonstop.com/v1/consultas/:id/nip/validate

Valida el código. Llámalo dos veces con el mismo NIP: la primera pasa a VALIDATE_2, la segunda cierra el ciclo y deja la consulta en COMPLETADA con su reporteId. No es un segundo código distinto: es el mismo, como cuando el buró te pide "ingresa nuevamente tu NIP".

curl
curl -X POST https://sandbox.dashboard.consultasnonstop.com/v1/consultas/CONSULTA_ID/nip/validate \
  -H "x-api-key: TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "nip": "123456" }'

Respuesta

JSON
200 OK
{
  "id": "6a7f1c2e9b3d4a5f6e7d8c90",
  "tipo": "ORDINARIO",
  "estado": "EN_PROGRESO",
  "nipPhase": "VALIDATE_2",
  "reporteId": "",
  "errorMensaje": "",
  "creadoEn": "2026-07-07T18:00:00Z"
}

Descargar el reporte

GEThttps://sandbox.dashboard.consultasnonstop.com/v1/consultas/:id/reporte

Devuelve el PDF del reporte de buró (application/pdf). Solo cuando estado es COMPLETADA; si todavía no lo está responde 409 no_disponible.

curl
curl https://sandbox.dashboard.consultasnonstop.com/v1/consultas/CONSULTA_ID/reporte \
  -H "x-api-key: TU_API_KEY" \
  -o reporte.pdf

Ventana de visibilidad

La descarga respeta la ventana de visibilidad de tu plan: Acceso 7 días, Equipo 30 días, Ilimitado sin límite. Fuera de ella responde 403 reporte_no_disponible. La ventana se recalcula con el plan vigente, así que subir de plan rehabilita reportes viejos y bajarlo los cierra. El listado del histórico no caduca nunca y el PDF nunca se borra: lo que caduca es el acceso.

Consultar el estado

GEThttps://sandbox.dashboard.consultasnonstop.com/v1/consultas/:id

Devuelve el estado guardado de la consulta más la fase del NIP en vivo. Es solo lectura: no finaliza la consulta ni descuenta saldo.

curl
curl https://sandbox.dashboard.consultasnonstop.com/v1/consultas/CONSULTA_ID \
  -H "x-api-key: TU_API_KEY"
JSON
200 OK
{
  "id": "6a7f1c2e9b3d4a5f6e7d8c90",
  "tipo": "ORDINARIO",
  "estado": "EN_PROGRESO",
  "nipPhase": "CREATE_ACCOUNT",
  "reporteId": "",
  "errorMensaje": "",
  "creadoEn": "2026-07-07T18:00:00Z"
}

Consultar el saldo

GEThttps://sandbox.dashboard.consultasnonstop.com/v1/saldos

Saldo de consultas disponible por tipo de reporte. El saldo lo alimentan las consultas incluidas en tu plan cada ciclo y los paquetes adicionales que compres.

curl
curl https://sandbox.dashboard.consultasnonstop.com/v1/saldos \
  -H "x-api-key: TU_API_KEY"
JSON
200 OK
{ "ordinario": 12, "especial": 3 }

Catálogo de paquetes

GEThttps://sandbox.dashboard.consultasnonstop.com/v1/paquetes

Paquetes de consultas vigentes por tipo. precio viene en centavos MXN: 49900 son $499.00.

curl
curl https://sandbox.dashboard.consultasnonstop.com/v1/paquetes \
  -H "x-api-key: TU_API_KEY"
JSON
200 OK
{
  "ordinario": [
    {
      "id": "6a7f1c2e9b3d4a5f6e7d8c92",
      "tipoReporte": "ORDINARIO",
      "cantidad": 10,
      "precio": 49900,
      "vigenteDesde": "2026-01-01T00:00:00Z"
    }
  ],
  "especial": [
    {
      "id": "6a7f1c2e9b3d4a5f6e7d8c93",
      "tipoReporte": "ESPECIAL",
      "cantidad": 5,
      "precio": 129900,
      "vigenteDesde": "2026-01-01T00:00:00Z"
    }
  ]
}

La API es de consulta: no hay endpoint REST para comprar paquetes. Recargas tu saldo desde Planes y paquetes en el dashboard, o con la herramienta comprar_paquete del servidor MCP.

Formato de errores

Los errores de la aplicación usan un envelope con type (estable, para programar contra él) y message (legible, para mostrar).

JSON
402 Payment Required
{
  "error": {
    "type": "saldo_insuficiente",
    "message": "No tienes saldo de este tipo de reporte."
  }
}

Autenticación (401)

Los errores de la capa de API key usan un envelope distinto: message más code, sin el objeto error.

JSON
401 Unauthorized
{
  "message": "api key environment does not match host",
  "code": "UNAUTHORIZED"
}

Responden 401:

Falta el header x-api-key.
API key inválida o revocada.
El entorno de la key no coincide con el host: key de sandbox en el host sin prefijo sandbox., o al revés.
El plan de la cuenta no incluye API.

Errores de la aplicación

HTTPtypeCuándo
400invalid_requestJSON malformado o campos faltantes.
400campos_invalidosSe rechazaron datos del sujeto (RFC, CP, etc.).
400tipo_no_soportadoTipo de reporte no soportado en v1.
400nip_invalidoNIP incorrecto o expirado.
402saldo_insuficienteSin saldo del tipo solicitado. Solo aplica en producción: sandbox no requiere saldo.
403servicio_no_certificadoAPI key de producción sin el servicio certificado.
403reporte_no_disponibleEl reporte quedó fuera de la ventana de visibilidad del plan, o la cuenta no tiene plan.
404not_foundLa consulta no existe.
409no_disponibleEl reporte todavía no está listo.
502nip_send_error / reporte_errorFallo temporal al enviar el NIP u obtener el reporte.
500internal_errorError interno.

Sandbox

En sandbox no se consulta al buró real: los datos son sintéticos y el flujo completo corre igual. Usa una key de sandbox contra el host https://sandbox.dashboard.consultasnonstop.com y el NIP de prueba 123456, el mismo código dos veces (ingresar y confirmar).

Sandbox es gratis

Las consultas de sandbox no requieren saldo para iniciarse y no descuentan al completarse. Solo las consultas de producción exigen y consumen saldo.

Casos de prueba

Caso A — Ordinario por SMS (camino feliz)

1Crea la consulta con tipo: ORDINARIO y canal: SMS usando el ejemplo de arriba, y guarda el id.
2POST /v1/consultas/{id}/nip/send.
3POST /v1/consultas/{id}/nip/validate con { "nip": "123456" }nipPhase: VALIDATE_2.
4Repite la validación con 123456estado: COMPLETADA más el reporteId.
5GET /v1/consultas/{id}/reporte → descarga el PDF.

Caso B — Especial por correo

Igual que el Caso A pero con tipo: ESPECIAL y canal: EMAIL. Recuerda que correo y fechaNacimiento son obligatorios en este caso; si faltan, responde 400 campos_invalidos.

Caso C — Errores esperados

Cómo provocarloRespuesta
Consulta de producción sin saldo del tipo402 saldo_insuficiente
NIP distinto de 123456400 nip_invalido
GET /reporte con la consulta EN_PROGRESO409 no_disponible
Key de sandbox contra el host de producción (sin sandbox.)401 Unauthorized

Nota: si el consultado de prueba ya existe en el sandbox (la misma identidad repetida), el escenario puede completar la consulta sin pedir el NIP interactivo. Usa un RFC nuevo para forzar el flujo completo del NIP.