Skip to main content

Data Nodes

Data nodes handle input, output, and data manipulation in your workflows. Use them to accept files and URLs, produce outputs, and manage HTTP requests and database operations.

Input Nodes​

Input Node​

Basic input/constants for workflow initialization.

{
inputType: "text", // or "json"
value: "Default value"
}

Files Node​

Accept file uploads in your workflow.

Configuration​

{
inputName: "documents",
required: true,
allowedFileTypes: [
"application/pdf",
"text/plain",
"text/markdown",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
],
maxFiles: 10,
maxFileSizeMb: 25,
chunkSize: 1000,
chunkOverlap: 200,
outputVariable: "uploaded_files",
label: "Upload Documents",
description: "Upload PDF, TXT, MD, or DOCX files"
}

Supported File Types​

CategoryExtensionsMIME Types
DocumentsPDF, DOCX, DOC, TXT, MD, HTMLapplication/pdf, etc.
DataJSON, CSV, XLSXapplication/json, text/csv
CodeJS, TS, PY, etc.text/javascript, etc.
ImagesPNG, JPG, GIF, WEBPimage/*

Output​

{
files: [
{
name: "report.pdf",
size: 1024000,
mimeType: "application/pdf",
content: "Extracted text content...",
chunks: [
{ text: "Chunk 1...", index: 0 },
{ text: "Chunk 2...", index: 1 }
]
}
];
}

Chunking​

Files are automatically chunked for RAG applications:

  • chunkSize: Characters per chunk (default: 1000)
  • chunkOverlap: Overlap between chunks (default: 200)

URL Node​

Accept and process URLs.

{
inputName: "urls",
scrapingMode: "markdown", // html, text, markdown
scrapeSubpages: false,
timeout: 30,
followRedirects: true,
includeMetadata: true,
chunkingAlgorithm: "semantic",
chunkSize: 1000,
chunkOverlap: 200,
advancedExtraction: false,
ocrEnabled: false,
outputVariable: "url_content",
label: "Reference URLs",
description: "Enter URLs to include as context"
}

Scraping Modes​

ModeOutput
htmlRaw HTML content
textPlain text only
markdownStructured markdown

Output​

{
urls: [
{
url: "https://example.com/article",
title: "Article Title",
content: "Extracted content...",
metadata: {
description: "...",
author: "...",
publishedDate: "..."
},
chunks: [...]
}
]
}

Web Search Node​

Search the web and return results.

{
query: "{{user.search_term}}",
maxResults: 10,
searchType: "general", // general, news, images
outputVariable: "search_results"
}

Output​

{
results: [
{
title: "Result Title",
url: "https://...",
snippet: "Preview text...",
publishedDate: "2024-01-15"
}
];
}

Web Browse Node​

Fetch and read web page content.

{
url: "{{input.url}}",
extractText: true,
maxLength: 50000,
outputVariable: "page_content"
}

PDF Extract Node​

Extract content from PDF files.

{
path: "{{files_node.output.files[0].url}}",
extractText: true,
extractMetadata: true,
pageStart: 1,
pageEnd: null, // All pages
specificPages: null, // Or [1, 3, 5]
outputFormat: "text",
password: null, // For encrypted PDFs
outputVariable: "pdf_content"
}

File Download Node​

Download files from URLs.

{
url: "{{api_response.file_url}}",
filename: "downloaded_file.pdf",
maxSize: 52428800, // 50MB
timeout: 60,
followRedirects: true,
allowedContentTypes: ["application/pdf", "image/*"],
outputVariable: "downloaded_file"
}

File Read Node​

Read files from storage.

{
path: "{{file.path}}",
encoding: "utf-8", // utf-8, base64, binary
maxSize: 10485760, // 10MB
outputVariable: "file_content"
}

Output Nodes​

Output Node​

Collect and return workflow outputs.

{
outputName: "result",
value: "{{llm_node.output.response}}",
format: "json", // json, string, number, boolean
description: "The main workflow output"
}

Multiple output nodes create a combined output object:

{
result: "...",
summary: "...",
metadata: {...}
}

Template Output Node​

Render templates with variable interpolation.

{
outputName: "report",
template: `
# Report for {{company.name}}

Generated on: {{current_date}}

## Summary
{{analysis.summary}}

## Key Findings
{{#each findings}}
- **{{this.title}}**: {{this.description}}
{{/each}}

## Recommendations
{{recommendations}}
`,
outputFormat: "markdown", // markdown, html
description: "Formatted report"
}

Template Syntax​

SyntaxDescription
{{variable}}Insert variable value
{{#each items}}...{{/each}}Loop over array
{{#if condition}}...{{/if}}Conditional content
{{this}}Current item in loop
{{@index}}Current loop index

Action Node​

Perform external actions (send, create, update, delete).

{
provider: "slack",
operation: "send_message",
connectionId: "conn_abc123",
parameters: {
channel: "#general",
message: "{{notification.text}}"
},
outputVariable: "action_result"
}

Used for:

  • Sending notifications
  • Creating records
  • Updating external systems
  • Triggering integrations

Chart Generation Node​

Create charts and visualizations.

{
chartType: "bar",
dataSource: "{{analytics.monthly_data}}",
dataLabels: {
x: "month",
y: "revenue"
},
title: "Monthly Revenue",
subtitle: "2024",
xAxisLabel: "Month",
yAxisLabel: "Revenue ($)",
width: 800,
height: 400,
theme: "light",
legend: true,
showGrid: true,
showValues: true,
filename: "revenue_chart.png",
outputVariable: "chart_output"
}

Chart Types​

TypeDescription
barVertical bar chart
horizontal_barHorizontal bar chart
lineLine chart
areaArea chart
piePie chart
donutDonut chart
scatterScatter plot
histogramHistogram
heatmapHeat map

Spreadsheet Generation Node​

Create spreadsheets from data.

{
format: "xlsx", // xlsx, csv
filename: "export.xlsx",
dataSource: "{{query_results}}",
sheetName: "Data",
headerBold: true,
headerBackgroundColor: "#4472C4",
headerFontColor: "#FFFFFF",
alternateRows: true,
freezeHeader: true,
outputVariable: "spreadsheet_output"
}

PDF Generation Node​

Create PDF documents.

{
content: "{{template_output.rendered}}",
format: "markdown", // markdown, html
filename: "document.pdf",
pageSize: "A4",
orientation: "portrait",
margins: { top: 20, right: 20, bottom: 20, left: 20 },
headerText: "Company Name",
footerText: "Confidential",
includePageNumbers: true,
outputVariable: "pdf_output"
}

Screenshot Capture Node​

Capture screenshots of web pages.

{
url: "{{input.url}}",
fullPage: true,
width: 1920,
height: 1080,
deviceScale: 2,
format: "png", // png, jpeg, webp
quality: 90,
delay: 1000,
selector: null, // Specific element
darkMode: false,
timeout: 30000,
filename: "screenshot.png",
outputVariable: "screenshot_output"
}

File Write Node​

Write content to files.

{
path: "output/report.txt",
content: "{{generated_content}}",
encoding: "utf-8",
createDirectories: true,
overwrite: true,
outputVariable: "file_write_result"
}

HTTP Node​

Make HTTP requests to external APIs.

Configuration​

{
method: "POST",
url: "https://api.example.com/endpoint",
headers: {
"Content-Type": "application/json",
"X-Custom-Header": "{{custom_value}}"
},
queryParams: {
"filter": "active",
"limit": "100"
},
authType: "bearer",
authCredentials: {
token: "{{env.API_TOKEN}}"
},
bodyType: "json",
body: {
"name": "{{user.name}}",
"email": "{{user.email}}"
},
timeout: 30000,
retryCount: 3,
outputVariable: "api_response"
}

Methods​

MethodUse Case
GETRetrieve data
POSTCreate resources
PUTReplace resources
PATCHPartial updates
DELETERemove resources

Authentication Types​

TypeConfiguration
noneNo authentication
basic{ username, password }
bearer{ token }
apiKey{ key, value, location }

Body Types​

TypeContent-Type
jsonapplication/json
formapplication/x-www-form-urlencoded
rawCustom (set in headers)

Output​

{
status: 200,
statusText: "OK",
headers: {...},
body: {...},
responseTime: 245
}

Database Node​

Query and manipulate databases.

Supported Databases​

TypeDescription
postgresqlPostgreSQL
mysqlMySQL / MariaDB
mongodbMongoDB

Operations​

OperationDescription
queryExecute SELECT query
insertInsert records
updateUpdate records
deleteDelete records

Configuration​

{
databaseType: "postgresql",
connectionId: "conn_database",
operation: "query",
query: "SELECT * FROM users WHERE status = $1 AND created_at > $2",
parameters: ["active", "2024-01-01"],
outputVariable: "query_results"
}

Insert Example​

{
operation: "insert",
query: "INSERT INTO logs (event, data, timestamp) VALUES ($1, $2, NOW())",
parameters: ["user_action", "{{event_data}}"]
}

MongoDB Example​

{
databaseType: "mongodb",
operation: "query",
query: {
collection: "users",
filter: { status: "active" },
projection: { name: 1, email: 1 },
sort: { createdAt: -1 },
limit: 100
}
}

Best Practices​

Input Handling​

  • Validate file types and sizes
  • Set appropriate chunk sizes for RAG
  • Use descriptive labels and descriptions
  • Handle empty inputs gracefully

Output Formatting​

  • Use template outputs for structured documents
  • Choose appropriate chart types for data
  • Compress large outputs when possible
  • Include metadata for traceability

HTTP Requests​

  • Always set timeouts
  • Use retry for transient failures
  • Secure credentials in environment variables
  • Validate responses before use

Database Operations​

  • Use parameterized queries (prevent SQL injection)
  • Limit result sets for large tables
  • Handle connection errors
  • Log operations for debugging