Node Types
Reference for all available workflow nodes from the editor sidebar, including description, inputs, outputs, and common use.
This page lists the workflow nodes available in the editor sidebar.
How to Read the Node Tables
Each node has its own table. Read the rows like this:
- Icon - The visual symbol and label you will see in the workflow editor sidebar.
- Description - What the node does in the workflow.
- When to Use - Practical guidance for when this node is the right choice.
- Input - The node configuration fields you fill in (if there are no fields, this shows None).
- Output - The data fields returned by the node for downstream steps (if not defined, this shows None).
- Input Handle - The incoming connection point on the node (where previous nodes connect).
- Output Handle - The outgoing connection point on the node (where next nodes connect).
Use the Nodes list below to jump directly to any node section. For how to wire Fan Out, Fan In, Split, and Merge (parallel branches and joins), see Workflow control components.
Handle Connection Limits
- If an input or output handle shows (min 1, max ∞), that handle can connect to one or more edges.
- If an input or output handle shows (min 1, max 1), that handle can connect to only one edge.
Args Flow Between Nodes
- All nodes receive
argsvalues from the output of the previous node.
Start and End Node Limits
- Start and End nodes are allowed only once in a workflow. A workflow cannot have more than one Start node and one End node.
Nodes
- Approval
- Delay
- End
- Fan In
- Fan Out
- HTTP Request
- Mapping
- Merge
- Notify
- SandsBytes
- Split
- Start
- Switch
- Transform
- Python Code
Approval
| Name | Approval |
|---|---|
| Icon | |
| Description | Pause workflow execution and wait for human approval before continuing to the next step. |
| Input | approval_message (textarea, optional) - Approval Message. This message will be displayed to users when they review the approval request. |
| Output | None |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
For what approvers see at run time and how to approve or reject, see Workflow approvals.
Delay
| Name | Delay |
|---|---|
| Icon | |
| Description | This component delays execution by a specified duration without blocking worker threads. The next node will be scheduled to run after the delay period. |
| Input | delay_duration (number, required) - Delay Duration. Enter the delay duration (must be greater than 0)delay_unit (select, required) - Delay Unit. Select the time unit for the delay (seconds, minutes, or hours). |
| Output | None |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
End
| Name | End |
|---|---|
| Icon | |
| Description | This component is used to end the workflow. |
| Input | None |
| Output | None Connection outputs: none. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: None |
Fan In
| Name | Fan In |
|---|---|
| Icon | |
| Description | Join node that waits for all branches from the nearest fan_out to complete and combines their results. |
| Input | None |
| Output | Runtime output fields: results. |
| Handles | Input: input handle on left side (connections min 1, max 1).Output: output handle on right side (connections min 1, max 1). |
Fan Out
| Name | Fan Out |
|---|---|
| Icon | |
| Description | Fork node that creates multiple branches from a list. Each element in the list will be executed by a different branch. |
| Input | None |
| Output | Runtime output fields: items. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
HTTP Request
| Name | HTTP Request |
|---|---|
| Icon | |
| Description | Perform an HTTP request to an external endpoint. Configure method, URL, headers, query parameters, body and options. Returns status code, headers, body and timing information. |
| Input | method (select, required) - HTTP Method. HTTP method to use for the request.url (text, required) - URL. Target URL for the request.headers (dict, optional) - Headers. HTTP headers as key/value pairs. Use this to set Authorization or API key headers.query_params (dict, optional) - Query Parameters. Query string parameters appended to the URL.body_type (select, required) - Body Type. Choose the format for the request body.body_json (code, optional) - JSON Body. JSON body to send when Body Type is JSON.body_form (dict, optional) - Form Body. Form fields to send when Body Type is Form (application/x-www-form-urlencoded).body_raw (textarea, optional) - Raw Body. Raw text body to send when Body Type is Raw.timeout_seconds (number, optional) - Timeout (seconds). Maximum time to wait for the HTTP response.follow_redirects (switch, optional) - Follow Redirectsverify_ssl (switch, optional) - Verify SSLproxy_url (text, optional) - Proxy URL. Optional HTTP/HTTPS proxy.max_retries (number, optional) - Max Retries. Maximum number of retries on network errors or selected status codes.retry_backoff_base_seconds (number, optional) - Retry Backoff Base (seconds). Base value for exponential backoff between retries.retry_on_status_codes (select, optional) - Retry on Status Codes. Select HTTP status codes that should trigger a retry (e.g. 429, 503). |
| Output | Runtime output fields: request, response, timing, ok. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
Mapping
| Name | Mapping |
|---|---|
| Icon | |
| Description | This component is used to route the flow to the next node based on the mapping. |
| Input | mapping (dict, required) - Mapping. Specify the mapping of the condition to the next node based on the python expression.default (text, required) - default. Specify the default node ID if the condition is not met. |
| Output | None |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max ∞). |
For how to define conditions, wire branches, and use Default, see Workflow Conditional Paths.
Merge
| Name | Merge |
|---|---|
| Icon | |
| Description | Join node that waits for all branches from a split to complete and combines their results. |
| Input | None |
| Output | Runtime output fields: result. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
Notify
| Name | Notify |
|---|---|
| Icon | |
| Description | Send a notification via a provider (Email/SMTP, Gmail, Slack, Telegram, Pushover, Mailgun, etc.). Choose provider then fill its parameters. Message and all fields support Jinja2 with args and params. |
| Input | provider (select, required) - Notification provider. Available options: Dingtalk, Email, Gitter, Gmail, Icloud, Join, Mailgun, Notify, Pagerduty, Popcornnotify, Pushbullet, Pushover, Simplepush, Slack, Statuspage, Telegram, Twilio, Victorops, Zulip.message (textarea, required) - Message body (supports templates).Other input fields are dynamic and appear based on the selected provider. |
| Output | Runtime output fields: status, ok, errors, provider. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
SandsBytes
For endpoint selection, args and params, file uploads via temporary file resource_id, security headers, outputs, and troubleshooting, see the SandsBytes Component user guide.
| Name | SandsBytes |
|---|---|
| Icon | |
| Description | This component to call specific function in SandsBytes. |
| Input | endpoint (select, required) - Select the SandsBytes API endpoint/action to execute.Other input fields are dynamic and appear based on the selected endpoint. |
| Output | Runtime output fields: endpoint_response. |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
Split
| Name | Split |
|---|---|
| Icon | |
| Description | Split node that creates multiple branches where each branch receives a copy of the args as-is. |
| Input | None |
| Output | Runtime output fields: payload. |
| Handles | Input: input handle on left side (connections min 1, max 1).Output: output handle on right side (connections min 1, max ∞). |
Start
| Name | Start |
|---|---|
| Icon | |
| Description | This component is used to start the workflow. |
| Input | None |
| Output | None |
| Output Handle | output handle on right side (connections min 1, max 1). |
Switch
| Name | Switch |
|---|---|
| Icon | |
| Description | This component is used to switch the flow to the next node based on the condition. |
| Input | condition (text, required) - Condition. Specify the condition to evaluate the flow based on the python expression. |
| Output | None |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: true handle on right side (connections min 1, max 1).false handle on right side (connections min 1, max 1). |
For how to define the Condition and connect True and False, see Workflow Conditional Paths.
Transform
| Name | Transform |
|---|---|
| Icon | |
| Description | Transforms data from previous nodes by applying field mappings, type conversions, and Jinja templating. Restructure outputs into different formats (strict: only defined fields; merge: add/override with incoming data). |
| Input | output_mode (select, required) - Output mode. Strict: only defined fields in output. Merge: defined fields add/override, other incoming fields pass through.fields (subform, optional) - Output fields. Add fields to define the output structure. Source is a Jinja expression (e.g. {{ args.get('key') }}).field_name (text, required) - Field name. Name of the field to be outputted.type (select, required) - Type. Type of the field to be outputted.source (text, required) - Source. Template to be rendered to get the value of the field (Jinja2 template).on_error (select, required) - On Error. Action to be taken if the source is not found or the conversion fails.default_value (text, optional) - Default value. Default value to be used if the source is not found or the conversion fails. |
| Output | None |
| Handles | Input: input handle on left side (connections min 1, max ∞).Output: output handle on right side (connections min 1, max 1). |
Python Code
| Name | python_code |
|---|---|
| Icon | |
| Description | This component is used to execute a python code. |
| Input | None |
| Output | None |
For Python source, Requirements, Initialize the Node, and function parameters, see Python Code Node.

