Skip to main content

Workflow Nodes

Browse, create, and manage workflow node types. Node types define the building blocks available in the workflow builder, including data sources, transformations, AI models, and custom logic. System nodes are read-only and cannot be modified or deleted.

All endpoints require authentication via X-API-Key header and the appropriate scope.


WorkflowNode Object

{
"id": "node_type_001",
"nodeId": "mysql-source",
"label": "MySQL Source",
"name": "mysql-source",
"description": "Extracts data from a MySQL database",
"category": "sources",
"type": "database",
"nodeType": "source",
"version": "1.2.0",
"isSystem": true,
"isActive": true,
"configSchema": {
"type": "object",
"properties": {
"dataSource": {
"type": "string",
"description": "Name of the data source to connect to"
},
"query": {
"type": "string",
"description": "SQL query to execute"
}
},
"required": ["dataSource", "query"]
},
"defaultConfig": {
"query": "SELECT * FROM table LIMIT 100"
},
"icon": "database",
"inputs": [],
"outputs": [
{
"id": "output",
"label": "Data",
"type": "data"
}
],
"tags": ["database", "mysql", "etl"],
"createdBy": "system",
"updatedBy": "system",
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-15T00:00:00Z"
}

GET /api/v1/workflow-nodes

List available workflow node types.

Scope: workflows:read

Query Parameters

ParameterTypeRequiredDescription
activebooleanNoFilter by active status (default: true)
categorystringNoFilter by category, e.g. sources, destinations, transforms, ai, logic
typestringNoFilter by type, e.g. database, file, api, model
isSystembooleanNoFilter by system vs. custom nodes
searchstringNoSearch by label, name, or description
limitintegerNoNumber of results to return (default: 50)
offsetintegerNoNumber of results to skip (default: 0)
sortstringNoSort field and direction, e.g. label:asc

Response 200 OK

{
"count": 35,
"limit": 50,
"offset": 0,
"nodes": [
{
"id": "node_type_001",
"nodeId": "mysql-source",
"label": "MySQL Source",
"name": "mysql-source",
"description": "Extracts data from a MySQL database",
"category": "sources",
"type": "database",
"nodeType": "source",
"version": "1.2.0",
"isSystem": true,
"isActive": true,
"icon": "database",
"tags": ["database", "mysql", "etl"],
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-15T00:00:00Z"
}
]
}

POST /api/v1/workflow-nodes

Create a custom workflow node type.

Scope: workflows:write

Request Body

{
"label": "Custom Enrichment",
"category": "transforms",
"type": "custom",
"nodeId": "custom-enrichment",
"description": "Enriches records with additional data from an external API",
"version": "1.0.0",
"configSchema": {
"type": "object",
"properties": {
"apiUrl": {
"type": "string",
"description": "External API endpoint"
},
"apiKey": {
"type": "string",
"description": "API authentication key"
}
},
"required": ["apiUrl"]
},
"defaultConfig": {},
"icon": "sparkles",
"inputs": [
{
"id": "input",
"label": "Data",
"type": "data"
}
],
"outputs": [
{
"id": "output",
"label": "Enriched Data",
"type": "data"
}
],
"tags": ["custom", "enrichment"],
"isActive": true
}
FieldTypeRequiredDescription
labelstringYesDisplay label for the node
categorystringYesNode category: sources, destinations, transforms, ai, logic
typestringYesNode type within the category, e.g. database, file, custom
nodeIdstringNoUnique identifier slug. Auto-generated from label if not provided
descriptionstringNoDescription of what the node does
versionstringNoSemantic version (default: 1.0.0)
configSchemaobjectNoJSON Schema defining the node's configuration options
defaultConfigobjectNoDefault configuration values
iconstringNoIcon name for the workflow builder UI
inputsarrayNoArray of input port definitions
outputsarrayNoArray of output port definitions
tagsarrayNoArray of tag strings
isActivebooleanNoWhether the node is active (default: true)

Response 201 Created

{
"nodeId": "custom-enrichment"
}

GET /api/v1/workflow-nodes/:id

Get a single workflow node type by ID.

Scope: workflows:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesNode type ID

Response 200 OK

Returns the full WorkflowNode object.


PUT /api/v1/workflow-nodes/:id

Update a custom workflow node type. System nodes cannot be modified.

Scope: workflows:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesNode type ID

Request Body

