Visual Workflows
The workflow editor lets you chain API requests, conditions, loops, and data transformations into a visual, runnable graph. Each step executes in sequence and can pass data to the next step. Build complex automation — auth flows, CRUD test suites, retry-resilient pipelines — without writing orchestration code.
Opening the Workflow Editor
- In the sidebar, click Workflows
- Click + New Workflow to create one, or select an existing workflow to open it
- When creating a new workflow, a template picker lets you start from a pre-built example
Canvas Controls
| Action | How |
|---|---|
| Pan | Click and drag the background |
| Zoom | Scroll wheel, or use the zoom slider in the toolbar |
| Fit view | Click the Fit button in the toolbar |
| Select a node | Click it |
| Multi-select | Shift+click, or drag a selection box |
| Connect nodes | Drag from an output handle to an input handle |
| Delete | Select a node or edge and press Delete |
| Undo / Redo | Ctrl+Z / Ctrl+Y (up to 50 steps) |
Snap to grid is on by default — nodes snap to a 20 px grid that aligns with the background dots. Toggle between dot and line backgrounds from the toolbar.
Zoom Lens — click the magnifier icon in the toolbar to open a floating lens that shows a zoomed-in close-up of any part of the canvas without changing the main viewport zoom level.
Zoom to Area — click the crop icon in the toolbar, drag a rectangle on the canvas, release to zoom into that area with a 280 ms animation. Press Esc to cancel before releasing.
MiniMap — a themed navigator in the bottom-right corner of the canvas. Drag the viewport rectangle to pan the main canvas; scroll over it to zoom. Useful for large workflows.
Fullscreen mode — click the Maximize button in the toolbar to expand the canvas edge-to-edge. Press Escape (or click Minimize) to return to the normal layout.
Node Types
Drag nodes from the palette on the left onto the canvas:
| Node | What it does |
|---|---|
| Start | Entry point. Every workflow must have one. |
| End | Terminal node. A workflow can have multiple End nodes (success path, error path, etc.). |
| HTTP Request | Sends an HTTP request. Configure method, URL, headers, body, auth, retry logic, and assertions inline. |
| Condition | Branches on a JavaScript expression. Has true and false output handles. |
| Loop | Repeats the connected sub-flow N times or over each item in an array. |
| Transform | Evaluates a JavaScript expression on the previous output and stores the result in a variable. |
| Delay | Pauses execution for a specified number of milliseconds. |
| Set Variable | Writes a value to an environment or global variable. |
| Comment | A sticky note — documents the workflow without affecting execution. |
| Sub-Workflow | Calls another saved workflow as a single step. |
Configuring Nodes
Click any node to open its configuration panel on the right side of the canvas.
HTTP Request Node
- Method & URL — supports variable interpolation (
{{VAR_NAME}}) - Headers / Body — same as a regular request tab
- Auth — choose Bearer, Basic, API Key, or Inherit (uses the parent collection's auth)
- Retry logic — see Retry Logic below
- Assertions — see Response Assertions below
Condition Node
Write a JavaScript expression that evaluates to true or false. The previous node's output is available as output:
output.status === 200
output.data.length > 0
output.headers['content-type'].includes('json')
Connect the true handle to one branch and the false handle to another.
Transform Node
Extract or reshape data with a JavaScript expression or a JSONPath-style path. The result is stored in a named variable:
// JavaScript expression — full access to `output`
output.id
// Build a derived value
`Bearer ${output.token}`
For simple extractions, use the path syntax — including the [*] array wildcard:
$.user.id // single field
$.users[0].name // first element of an array
$[*].title // every element's title — returns an array
$.items[*].id // every item's id — returns an array
The [*] wildcard is useful when the previous node returned a JSON array and you need to fan out a list of values into a downstream Loop or assertion.
Loop Node
- Count mode — repeat N times; the counter is available as
$loopIndex - Array mode — iterate over an expression; each item is available as
$item
Retry Logic
Any HTTP Request node can retry automatically on failure:
- Open the node's config panel
- Set Retry Count (1–5)
- Choose a Backoff Strategy:
- Fixed — same delay every attempt
- Linear — delay × attempt number
- Exponential — delay × 2ⁿ (doubles each time)
- Set the Retry Delay (milliseconds for the first attempt)
- Specify Retry On Status Codes — e.g.
429, 500, 503. Leave empty to retry on any error.
A badge on the node card shows the current attempt number during execution.
Response Assertions
Assertions are pass/fail checks on the HTTP response — no scripting required. Add them in the node's config panel.
| What to check | Operators available |
|---|---|
| Status code | eq, neq, gt, lt, gte, lte, inRange |
JSON body field (JSONPath like $.data.id) | eq, neq, contains, exists, gt, lt |
| Response header | eq, neq, contains, exists |
| Response time (ms) | lt, gt, lte, gte |
If an assertion fails, the node is marked as failed and execution routes to the error edge if one is connected, or stops the workflow otherwise.
Error Handling
Every node has an error handle — a small red dot on its bottom-right. Connect it to any downstream node to handle failures gracefully.
When execution reaches an error path, these variables are available:
| Variable | Value |
|---|---|
{{$error.message}} | The error or failure message |
{{$error.status}} | HTTP status code (if applicable) |
{{$error.nodeId}} | ID of the node that failed |
Example: connect the error handle to a Set Variable node to log the error, then to an End node so the workflow always completes cleanly.
Sub-Workflows
The Sub-Workflow node calls another saved workflow as a single step. Reuse common patterns — auth setup, cleanup, health checks — across multiple workflows without duplicating nodes.
- Select the target workflow from the dropdown in the config panel
- Circular references are automatically detected and blocked
- The sub-workflow runs to completion before the parent continues
Run History & Flow Tracer
Every execution is automatically saved and can be replayed step-by-step.
Flow Tracer Panel
The Flow Tracer panel at the bottom of the canvas shows a live log while a run is in progress, and a replayable trace when you open a past run from History.
- Final-status icons — each row shows its actual outcome (success / error / skipped) once the run completes. Past runs in History never show perpetual spinners; they always reflect the real final state of every step.
- Delay duration — Delay rows render
waiting 5000ms…while the wait is active andwaited 5000msonce it completes, so you can tell at a glance whether a wait is in progress or the workflow is genuinely stuck. - Per-node input + output — click any row to expand it and see the full request, full response, and any variables the node wrote.
- Compare runs — open two runs side-by-side from History to see why today's execution looked different from yesterday's.
Stop Mid-Run
Click Stop in the toolbar to cancel a running workflow. Stop interrupts immediately — including during a long Delay node — and unwinds cleanly so the workflow doesn't end up in a half-running state.
Browsing Past Runs
- Open the History tab in the palette
- Click a run to load its full trace into the Flow Tracer
- Click the trash icon on a run to delete it
Import / Export
- Export — click the export icon in the toolbar to save a
.rostyman-workflowJSON file - Import — click the import icon and select a
.rostyman-workflowfile
Save Canvas to Image
Click the save-to-media icon in the toolbar:
- PNG — screenshot of the canvas at current zoom
- SVG — scalable vector (ideal for documentation)
- JSON — raw workflow data
Layout & Auto-Layout
The Layout Direction picker in the toolbar sets how auto-layout arranges nodes:
| Direction | Best for |
|---|---|
| Left → Right | Standard horizontal flows |
| Top → Bottom | Vertical pipelines |
| Right → Left | RTL layouts |
| Bottom → Top | Dependency trees |
Click Auto-Layout to apply. Existing positions are replaced.
Templates
When creating a new workflow, the template picker offers five ready-to-run examples:
| Template | What it demonstrates |
|---|---|
| API Health Check | Single request with status assertion |
| Data Pipeline | Fetch → Transform → Post |
| Auth Flow | Login → Extract token → Authenticated request |
| CRUD Suite | Create → Read → Update → Delete with assertions |
| Retry Resilience | Exponential backoff + error edge routing |
Execution
Click Run in the toolbar to execute the workflow from the Start node. Edges animate in real time as execution flows through the graph, and the Flow Tracer panel at the bottom logs each step with name, status, duration, and variable values. See Run History & Flow Tracer for details on past-run replay and the Stop button.
Variables
Use {{VAR_NAME}} syntax anywhere a value is accepted — URLs, body, headers, expressions.
The built-in $output variable always contains the most recent node's output. For request nodes: { status, headers, body, duration }.
Set variables explicitly with a Set Variable node, or use the outputVar field on a Transform node to capture its result into a named variable.