Variables
Variables let you pass data between nodes. The output of any upstream node can be used as input to any downstream node.
Inserting a variable#
You don’t type variables as text — you insert them as chips from the Variables panel in the editor. Each chip references a specific value produced by an upstream node (for example, an API node’s data.items.name field).
To insert one:
- Place the cursor where the value should go.
- Open the Variables panel.
- Click the variable you want. It appears as a chip in the field.
To paste a variable from elsewhere, click the copy icon next to a variable in the panel. It copies a token like {{Node Name.path.to.field}}; pasting it into a supported field in the editor converts it back into a chip.
Nested access#
Variables use dot notation to reach into nested object fields:
Node Name.response.data.nameWhen a path segment resolves to a list, the next segment is applied to every item and the result is returned as a list. For example, if response.data.items is an array of objects, referencing response.data.items.name yields an array of every item’s name.
Bracket indexing (items[0]) is not supported — you can’t pick a single element by index.
Where variables are resolved#
Variables are resolved wherever a field accepts free text, including:
- LLM / prompt fields
- API node URL, headers, and body
- Send-email subject and body
- Tool arguments
Serialized form#
When a workflow is saved, each chip is stored as @{label|path|type} (for example, @{API Response|data.items.name|string}). You don’t need to type this — it’s the on-disk representation of the chips you place in the editor.
Best practices#
- Give upstream nodes descriptive names — their name becomes the prefix of every variable they expose.
- Keep variable paths short and readable.
- Validate the shape of upstream data before relying on deep paths.