{
"label": "Custom Enrichment v2",
"description": "Updated enrichment node with batch support",
"version": "2.0.0",
"configSchema": {
"type": "object",
"properties": {
"apiUrl": {
"type": "string",
"description": "External API endpoint"
},
"apiKey": {
"type": "string",
"description": "API authentication key"
},
"batchSize": {
"type": "integer",
"description": "Number of records per batch",
"default": 100
}
},
"required": ["apiUrl"]
},
"defaultConfig": {
"batchSize": 100
},
"tags": ["custom", "enrichment", "batch"]
}
FieldTypeRequiredDescription
labelstringNoDisplay label for the node
descriptionstringNoNode description
versionstringNoSemantic version
configSchemaobjectNoJSON Schema for configuration
defaultConfigobjectNoDefault configuration values
iconstringNoIcon name
inputsarrayNoInput port definitions
outputsarrayNoOutput port definitions
tagsarrayNoTag strings
isActivebooleanNoActive status

Response 200 OK

Returns the updated WorkflowNode object.

Error 403 Forbidden

Returned when attempting to update a system node.

{
"error": "Forbidden",
"message": "System nodes cannot be modified",
"statusCode": 403
}

DELETE /api/v1/workflow-nodes/:id

Delete a custom workflow node type. System nodes cannot be deleted.

Scope: workflows:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesNode type ID

Response 204 No Content

Error 403 Forbidden

Returned when attempting to delete a system node.

{
"error": "Forbidden",
"message": "System nodes cannot be deleted",
"statusCode": 403
}

GET /api/v1/workflow-nodes/services/datasources

List data sources available for use in workflow nodes. These are the configured database and file connections that source and destination nodes can connect to.

Scope: workflows:read

Query Parameters

ParameterTypeRequiredDescription
typestringNoFilter by data source type, e.g. mysql, postgresql, mongodb, s3
categorystringNoFilter by category, e.g. database, file, api

Response 200 OK

{
"count": 4,
"datasources": [
{
"id": "ds_001",
"name": "Production MySQL",
"type": "mysql",
"category": "database",
"status": "connected",
"organizationId": "org_xyz"
},
{
"id": "ds_002",
"name": "Analytics PostgreSQL",
"type": "postgresql",
"category": "database",
"status": "connected",
"organizationId": "org_xyz"
},
{
"id": "ds_003",
"name": "Data Lake S3",
"type": "s3",
"category": "file",
"status": "connected",
"organizationId": "org_xyz"
},
{
"id": "ds_004",
"name": "MongoDB Atlas",
"type": "mongodb",
"category": "database",
"status": "connected",
"organizationId": "org_xyz"
}
]
}

GET /api/v1/workflow-nodes/services/addons

List add-ons available for use in workflow nodes. Add-ons provide additional capabilities such as caching, message queues, and vector databases.

Scope: workflows:read

Query Parameters

ParameterTypeRequiredDescription
typestringNoFilter by add-on type, e.g. redis, rabbitmq, chromadb

Response 200 OK

{
"count": 2,
"addons": [
{
"id": "addon_001",
"name": "Redis Cache",
"type": "redis",
"status": "running",
"organizationId": "org_xyz"
},
{
"id": "addon_002",
"name": "ChromaDB Vectors",
"type": "chromadb",
"status": "running",
"organizationId": "org_xyz"
}
]
}

GET /api/v1/workflow-nodes/services/models

List AI models available for use in workflow nodes. These are the models configured through AI Gateway that can be used in AI-powered nodes.

Scope: workflows:read

Query Parameters

ParameterTypeRequiredDescription
providerstringNoFilter by model provider, e.g. openai, anthropic, google
typestringNoFilter by model type, e.g. chat, embedding, image

Response 200 OK

{
"count": 3,
"models": [
{
"id": "model_001",
"name": "GPT-4o",
"provider": "openai",
"type": "chat",
"modelId": "gpt-4o",
"organizationId": "org_xyz"
},
{
"id": "model_002",
"name": "Claude Sonnet 4",
"provider": "anthropic",
"type": "chat",
"modelId": "claude-sonnet-4-20250514",
"organizationId": "org_xyz"
},
{
"id": "model_003",
"name": "Text Embedding 3 Large",
"provider": "openai",
"type": "embedding",
"modelId": "text-embedding-3-large",
"organizationId": "org_xyz"
}
]
}