Crear un lote de scoring
Crea un lote de scoring asíncrono (scoring de cartera): los sujetos se validan por adelantado, el lote queda en cola y un worker en segundo plano emite un informe Qscore completo por cada ítem válido. Envía subjects (array JSON, de 1 a 5000 entradas) o subjects_csv (un string CSV con encabezado doc_id[,subject_type]) — exactamente uno de los dos. Las filas con un documento inválido (invalid_doc_id) o un documento duplicado dentro del lote (duplicate_in_batch, reportado con su forma normalizada) se rechazan al crear y se reportan en rejected_items; el lote solo procesa las válidas. Un subject_type omitido o no reconocido nunca es un error: para CL se infiere de la serie del RUT (primer dígito 5–9 → company, cualquier otro → person). Si todas las filas se rechazan, la solicitud falla con no_valid_items y no se crea nada. La idempotencia es obligatoria: reintentar con la misma idempotency_key devuelve el lote original con idempotency_hit: true y nunca duplica el lote ni los cobros. Cada ítem cobra el fee standalone del informe (risk_report_person / risk_report_company) al procesarse, y un ítem con falla terminal se reembolsa automáticamente. estimated_fee_usdt es la estimación inicial para los ítems válidos. Cuando el lote termina recibes un webhook risk_batch_completed y un email — los informes individuales no emiten su propio webhook ni email.
Autorizaciones
JWT de sesión (de register/login) o llave de API (pk_...).
X-API-Key: <token> se acepta como header alternativo.
Respuesta
Replay idempotente — el lote original, con idempotency_hit: true.