What you will do
- A run finishes
success,failure,warning,timed_out, orcanceled. Pipeline runs explains what each status means operationally. warningmeans work failed but was ignored: the failing task stays auditable asfailure (ignored).timed_outis what an expired run timeout or approval timeout produces — it is not a crash.GET /v1/runslists runs,GET /v1/runs/{runID}returns detail, andGET /v1/runs/{runID}/logsreturns log records whose text is underline.- The run list filters on
limit,offset,teamId, andbranch. There is no pipeline filter: select onpipeline_namein the response. POST /v1/runs/{runID}/rerunanswers withrunId, whilePOST /v1/run/{pipeline}answers withrun_id— and only when the request carriesAccept: application/json, otherwise it returns a plain-text confirmation.POST /v1/runs/{runID}/rerunstarts a new run from the same definition;POST /v1/runs/{runID}/cancelstops one in flight.- Declared secrets and outputs marked
sensitiveare masked wherever logs are rendered.
Before you start
- A finished run
- The run ID from the pipeline you built earlier
- Token
- A token allowed to read runs in that team and scope
Steps
- 01
Find the run
The run list is the entry point in the UI and over the API. Pipeline Runs shows the same records the API returns.
List recent runsbash curl -s -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs" | jq '.[0:5]'Verify- Your run appears with its pipeline name and status.
- 02
Read the run detail
Run detail carries the execution graph and per-step state. In the UI, selecting a multi-task step reveals its task graph below the step overview.
Fetch one runbash curl -s -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs/$RUN_ID" | jqExpected result- Steps in dependency order, each with its status and timing.
- 03
Read the logs
Logs are per run and stay attached to it. This is where the value your last step printed shows up.
Tail the log linesbash curl -s -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs/$RUN_ID/logs" | jq -r '.[].line' | tail -30Verify- Secret values appear masked; non-sensitive outputs appear in clear text.
- 04
Compare against history
A single green run proves little. Pipeline detail keeps a Runs tab so you can see whether this run behaved like the ones before it, and Health carries the analysis surface.
Filter the run list by pipelinebash curl -s -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs?limit=50" \ | jq '[.[] | select(.pipeline_name == "first-pipeline") | {run_id, status, started_at}]'Verify- Both of your runs are listed, newest first.
- 05
Re-run and cancel
Re-running starts a fresh run from the same definition rather than resuming the old one. Cancelling stops a run that is still in flight.
Rerun, then cancelbash RERUN=$(curl -sX POST -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs/$RUN_ID/rerun" | jq -r .runId) curl -sX POST -H "Authorization: Bearer $NOPSAI_TOKEN" "http://localhost:8080/v1/runs/$RERUN/cancel" | jqExpected result- The rerun appears in history as its own record, and the cancelled run finishes as
canceled.
- The rerun appears in history as its own record, and the cancelled run finishes as
How it works
Run list surfaces expose only an aggregate final_output_status. Generated deliverable content stays on authorized detail paths, so a list view never leaks output contents.
Pipeline detail is organised as Flow, Definition, Trigger rules, Runs, Health, and Dependencies. Health owns the full analysis result and the AI Evaluation surface.
System logs are a different thing from run logs: run logs are what your steps produced, system logs are the platform services. Reach for those when a run never started.
Implementation evidence
services/nopsai/routes.goRun list, detail, logs, rerun, and cancel routes.
doc/runtime-flows.mdCancellation, rerun, and child pipeline flows.

