Pipelines API | FlightStack
Pipelines API
Section titled “Pipelines API”All endpoints under /pipeline. Pagination uses skip and take (see overview).
Pipelines
Section titled “Pipelines”| Method | Path | Purpose |
|---|---|---|
| POST | /pipeline | Create a pipeline. |
| GET | /pipeline/{id} | Get a pipeline by ID. |
| PUT | /pipeline/{id} | Update a pipeline’s metadata. |
| DELETE | /pipeline/{id} | Delete a pipeline. |
| GET | /pipeline/project/{projectId} | List pipelines for a project (repository). |
| PUT | /pipeline/{id}/definition | Atomic save — replace the full pipeline definition. |
| PUT | /pipeline/{id}/canvas | (Deprecated) Save canvas state. Use /definition instead. |
Save the full definition
Section titled “Save the full definition”The atomic definition endpoint is the preferred path — it replaces jobs, triggers, and
connections in a single transaction so the canvas can’t end up half-written.
curl -X PUT https://api.flightstack.voostack.com/pipeline/$ID/definition \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d @pipeline-definition.jsonPayload shape:
{ "name": "iOS release", "triggers": [{ "type": "push", "branchPattern": "main" }], "jobs": [ { "id": "ci", "type": "ci-build" }, { "id": "ios", "type": "build-ios", "inputs": { "scheme": "Runner" } }, { "id": "deploy", "type": "deploy-ios" } ], "connections": [ { "sourceJobId": "ci", "targetJobId": "ios" }, { "sourceJobId": "ios", "targetJobId": "deploy" } ]}Job CRUD
Section titled “Job CRUD”For incremental edits the canvas uses per-job endpoints:
| Method | Path | Purpose |
|---|---|---|
| POST | /pipeline/{id}/jobs | Add a job. |
| PUT | /pipeline/{id}/jobs/{jobId} | Update a job. |
| DELETE | /pipeline/{id}/jobs/{jobId} | Remove a job. |
| Method | Path | Purpose |
|---|---|---|
| POST | /pipeline/{id}/trigger | Trigger a run. |
| GET | /pipeline/{id}/runs | List runs for one pipeline. ?skip=&take=. |
| GET | /pipeline/runs | List runs across all pipelines. Filters: status=, skip=, take=. |
| GET | /pipeline/runs/{runId} | Get a single run. |
| POST | /pipeline/runs/{runId}/cancel | Cancel a running run. |
| DELETE | /pipeline/runs/{runId} | Delete a completed run from history. |
Trigger a run
Section titled “Trigger a run”curl -X POST https://api.flightstack.voostack.com/pipeline/$PIPELINE_ID/trigger \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"branch":"main"}'The branch is optional — if omitted, the pipeline triggers against its default branch.
Get a single run
Section titled “Get a single run”curl https://api.flightstack.voostack.com/pipeline/runs/$RUN_ID \ -H "Authorization: Bearer $TOKEN"Returns the run with each job’s status, step outputs, and timing.
Live updates
Section titled “Live updates”For real-time run status (instead of polling /pipeline/runs/{runId}), connect to the
SignalR hub — see Realtime.
See also
Section titled “See also”- CLI:
flightstack pipeline lint— validate definitions locally - CLI:
flightstack logs— tail a run from the terminal - Variables & step outputs — how
${{ steps.X.outputs.Y }}flows