Skip to main content

GET /api/v1/pipelines//runs//progress

Returns detailed progress information for a pipeline run including row counts, partition details, ETA, validation errors (first 20), and log entries.

Path Parameters

ParameterTypeDescription
idstringPipeline ID
runIdstringPipeline run ID

Response

{
  "status": "running",
  "totalRows": 50000,
  "processedRows": 32000,
  "failedRows": 12,
  "skippedRows": 3,
  "partitions": 4,
  "completedPartitions": 2,
  "partitionDetails": [
    { "index": 0, "status": "completed", "rows": 12500 },
    { "index": 1, "status": "completed", "rows": 12500 },
    { "index": 2, "status": "running", "rows": 7000, "progress": 56 },
    { "index": 3, "status": "pending", "rows": 0 }
  ],
  "validationErrors": [
    { "row": 142, "column": "email", "value": "not-an-email", "error": "Invalid email format" }
  ],
  "eta": "3m",
  "durationMs": 45200,
  "loadStrategy": "upsert",
  "log": [
    { "stage": "extract", "message": "Read 50000 rows from source", "timestamp": "2026-03-30T10:00:05Z" }
  ]
}

Response Fields

FieldTypeDescription
statusstringpending, running, completed, failed, completed_with_errors
totalRowsintegerTotal rows to process
processedRowsintegerRows processed so far
failedRowsintegerRows that failed validation
skippedRowsintegerRows skipped (e.g., duplicates)
partitionsintegerTotal partition count
completedPartitionsintegerPartitions finished
partitionDetailsarrayPer-partition status breakdown
validationErrorsarrayFirst 20 validation errors (use the errors endpoint for full list)
etastring or nullEstimated time remaining (e.g., "3m", "1.2h")
durationMsintegerElapsed time in milliseconds
loadStrategystringLoad strategy used (append, upsert, replace)
logarrayExecution log entries

Roles

admin, editor, viewer

GET /api/v1/pipelines//runs//errors

Returns all validation errors for a pipeline run. Supports both JSON and CSV formats via the Accept header.

Path Parameters

ParameterTypeDescription
idstringPipeline ID
runIdstringPipeline run ID

Headers

HeaderValueDescription
Acceptapplication/jsonReturns JSON (default)
Accepttext/csvReturns downloadable CSV file

Response (JSON)

{
  "runId": "run_001",
  "total": 12,
  "errors": [
    { "row": 142, "column": "email", "value": "not-an-email", "error": "Invalid email format" },
    { "row": 305, "column": "age", "value": "abc", "error": "Expected integer" }
  ]
}

Response (CSV)

When Accept: text/csv is set, returns a downloadable CSV file with headers: Row, Column, Value, Error.
Content-Type: text/csv; charset=utf-8
Content-Disposition: attachment; filename="pipeline-run-{runId}-errors.csv"

Roles

admin, editor, viewer

POST /api/v1/pipelines//runs//retry

Retry a failed or partially-failed pipeline run. Creates a new run with checkpoint support for resumable load strategies.

Path Parameters

ParameterTypeDescription
idstringPipeline ID
runIdstringOriginal run ID to retry

Retry Behavior

Load StrategyResume SupportBehavior
appendYesResumes from the last processed row
upsertYesResumes from the last processed row
replaceNoFull re-run from the beginning
Only runs with status failed or completed_with_errors can be retried. Attempting to retry a running or completed run returns 422.

Response (201)

{
  "id": "run_002",
  "pipelineId": "pipe_001",
  "status": "pending",
  "loadStrategy": "upsert",
  "metadata": {
    "retryOf": "run_001",
    "resumeFromRow": 32000,
    "resumable": true
  },
  "log": [
    {
      "stage": "retry",
      "message": "Resuming from row 32000 (original run: run_001)",
      "timestamp": "2026-03-30T12:00:00Z"
    }
  ]
}

Error Codes

CodeReason
404Pipeline or run not found
422Run status does not allow retry (must be failed or completed_with_errors)

Roles

admin, editor

GET /api/v1/pipelines/poll

Check polling status for all active pipelines with file-based polling enabled.

Response

{
  "pipelines": [
    {
      "id": "pipe_001",
      "name": "Daily Customer Import",
      "connector": "Production S3",
      "connectorType": "s3",
      "polling": {
        "enabled": true,
        "intervalMinutes": 15,
        "touchFile": "_READY.dat",
        "prefix": "data/customers/",
        "deleteAfterProcess": true
      },
      "lastRunAt": "2026-03-30T02:00:00Z",
      "lastRunStatus": "completed"
    }
  ],
  "total": 1
}

Roles

any authenticated

POST /api/v1/pipelines/poll

Manually trigger one polling cycle. Checks all active pipelines with polling enabled for their touch file and triggers runs when found.

Response

{
  "message": "Polling cycle complete: checked 3 pipelines, triggered 1 runs",
  "checked": 3,
  "triggered": 1
}

Roles

admin, editor

Role Summary

EndpointMethodAllowed Roles
/pipelines/{id}/runs/{runId}/progressGETadmin, editor, viewer
/pipelines/{id}/runs/{runId}/errorsGETadmin, editor, viewer
/pipelines/{id}/runs/{runId}/retryPOSTadmin, editor
/pipelines/pollGETany authenticated
/pipelines/pollPOSTadmin, editor
See also: Pipelines | Data Platform