Skip to content
FlightStack Docs
Sign in Start free

Pipelines API | FlightStack

All endpoints under /pipeline. Pagination uses skip and take (see overview).

MethodPathPurpose
POST/pipelineCreate 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}/definitionAtomic save — replace the full pipeline definition.
PUT/pipeline/{id}/canvas(Deprecated) Save canvas state. Use /definition instead.

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.

Terminal window
curl -X PUT https://api.flightstack.voostack.com/pipeline/$ID/definition \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d @pipeline-definition.json

Payload 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" }
]
}

For incremental edits the canvas uses per-job endpoints:

MethodPathPurpose
POST/pipeline/{id}/jobsAdd a job.
PUT/pipeline/{id}/jobs/{jobId}Update a job.
DELETE/pipeline/{id}/jobs/{jobId}Remove a job.
MethodPathPurpose
POST/pipeline/{id}/triggerTrigger a run.
GET/pipeline/{id}/runsList runs for one pipeline. ?skip=&take=.
GET/pipeline/runsList runs across all pipelines. Filters: status=, skip=, take=.
GET/pipeline/runs/{runId}Get a single run.
POST/pipeline/runs/{runId}/cancelCancel a running run.
DELETE/pipeline/runs/{runId}Delete a completed run from history.
Terminal window
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.

Terminal window
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.

For real-time run status (instead of polling /pipeline/runs/{runId}), connect to the SignalR hub — see Realtime.