Variables & Extractions
A flow is only useful if data can move from one node to the next — the token from a login response, the id from a created resource, a count from a list. Probe carries that data through {{...}} references, the same syntax you already use in Composer.
Extractions
Section titled “Extractions”An extraction is a named value pulled out of a request node's response. Add one in the node's inspector:
- Name — what downstream nodes will call it.
- Source —
Body(a dotted JSON path, e.g.data.items[0].id),Header(a header name), orStatus(the HTTP status code — no path needed).
A node can have as many extractions as it needs. Naming one publishes it as {{nodeName.outputs.name}} for every downstream node.
Reference forms
Section titled “Reference forms”Inside any request node's URL, headers, query params, or body, {{...}} is replaced at run time. There are four forms:
| Reference | Reads |
|---|---|
| {{nodeName.outputs.extractionName}} | A named extraction you declared on nodeName. |
| {{nodeName.body.path}} | A dotted JSON path straight out of nodeName's response body — no extraction needed first. |
| {{nodeName.header.Header-Name}} | A response header from nodeName (case-insensitive). |
| {{nodeName.status}} | nodeName's HTTP status code. |
| {{envVar}} | An environment or global variable — see below. |
The .body/.header/.status forms mean you don't have to declare an extraction for a one-off reference — only add a named extraction when you'll reference the same value from more than one place, or want it to show up as a labeled edge value on the canvas.
Environment variables
Section titled “Environment variables”{{envVar}} with no dot resolves against the active Composer environment of the request's collection, then global variables, exactly like Composer's own variable resolution. This is how you keep a baseUrl or a static apiKey out of every node and swap it by switching environments.
What happens when a reference doesn't resolve
Section titled “What happens when a reference doesn't resolve”Two different things can go wrong with a {{...}} reference, and Probe treats them differently:
- Unknown node or variable — the token doesn't name any node in the flow and isn't a defined environment/global variable. A request node with an unresolved reference anywhere in it fails outright rather than sending a request with a literal
{{...}}in it. - Known node, missing value — the node exists and ran, but the path/header/output you asked for wasn't in its response (a missing JSON key, an out-of-range array index, a header that wasn't sent). Most nodes treat this the same as unresolved and fail. Condition nodes are more forgiving: a missing value evaluates as "doesn't exist" rather than blocking the branch, so you can use the
existsoperator to route around an optional field.
Failed nodes publish nothing
Section titled “Failed nodes publish nothing”If a request node's assertions fail, or the request itself errors, the node is marked failed and its extractions are never published — not even the ones a passing response would have produced. Any downstream node referencing {{failedNode.outputs.x}} sees an unresolved reference and fails too, cascading down the graph. This is deliberate: a flow shouldn't silently continue with data from a step that didn't actually succeed.
Everything downstream of a failed node that only depends on it — directly or transitively — ends up skipped rather than run, the same way a condition node's untaken branch is skipped.