Skip to content

Testing & the trigger URL

Every flow is a live HTTP endpoint the moment it has a Start node. This page covers the trigger-URL bar, how to trace a run, and the static checks that catch a broken flow before you ever call it.

The trigger URL

Along the top of the flow canvas is the trigger bar. It shows the public URL your flow answers at:

https://<your-host>/api/run/<project>/<flow-name>

The path is built from your project and the flow file's name, so the URL changes if you rename the file. The bar also shows a chip for each HTTP method the flow answers — one per Start node — and a copy button that puts the full URL on your clipboard.

Call it with any HTTP client. The method must match a Start node, or you get a 404:

bash
curl -X POST https://your-host/api/run/acme/new-order \
  -H "Content-Type: application/json" \
  -d '{"email":"sam@acme.com","amount":42}'

The request's path segments, query string, headers, and JSON body are validated against the Start node's schema and handed to the flow as its starting inputs. If validation fails you get a 400 listing what was wrong; a run error gives a 500 naming the failing node.

NOTE

The endpoint is rate limited per client IP (60 requests per minute) and sends permissive CORS headers, so you can call it from a browser front-end as well as from a server.

Tracing a run with ?_trace=1

To see exactly which nodes ran, in what order, and how long each took, add ?_trace=1 to the URL:

bash
curl "https://your-host/api/run/acme/new-order?_trace=1"

With the flag on, the response body includes a _trace array and the same data is echoed in an X-Flow-Trace response header. Each trace entry records the node, the port it chose, whether it succeeded, its duration in milliseconds, and — for a failed node — the error message.

_trace is the quickest way to answer "which branch did my If take?" or "which node is slow?" without opening the run history.

TIP

A self-hosted deployment can turn tracing on globally by setting FLOW_TRACE=1, so every response carries the header without needing the query flag.

Static validation

You don't have to call the endpoint to catch a broken flow. As you edit, FlowRunner validates the graph and shows the result in the trigger bar — a green Valid chip, or a count of issues you can hover to read. Three problems are surfaced:

CheckLevelMeaning
No Start nodeErrorThe flow has no Start, so it can't be triggered at all.
No End nodeWarningNothing shapes a response, so the flow never returns a proper result.
Unreachable nodeWarningA node isn't connected back to any Start, so it will never run.

Reachability is checked by walking outward from every Start node along the connections; anything the walk never touches is flagged as dead. Fixing these before you deploy means the first real call behaves the way you expect.

WARNING

Only No Start node is a hard error — the flow genuinely cannot run. The two warnings still let the endpoint respond, but almost always mean the flow isn't finished: wire an End node, and connect any stray nodes.

See also

FlowRunner — the no-code platform for small businesses.