Skip to main content
Qscore es el buró de crédito API-first de la plataforma. Una sola llamada devuelve el informe crediticio completo de una persona o empresa — identidad, líneas de crédito, morosidades, quiebras, actividad comercial, datos alternativos — más un score crediticio (1–999) con su banda y códigos de razón explicables, renderizado como PDF brandeado y expuesto como JSON.
  • Chile primero, diseño country-agnostic: hoy los sujetos son chilenos (country: "CL", RUT como doc_id); nuevos países se enchufan sin cambios de contrato.
  • Frescura en vivo: cada informe consulta las fuentes de datos al momento de la compra y declara, por fuente, si el dato está live, cached o unavailable. Nada de data rancia en silencio.
  • Cumplimiento incorporado: la purpose declarada es obligatoria (ley de protección de datos de Chile), cada score lleva sus códigos de razón, y cada informe incluye un código de verificación pública.
Qscore es un producto pagado, gated por el service flag risk de tu cuenta y facturado por informe (fees standalone risk_report_person / risk_report_company). Si la generación falla después del cobro, el fee se reembolsa automáticamente y el informe queda failed con su error_code. Excepción: tu propio informe (self) es gratis — ver “Tu propio informe (self)” más abajo.

Cómo funciona

La generación es síncrona: el POST consulta los registros de buró, calcula el score, renderiza el PDF y devuelve el informe listo en una sola respuesta. Una fuente caída no hace fallar un informe pagado — se genera con la data persistida y la fuente se declara cached (o unavailable si no aportó nada) en la sección sources.

Tu propio informe (self)

Si tienes una cuenta verificada (KYC/KYB aprobado), puedes generar y descargar tu propio informe Qscore directamente. Es tu derecho de acceso a tus datos personales (ARCO / Ley 21.719 de Chile), no una compra:
  • Gratis: nunca cobra fee.
  • Sin penalización al score: los informes self quedan excluidos del conteo de consultas de tu score — revisar tu propio informe jamás lo perjudica.
  • Anti-oráculo por diseño: la identidad del sujeto sale del tax_id verificado en tu KYC/KYB. El request no acepta doc_id — pedir el informe de un tercero por estos endpoints es imposible.
  • Límite de frecuencia: un informe nuevo cada 30 días. Si ya tienes uno ready dentro de la ventana, el POST lo devuelve con idempotency_hit: true (HTTP 200) en vez de generar otro.

Generar (o reusar) tu informe

POST /v1/qscore/my-report — el body es opcional: {"lang": "en"|"es"|"zh"} (default en). La generación es síncrona: la respuesta trae el informe terminado. No necesitas idempotency_key — la idempotencia es determinista por cuenta, sujeto y día (un doble submit el mismo día devuelve el informe ya creado).
Genera tu propio informe
201 Created (informe nuevo generado)
Una segunda llamada dentro de los 30 días responde 200 OK con el mismo informe y "idempotency_hit": true. Si la generación falla, la respuesta es 201 con status: "failed" y su error_code / error_message (nada se cobró — el informe self es gratis).

Leer tu último informe

GET /v1/qscore/my-report devuelve tu informe self más reciente (cualquier estado) sin generar uno nuevo — 404 not_found si nunca generaste uno.

Descargar el PDF

GET /v1/qscore/my-report/pdf descarga el PDF de tu último informe self (Content-Disposition: attachment; filename="qscore_self_<id>.pdf"). Si el informe aún no está ready, responde 404 pdf_not_ready. El PDF lleva el mismo código de verificación pública que cualquier informe Qscore — cualquiera que lo tenga puede comprobar su autenticidad en GET /verify/qscore/{code} (ver “Verificación pública” más abajo).

Errores del informe self

El endpoint comercial POST /v1/qscore/reports rechaza purpose: "self_access" con 400 invalid_purpose — el acceso self solo va por /v1/qscore/my-report. El webhook risk_report_ready de un informe self lleva un campo extra "purpose": "self_access" en su payload (los informes comerciales lo omiten).

1. Comprar un informe

POST /v1/qscore/reports crea y genera el informe completo. La idempotency_key es obligatoria (el informe cobra un fee: un retry con la misma clave devuelve el informe original con idempotency_hit: true y jamás cobra dos veces).
Crear informe de persona
201 Created (informe listo)
Si algo falla después del cobro del fee, el fee se reembolsa y la respuesta es el error con error_code: "generation_failed" persistido en el informe. Reejecutar con la misma idempotency_key devuelve el informe original (o su falla) — jamás cobra dos veces.

