Skip to main content

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

  1. In the sidebar, click Workflows
  2. Click + New Workflow to create one, or select an existing workflow to open it
  3. When creating a new workflow, a template picker lets you start from a pre-built example

Canvas Controls

ActionHow
PanClick and drag the background
ZoomScroll wheel, or use the zoom slider in the toolbar
Fit viewClick the Fit button in the toolbar
Select a nodeClick it
Multi-selectShift+click, or drag a selection box
Connect nodesDrag from an output handle to an input handle
DeleteSelect a node or edge and press Delete
Undo / RedoCtrl+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:

NodeWhat it does
StartEntry point. Every workflow must have one.
EndTerminal node. A workflow can have multiple End nodes (success path, error path, etc.).
HTTP RequestSends an HTTP request. Configure method, URL, headers, body, auth, retry logic, and assertions inline.
ConditionBranches on a JavaScript expression. Has true and false output handles.
LoopRepeats the connected sub-flow N times or over each item in an array.
TransformEvaluates a JavaScript expression on the previous output and stores the result in a variable.
DelayPauses execution for a specified number of milliseconds.
Set VariableWrites a value to an environment or global variable.
CommentA sticky note — documents the workflow without affecting execution.
Sub-WorkflowCalls 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:

  1. Open the node's config panel
  2. Set Retry Count (1–5)
  3. Choose a Backoff Strategy:
    • Fixed — same delay every attempt
    • Linear — delay × attempt number
    • Exponential — delay × 2ⁿ (doubles each time)
  4. Set the Retry Delay (milliseconds for the first attempt)
  5. 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 checkOperators available
Status codeeq, neq, gt, lt, gte, lte, inRange
JSON body field (JSONPath like $.data.id)eq, neq, contains, exists, gt, lt
Response headereq, 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:

VariableValue
{{$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 and waited 5000ms once 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

  1. Open the History tab in the palette
  2. Click a run to load its full trace into the Flow Tracer
  3. Click the trash icon on a run to delete it

Import / Export

  • Export — click the export icon in the toolbar to save a .rostyman-workflow JSON file
  • Import — click the import icon and select a .rostyman-workflow file

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:

DirectionBest for
Left → RightStandard horizontal flows
Top → BottomVertical pipelines
Right → LeftRTL layouts
Bottom → TopDependency 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:

TemplateWhat it demonstrates
API Health CheckSingle request with status assertion
Data PipelineFetch → Transform → Post
Auth FlowLogin → Extract token → Authenticated request
CRUD SuiteCreate → Read → Update → Delete with assertions
Retry ResilienceExponential 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.