Skip to main content
GET
/
batch-import
/
transaction-jobs
/
{jobId}
/
failures
Fallos batch de transacciones
curl --request GET \
  --url http://api.gu1.ai/batch-import/transaction-jobs/{jobId}/failures \
  --header 'Authorization: Bearer <token>'

Endpoints

GET https://api.gu1.ai/batch-import/transaction-jobs/{jobId}/failures.csv
GET https://api.gu1.ai/batch-import/transaction-jobs/{jobId}/failures
  • …/failures.csv → descarga CSV (Content-Disposition: attachment)
  • …/failures → cuerpo JSON

Autenticación y permisos

Authorization: Bearer TU_API_KEY
Requiere al menos uno de: transactions:create, entities:bulk_import, events:create (mismo middleware que el resto de /batch-import).

Respuestas HTTP

CódigoCuándo
200Job encontrado (CSV o JSON)
401Sin autenticación
403Sin permiso batch-import
404jobId inexistente o de otra organización

Columnas CSV

ColumnaDescripción
external_idexternalId de la transacción
codeCódigo estable — catálogo
errorMensaje legible (igual que message en JSON)
Jobs legacy sin code en DB se normalizan al descargar cuando es posible. Si no hay fallos: CSV solo con header.

Respuesta JSON

CampoTipoDescripción
successbooleanSiempre true si el job existe
jobIdstringId del job
kindstringtransaction_batch
statusstringqueued, running, completed, failed, …
totalItems, succeeded, failed, skippednumberContadores del job
failuresarray{ externalId, code, message }
jobFailureobjectSolo si el job entero falló: { code, message, details? } (p. ej. INVALID_ENTITY_REFERENCES)
truncatedbooleantrue si hay más de 500 fallos persistidos
failuresTotalnumberTotal de filas fallidas almacenadas
{
  "success": true,
  "jobId": "abc-123",
  "kind": "transaction_batch",
  "status": "completed",
  "totalItems": 10,
  "succeeded": 9,
  "failed": 1,
  "skipped": 0,
  "failures": [
    {
      "externalId": "txn-009",
      "code": "CONSTRAINT_VIOLATION",
      "message": "…"
    }
  ],
  "truncated": false,
  "failuresTotal": 1
}
Con batchErrorHandling=rollback_all (default), el primer error de insert suele abortar el batch y no persistir fallos por fila. Usá continue_collect_errors o stop_keep_success para poblar este endpoint. Referencias de entidad inválidas con validateExistingEntity=true fallan el job entero (jobFailure), no filas individuales.
Ver también: Códigos de fallo, Importar transacciones, Historial unificado.