Nodes
The node families, the config every node shares, and how data moves between them.
A node is one step in a flow. Every node has a type, a spec (its settings), typed inputs, and typed outputs. Wire a node's output into the next node's input and you have a pipeline.
Node families
Triggers start a run, and a flow has exactly one:
endpointis a webhook trigger. An incoming HTTP call starts the flow with the request payload.cronruns the flow on a schedule.manualruns when you start it by hand or through the API.
Action nodes do the steps:
- Integration nodes do one action in an external integration, like send a WhatsApp message or create a Shopify customer. They come from the integration you connected. See Integrations.
http_requestcalls any HTTP API directly, when no integration node covers it. Integration nodes compile down to this.generatecalls an AI model to categorize, draft, extract, or decide.transformreshapes data between steps.delaywaits before continuing.logrecords a value into the run.initruns a setup request before the flow's main pass.
Control flow:
loopruns a body of nodes once per item, or a fixed number of times.- Conditions on an edge route one event to different branches.
How data moves
Data flows by reference, not by copying. Anywhere a node input accepts a value, point it at an earlier node's output with {{slug.field}}:
| Reference | Resolves to |
|---|---|
{{list_orders.orders}} | the orders array from the list_orders node |
{{trigger.customer.email}} | a nested field off the trigger payload |
A node references another by its slug, so renaming a value in one place does not break the wiring.
Node config
Every node takes an optional config with the same operational fields, separate from its type-specific spec:
| Field | Meaning |
|---|---|
auth | Credential names the node needs. Set on http_request and generate; integration nodes carry it for you. See Connecting. |
timeout | Milliseconds before the step times out. Default 30000. |
retry | Retry policy: maxAttempts, backoffMs, backoffMultiplier, and retryOn status codes. |
fanIn | For a node with several incoming edges: all waits for every source, any runs on the first to succeed. |
When edges meet
One node can feed several outgoing edges, and each edge can carry a condition that decides whether it fires. That is branching, covered next.
