Running a Pipeline
Running a pipeline applies a Spec to a set of documents. Each document is enqueued as its own job and processed in parallel; within a document the phases run in strict sequence. The run is observable while it executes: the progress endpoint reports per-phase counts (pending, running, completed, errors), so you can watch transfer drain into extraction, extraction into resolution, and so on. Results appear progressively, the same way they do for a Job.
A document that clears every phase finishes as complete. A document with fields still blocked at a validation gate, held for declarative review, or waiting on a dependency finishes as partial: its clean fields are done, and the flagged fields wait in the review queue. This is by design. The pipeline never silently ships a value that failed a gate; it holds that cell and surfaces it for a human decision while the rest of the document proceeds.
Once a pipeline is finished you can turn it into a data product: an assembled, deliverable dataset that reads the latest canonical value per cell. The data product owns its own review surface, so creating one replays the pipeline gates over the stored verdicts to reconstruct the review queue, and held cells surface with status only until a reviewer resolves them. From there the product flows into delivery the same as any other.
Polling progress
Poll the progress endpoint to track a run. It derives its phase rows from the Spec rail, so the phases you see match what you composed, and it returns an errors array with per-document messages for anything that failed.
curl https://api.talonic.com/v1/pipelines/pl_x8k2m9/progress \
-H "Authorization: Bearer $TALONIC_API_KEY"{
"pipelineId": "pl_x8k2m9",
"status": "active",
"totalDocuments": 2,
"completedDocuments": 1,
"errorDocuments": 0,
"phases": [
{ "phaseId": "transfer", "name": "Field Registry", "type": "transfer",
"completed": 2, "running": 0, "pending": 0, "errors": 0 },
{ "phaseId": "extraction", "name": "Extraction", "type": "extraction",
"completed": 1, "running": 1, "pending": 0, "errors": 0 }
],
"errors": []
}Re-run and data product
A finished pipeline can be re-run from a phase onward without redoing the work before it: pass the phase type to start from, and earlier phases reuse their stored cells. When the output looks right, create a data product from the run to make it deliverable.
curl -X POST https://api.talonic.com/v1/pipelines/pl_x8k2m9/rerun \
-H "Authorization: Bearer $TALONIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "from_phase": "resolution" }'curl -X POST https://api.talonic.com/v1/pipelines/pl_x8k2m9/data-product \
-H "Authorization: Bearer $TALONIC_API_KEY"