NodePort
Every node declares its inputs and outputs as an array ofNodePort objects:
| Field | Type | Description |
|---|---|---|
id | string | Unique port identifier within the node (e.g., "text", "trigger", "tool"). |
name | string | Display name shown next to the port handle. |
type | string | Port direction: "input", "output", or "metadata". |
dataType | string | Data type ID — determines color and connection compatibility. |
required | boolean | Whether a connection to this port is required for execution. |
description | string | Tooltip text explaining the port’s purpose. |
defaultValue | unknown | Default value when no connection is made. |
schema | object | Optional JSON Schema describing the data structure on this port. Used for template variable autocomplete. |
Example
Built-in Data Types
FlowDrop ships with 21 built-in data types, each with a distinct color on the canvas:Basic Types
| ID | Name | Category | Description |
|---|---|---|---|
trigger | Trigger | basic | Control flow of the workflow |
string | String | basic | Text data |
number | Number | numeric | Numeric data |
boolean | Boolean | logical | True/false values |
Collection Types
| ID | Name | Description |
|---|---|---|
array | Array | Ordered list of items |
string[] | String Array | Array of strings |
number[] | Number Array | Array of numbers |
boolean[] | Boolean Array | Array of true/false values |
json[] | JSON Array | Array of JSON objects |
file[] | File Array | Array of files |
image[] | Image Array | Array of images |
Complex Types
| ID | Name | Description |
|---|---|---|
json | JSON | JSON structured data |
File & Media Types
| ID | Name | Description |
|---|---|---|
file | File | File data |
image | Image | Image data |
audio | Audio | Audio data |
video | Video | Video data |
Special Types
| ID | Name | Description |
|---|---|---|
tool | Tool | Tool interface for agent connections |
url | URL | Web address |
email | Email address | |
date | Date | Date value |
datetime | DateTime | Date and time value |
time | Time | Time value |
/port-config API endpoint.
Port Data Type Configuration
Each data type is defined by aPortDataTypeConfig:
Compatibility Rules
By default, ports connect only when their data types match exactly (e.g.,string to string).
You can add custom compatibility rules to allow cross-type connections:
string ports to connect to json inputs:
/port-config API endpoint.
Dynamic Ports
Nodes can let users create additional ports at runtime through special config properties. WhendynamicInputs or dynamicOutputs appear in a node’s config, the editor creates port handles dynamically.
Example: Dynamic Input Ports
In the node’sconfigSchema, declare a dynamicInputs property:
dynamicOutputs.
Gateway Branches
Gateway nodes usebranches in config to create conditional output paths. Each branch becomes an output port handle.
Example
{nodeId}-output-success, {nodeId}-output-error, etc. Edges connect from these handles to downstream nodes.
Handle ID Format
All port handles — static, dynamic, and branch — follow the same naming convention:text_input.1-output-text— static output portmerger.1-input-extra_data— dynamic input portrouter.1-output-success— gateway branch output
sourceHandle and targetHandle fields.
Next Steps
- Node Structure — where ports are defined in the node JSON
- Edge Structure — how edges reference port handles
- Configuration Schema — JSON Schema for node config forms
- Node Types — visual appearance and connection behavior in the editor