2. El score (modelo v1)

El score corre qscore-v1: base 600, rango 1–999, ajustado por hechos adversos (morosidades vigentes, protestos, quiebras, consultas recientes) y señales positivas (líneas activas, profundidad de historial, actividad de la empresa, datos alternativos). Cada informe lleva sus reason_codes — la capa de explicabilidad del score:

Comparación con pares de la industria (solo informes de empresa)

Los informes de empresa pueden incluir el bloque peer_benchmark: la posición del score dentro de su segmento — mismo país y misma industria (clasificación ISIC, tomada del registro tributario).
Reglas del benchmark:
  • Solo informes de empresa — los informes de persona nunca lo incluyen (el bloque se omite).
  • La industria sale del registro tributario y queda asociada al sujeto (la última conocida manda).
  • La población comparable es el último score de cada empresa del mismo país e industria, excluyendo al sujeto evaluado.
  • Se publica solo con al menos 5 empresas comparables — con menos, el bloque no aparece en el informe (nunca se inventa contexto estadístico).
  • percentile se lee como “mejor que el N% del segmento”; median_score es la mediana del segmento.
El PDF del informe incluye la sección de comparación con pares solo cuando el bloque está disponible.

3. Consulta e historial

Listar informes

GET /v1/qscore/reports lista los informes comprados por tu cuenta. from y to (fechas YYYY-MM-DD, zona horaria de tu organización, ambos inclusive) son obligatorios; los filtros subject_id y status (pending, ready, failed) son opcionales; paginación con page / page_size (default 50, máx 200).
Listar informes
200 OK

Detalle del informe

GET /v1/qscore/reports/{report_id} devuelve el informe; cuando está ready incluye el objeto report completo (mismo shape que la respuesta de creación).

Descargar el PDF

GET /v1/qscore/reports/{report_id}/pdf descarga el PDF brandeado (application/pdf, filename qscore_<report_id>.pdf). Mientras el informe no esté ready responde 404 pdf_not_ready. El PDF es un documento privado: se descarga autenticado — jamás se adjunta a emails ni se expone en URLs públicas.

Ficha del sujeto y score vigente (sin comprar un informe nuevo)

GET /v1/qscore/subjects/{doc_id}?country=CL devuelve la ficha del sujeto (identidad + último score) de un documento sobre el que ya compraste informes:
200 OK (ficha del sujeto)
GET /v1/qscore/subjects/{doc_id}/score?country=CL devuelve solo el score vigente (404 no_score si el sujeto aún no tiene):
200 OK (score vigente)

4. Estados del informe

5. Errores

Catálogo completo en Errores.

6. Webhooks

Suscríbete a los eventos de Qscore en tu configuración de webhooks. Los tres son eventos de audiencia cuenta, firmados como todo webhook.
risk_report_ready
Un informe self (ver “Tu propio informe (self)”) emite el mismo evento con un campo extra "purpose": "self_access"; los informes comerciales lo omiten.
Se emite cuando un informe nuevo calcula un score distinto al anterior del sujeto.
risk_score_changed
Se emite por cada suscripción de monitoreo activa cuando el score del sujeto cae bajo tu piso monitor_since_score, aparecen registros nuevos en el buró o se eliminan registros. La primera evaluación tras suscribirte solo siembra el baseline y nunca alerta.
risk_monitoring_alert

7. Verificación pública

Cada PDF del informe imprime un código de verificación y su URL. Cualquiera que tenga el código puede verificar la autenticidad del informe — sin PII — en GET /verify/qscore/{code} (sin auth):
200 OK (informe válido)
Un código inválido o alterado responde 404 con {"valid": false, ...}. El endpoint tiene rate limit por IP y no revela nada más que la validez, la banda y la fecha.

8. Disputas ARCO

Los titulares de los datos pueden ejercer sus derechos ARCO (acceso, rectificación, cancelación, oposición). Tu cuenta abre una disputa contra un registro específico de un sujeto:
Abrir una disputa
201 Created
Ciclo de vida de la disputa: openunder_reviewresolved_corrected | resolved_rejected (final). Lístala con GET /v1/qscore/subjects/{doc_id}/disputes?country=CL&status=open (paginado) y lee una con GET /v1/qscore/disputes/{dispute_id}. La resolución la hace el admin de tu organización desde el panel de administración.

