Opidocs
FeaturesWorkflows

Nodes

The units of work — what each node does, what it needs, and what it produces.

Workflows is in Beta. The UI and API may change. The sidebar entry is currently disabled for most workspaces — your account team enables it for pilot orgs.

Nodes are the units of work. Drag them from the palette onto the canvas, connect them with edges, and configure them in the Properties drawer. Each node receives the run context — the accumulated outputs of every node that ran before it — and writes its own output back into that context.

NodePurpose
AgentRun an AgentForce agent with a prompt assembled from prior outputs.
Integration actionCall a Composio integration action (e.g., send Slack message).
HTTP requestIssue an outbound HTTP request with vault-credential auth.
TransformReshape data with a JSONata expression.
BranchContinue down different paths based on a condition.
Loop (forEach)Run downstream nodes once per item in an upstream array.
ParallelRun multiple branches concurrently and merge their outputs.
WaitPause for a duration or until a wakeup.
ApprovalPause until an authorized user approves or rejects.
EndTerminal node — marks workflow completion.

Agent

Pick a catalog or custom agent from the org. Supply a prompt template — token references to upstream outputs are supported. The node's output is the agent's final message.

See AgentForce for agent catalog details.

Integration action

Pick an integration and then an action on that integration. The form is schema-driven (SchemaParamsForm): required fields are highlighted, optional fields are collapsed, and nested object groups render as collapsible sections. Validation warnings render inline but do not block save — the node saves with unfilled required fields and fails at run time if they remain empty.

HTTP request

Configure method, URL, headers (key/value editor), body (JSON-first with a raw fallback), and auth (none or a vault credential). The SSRF guard runs before the request is dispatched: private IPv4 ranges, IPv6 ULA and CGN ranges, IPv4-mapped IPv6, multicast, and hosts that resolve to a mix of public and private IPs are all rejected. On cross-origin redirects, Authorization and Cookie headers are stripped and the per-hop scheme is re-checked.

Transform

Write a single JSONata expression. The expression is evaluated with the run context as input — you can reference any upstream node's output by node id. The Note field is a comment for human readers; the engine ignores it. Expression errors surface as run-time failures with the JSONata cause included.

Branch

Write a condition expression. Downstream edges are labeled by outcome. The run continues down the path whose condition evaluates to true.

Loop (forEach)

Pick an upstream array as the iteration source. Each iteration exposes the current index and value to downstream nodes. After all iterations complete, the node's output is the array of all iteration outputs.

Parallel

Define multiple downstream branches. All branches run concurrently. The output is a map keyed by branch name, populated when all branches finish.

Wait

Specify a duration (e.g., 10m) or a named wakeup event. The run pauses until the duration elapses or the wakeup arrives. Wait nodes are restartable by the scheduler.

Approval

Define approver criteria and a timeout duration. The run pauses until an authorized approver acts. See Approvals for configuration and permissions details.

End

An explicit terminal node. Including one is optional — the run also ends when no further downstream nodes are reachable. Using End makes the terminal point explicit in the graph.

Tokens and upstream output

Node fields accept template tokens to reference earlier outputs. See Data flow and tokens for token syntax, autocomplete, and JSONata.

What's next?

On this page