{{...}} interpolation against the run context. The same convention spans HTTP bodies, AI prompts, rule conditions, decision-table cells, and labels.
What you can reference
Workflow input — input.*
Workflow input — input.*
The original payload posted to the workflow.
Upstream node outputs
Upstream node outputs
Whatever each node wrote to Rules and decision tables also write to the top level (their
outputVariable.outputFields):Workflow parameters — params.*
Workflow parameters — params.*
Top-level tunables declared at the workflow’s
parameters array. Same prefix shape as input so they’re easy to spot at a glance.System-injected values
System-injected values
Where you can use it
| Context | Example |
|---|---|
| Custom API endpoint | https://receita.gov.br/cpf/{{input.cpf}} |
| Custom API body | "applicant_id": "{{input.applicant_id}}" |
| HTTP header | X-Workflow-Run: {{workflow_run_id}} |
| AI prompt | Applicant: {{input.full_name}}, {{input.dob}}, {{input.declared_country}}. |
| Rule clause value | {{address_length}} — note: usually rules use literal values; interpolation is for derived comparisons. |
| Decision table output | {{sumsub_applicant.applicant_id}} |
| Manual review display field | value: "input.full_name" (no braces — the field path is referenced directly) |
| Terminal output schema | n/a — the schema is the field list, not a template |
Dot-path vs literal evaluation
There are two slightly different conventions:- Inside
{{...}}the path is interpolated.{{input.declared_address.street}}resolves to a string. - In rule/decisionTable
variable:fields the path is passed as a literal string.variable: "input.declared_country"is the path the evaluator reads, not an interpolation.
"variable": "input.declared_country" (without braces) and "value": "{{input.declared_address.street}}" (with braces) in the same node.
Helpers that are available
The expression layer supports a handful of helpers:| Helper | Example |
|---|---|
max_by(list, key) | {{max_by(input.ubo_declared, 'ownership_pct')}} — picks the list item with the highest field value. |
length accessor | input.declared_address.street.length — string length. |
in / not_in operators | Rule clauses, comma-separated value lists. |
code node so the templating layer stays small and predictable.
What is not templated
- Vendor API base URLs in
dataSourcenodes — Frayme resolves these from the Data Source registry. - Provider IDs —
providerId: "7"is the registry pointer; it isn’t a template. - The
connectionNamereference — a literal key into the workflow’sconnectionsmap.