Building blocks
A flow is a graph of nodes connected by edges. The node types are:
- Start: where the run begins; it receives the flow's input.
- Request: sends a saved request from a collection. It has a success output (a response with status below 400) and an error output, and passes on the status, headers, parsed body, timing and test results.
- Condition: evaluates a JavaScript expression against its input and continues on the true or false branch.
- Loop: takes an array (or a path into the input) and runs its item branch once per element, then continues on done.
- Delay: waits a number of milliseconds, useful when polling.
- Evaluate: computes a new value with a JavaScript expression.
- Select: picks a value out of the input by path, such as
body.data.items. - Output: records a value so it shows up in the run results.
Passing data between steps
Each node's output becomes the next node's input. Inside a request node, {{input}} and {{input.path}} are replaced with values from the incoming data, while your usual {{variables}} still come from the environment. For example, after a login request, a Select node on body.token feeds the next request:
GET {{baseUrl}}/v1/orders?status=open
Authorization: Bearer {{input}}A Condition node such as input.status === 200 && input.body.items.length > 0 then decides whether to continue to the loop that processes each order.
Run, inspect, repeat
Run a flow from the canvas with an optional input and environment. Each node shows whether it ran, succeeded, failed or was skipped, how many times it ran and how long it took, and the run log records every step and output. The newest 100 runs are kept, so you can compare a failing run with the last good one.
Trigger flows from a webhook
Enable the webhook trigger to get a unique URL. A POST to it starts the flow with the request body (JSON, or raw text) as the Start node's input and returns the run's status and outputs. Use it to kick off a flow from CI, a chat command or another service. Webhook triggers are rate limited (60 calls per minute per flow) and accept bodies up to 1 MiB; you can regenerate or disable the URL at any time.
curl -X POST https://swastik.codes/api/flows/hooks/<token> \
-H "Content-Type: application/json" \
-d '{"customerId": "c_123"}'Safe limits
Server-side runs are limited to 1,000 node executions and 300 seconds by default, and every request goes through the same network rules as the rest of the web app: public addresses only.
How it works
- Save the requests you need in a collection in the app.
- Create a flow, drag in nodes and connect them.
- Run it and inspect each node's output. Running requests needs a free account.
Frequently asked questions
Do I need to write code to use flows?
No for most flows: connect requests, conditions and loops on the canvas. Conditions and Evaluate nodes take short JavaScript expressions when you need logic.
How are flows different from the collection runner?
The collection runner runs requests in order, optionally for many data rows, and reports test results. Flows branch, loop and pass data between steps explicitly, which suits workflows more than test suites.
Can I run a flow on a schedule?
Flows run by hand or from their webhook. To run something on a schedule, trigger the flow's webhook from your scheduler, or put the requests in a collection and use a monitor.
Are flows shared with my team?
Yes. Flows are stored in the workspace with collections and environments, and follow the workspace's roles.