9. Monitoreo

Cuando ya tienes un informe ready de un sujeto, suscríbelo al monitoreo continuo y recibe un webhook risk_monitoring_alert cada vez que algo relevante cambia: el score cae bajo tu umbral, aparecen registros nuevos en el buró o se eliminan registros. El monitoreo es gratuito — el único requisito es el informe comprado (la misma política del endpoint de score: nadie vigila a un tercero sin haber pagado por conocerlo).
Suscribir (o actualizar umbrales)
200 OK
  • monitor_since_score (opcional, 1–999): alerta cuando el score cae bajo este umbral (trigger score_drop_below).
  • only_material (default false): en true solo los cambios materiales disparan la alerta.
  • El worker re-evalúa cada sujeto monitoreado cada ~5 minutos. La primera pasada solo siembra el baseline — jamás alerta sobre datos que ya viste en el informe que pagaste.
Lee una suscripción con GET /v1/qscore/subjects/{doc_id}/monitoring, lista todos los sujetos monitoreados de la cuenta con GET /v1/qscore/monitoring?active=true&page=1&page_size=50 (paginado: items, page, page_size, total) y desactiva con DELETE:
Desactivar el monitoreo
200 OK
DELETE desactiva (active: false) — la historia de la suscripción jamás se borra, y un nuevo PUT la reactiva con umbrales frescos.
Sin un informe ready comprado del sujeto, PUT responde 403 report_required — la misma respuesta que recibe un sujeto inexistente, por diseño, para que el endpoint jamás revele si un documento existe en el buró. Ver errores.
El payload de la alerta (risk_monitoring_alert) lleva los triggers (score_drop_below, new_records, records_removed), el score actual y el anterior, la banda y los registros nuevos — ejemplo completo en webhooks.

10. Scoring por lotes (carteras)

Para evaluar una cartera completa en vez de un sujeto a la vez, sube un lote con POST /v1/qscore/batches: hasta 5.000 sujetos (JSON o CSV), un solo country y purpose para todo el lote, y un fee estimado calculado por adelantado. La API responde 202 Accepted al instante y un worker en segundo plano genera los informes individuales uno por uno — cada ítem es un informe Qscore estándar con su propio PDF, su fee y su reembolso automático si la generación falla.
  • Un solo aviso al final: cuando el lote termina recibes exactamente un webhook risk_batch_completed y un email de resumen (nunca uno por sujeto).
  • Seguimiento: lista e inspecciona lotes, revisa sus ítems paginados y descarga el CSV consolidado en GET /v1/qscore/batches/{id}/results.csv.
El flujo completo (diagrama mermaid, rechazo por ítem, estados, errores y FAQ) está en la guía de scoring por lotes.

Preguntas frecuentes

Sí. Cada compra consulta las fuentes en vivo y recalcula el score con el modelo qscore-v1 vigente. Si una fuente está caída, el informe se genera con la data persistida y la fuente se declara cached/unavailable en la sección sources — nunca en silencio.
El fee se reembolsa automáticamente en el mismo flujo y el informe queda failed con su error_code. Tu idempotency_key reapunta a ese informe fallido; para reintentar, usa una clave nueva.
La ley chilena de protección de datos exige una finalidad declarada y legítima para consultar datos crediticios de una persona o empresa. Se almacena con el informe y se imprime en él (auditabilidad para el titular).
Sí — si ya compraste un informe de ese sujeto, GET /v1/qscore/subjects/{doc_id}/score devuelve el último score calculado sin costo adicional. El primer informe de un sujeto siempre es un informe completo pagado.
No. El email de “informe listo” no lleva adjunto a propósito (minimización de datos de terceros). El PDF solo se descarga autenticado desde la API.
Chile hoy (country: "CL", RUT como doc_id). El contrato es country-agnostic: nuevos países funcionarán con los mismos endpoints cuando se enchufen sus fuentes.
Cada ~5 minutos. El webhook risk_monitoring_alert solo se emite cuando algo cambió contra el baseline (o solo en cambios materiales con only_material: true) — nunca recibes una alerta por un no-op.
Última modificación el 18 de agosto de 2026