Executions & Monitoring
Every time a workflow runs — whether triggered manually, by webhook, by schedule, or by an event poller — OrcFlows creates an execution: a Temporal workflow run plus a row in the executions table tracking its status, trigger data, input/output, and timing.
Listing & inspecting executions
| Endpoint | Purpose |
|---|---|
GET /api/v1/executions | List executions for the tenant (filterable by workflow, status). |
GET /api/v1/executions/visibility | Search via Temporal's visibility store (e.g. ExecutionStatus = "Running"). |
GET /api/v1/executions/{id} | Summary: status, trigger type/data, input/output, timestamps. |
GET /api/v1/executions/{id}/detail | Full Temporal event history with per-step input/output, expandable attributes, and friendly event names. |
GET /api/v1/executions/{id}/stream | Server-Sent Events stream of live status updates (registered outside the request timeout middleware). |
The execution detail page in the dashboard renders the Temporal event history as a timeline: each step shows its config, resolved inputs, raw output, duration, and — for AI nodes — token usage and cost.
Step statuses
Each step execution has a status: pending, running, completed, failed, or skipped (when condition/branch_deps evaluate falsy). Sensitive values (secrets, tokens) are redacted in the displayed payloads (redactSensitive).
Cost tracking
llm and agent nodes return input_tokens, output_tokens, and cost_usd in their step output, computed from a per-model pricing table (internal/nodes/ai/llm.go). The execution detail page shows a cost badge per AI step and a total-cost strip for the whole run — useful for monitoring spend on agent-heavy workflows.
Retrying & resuming
POST /api/v1/executions/{id}/retry starts a new execution that resumes from the point of failure: completed step outputs from the failed run are passed as PreloadedOutputs so they're reused rather than re-executed (important for steps with side effects, like sending an email).
Cancelling
POST /api/v1/executions/{id}/cancel cancels the underlying Temporal workflow. In-flight activities are interrupted; already-completed steps keep their results.
Signals & human-in-the-loop
POST /api/v1/executions/{id}/signal sends a named Temporal signal with arbitrary JSON data to a running execution — this is the mechanism behind Human-in-the-Loop approvals, and can also be used to push external events into a long-running workflow (e.g. a voice session).
Feedback on step outputs
POST /api/v1/executions/{id}/steps/{stepId}/feedback lets a user rate/annotate a step's output (e.g. thumbs up/down on an LLM response) — useful for building eval datasets from real traffic.
For a more direct path, Save as test case on the execution detail page copies that execution's real trigger payload straight into an evaluation dataset row, turning a bug report or a flagged bad response into a permanent regression test in one click.
Workspace files
Workflows that generate files (PDFs, screenshots, CSV exports, code-execution artifacts) write them to the workspace file store (S3/MinIO), namespaced by execution ID:
GET /api/v1/workspaces/runs/{exec_id}/files— list files produced by a run.GET /api/v1/workspaces/runs/{exec_id}/files/*— download a specific file.GET /api/v1/files/{id}/{filename}— public download link for files explicitly shared (protected by a 128-bit UUID).
Workflow health
GET /api/v1/workflows/{id}/health— recent success/failure rate and last-run status for one workflow.GET /api/v1/workflows/health— bulk health summary across all workflows, used for the dashboard's health overview.
Audit log
Significant actions (workflow create/update/delete, secret changes, signals sent, role changes, etc.) are recorded in the audit_events table and exposed via GET /api/v1/audit (admin/owner only).
Next
- Human-in-the-Loop
- Architecture: Temporal Execution Model
- Evaluations & Testing — regression-test a workflow against a dataset instead of one execution at a time.