Node Types Overview
- Agent Nodes
plai_agent: Invoke an AI agent
- Integration Nodes
firecrawl: Scrape and crawl websiteshttp: Make API requests
- Data Nodes
markdown_report: Generate formatted reports
- Container Nodes
parallel: Run nodes concurrentlysequential: Run nodes in orderloop: Iterate over arrayssubworkflow: Reuse another workflow
Agent Nodes
plai_agent
Invoke one of your AI agents with specific input.
Purpose: Call an agent to process information or make decisions
Key Parameters:
agent_name_slug: Name of the agent to invoke (required)input: Prompt text with variable interpolation (required)config: Optional model and execution settingsthread: Optional thread configuration for conversation context
- Text analysis and classification
- Information extraction
- Decision making
- Content generation
- Summarization
Integration Nodes
firecrawl
Start web scraping and crawling jobs via Firecrawl.
Purpose: Scrape website content and extract structured data
Key Parameters:
action:"scrape"or"crawl"urlorurls: Website address(es) to processrender:trueto execute JavaScriptformats: Output format like["markdown"]
- Node starts the job and returns immediately
- Status becomes
RUNNINGand waits for completion - Firecrawl sends webhook when done
- Next tick processes dependent nodes
- Website content extraction
- Monitoring web pages
- Competitive research
- Data scraping
http
Make outbound HTTP/HTTPS requests directly.
Purpose: Call external APIs and retrieve data
Key Parameters:
method:GET,POST,PUT,DELETE,PATCHurl: Full URL to requestheaders: Optional headers objectbody: Optional request bodytimeout: Request timeout in secondsresponse_format:"json","text", or"auto"
- Non-2xx status codes fail the node
- Connection timeouts fail the node
- Workflow stops on node failure
- API calls
- Webhooks
- Data retrieval from services
- External system integration
Data Nodes
markdown_report
Generate formatted markdown reports from workflow data.
Purpose: Compose structured markdown documents from node outputs
Key Parameters:
title: Report title (supports variable interpolation)description: Short descriptionsections: Array of report sectionsinclude_metadata: Include execution metadatainclude_timestamp: Include generation timestampinclude_toc: Include table of contents
- Executive summaries
- Research reports
- Analysis documentation
- Audit trails
- Export to markdown/PDF
Container Nodes
Containers group and organize how child nodes execute.parallel
Run child nodes concurrently based on their dependencies.
Purpose: Execute independent tasks simultaneously
Key Parameters:
nodes: Array of child nodes
- Each child node depends only on explicit
depends_on - No implicit dependencies between siblings
- All siblings with satisfied dependencies run in parallel
prepare_datacompletes- Then, in parallel:
source_a_analysissource_b_analysissource_c_analysis
- Total time: time of the longest child
- Parallel processing of multiple items
- Independent analyses
- Concurrent API calls
- Multi-source research
sequential
Run child nodes one after another in order.
Purpose: Chain operations where each depends on the previous
Key Parameters:
nodes: Array of child nodes
- Each child automatically depends on the previous sibling
- Explicit
depends_oncan specify other dependencies - Total execution time is the sum of all steps
fetch_dataruns firstanalyzeruns afterfetch_datacompletesgenerate_reportruns afteranalyzecompletes- Total time: sum of all steps (3 + 2 + 1 = 6 time units)
- Data processing pipelines
- Multi-stage transformations
- Workflows requiring step-by-step input
- Data refinement processes
loop
Iterate over array items, running child nodes for each.
Purpose: Process multiple items using the same workflow logic
Key Parameters:
items: Jinja2 expression pointing to an arraymode:"parallel"or"sequential"executionnodes: Child nodes to execute per item
{{loop.item}}: Current item value{{loop.index}}: Current iteration number (0-based)
items:[URL1, URL2, URL3]- All iterations run in parallel:
- Iteration 1:
fetch(URL1)→analyze(URL1) - Iteration 2:
fetch(URL2)→analyze(URL2) - Iteration 3:
fetch(URL3)→analyze(URL3)
- Iteration 1:
- Total time: time of the longest iteration
- Batch processing
- Iterating over search results
- Processing multiple files
- Parallel data extraction
subworkflow
Reuse another workflow as a node.
Purpose: Compose workflows, enabling reusability and modularity
Key Parameters:
workflow_name_slug: Name of the workflow to executeinput: Input data for the subworkflow (supports variable interpolation)
- Subworkflow is looked up by slug
- Child nodes are expanded into parent graph
- Nodes are prefixed with subworkflow ID (e.g.,
analyze_competitor[fetch]) - Output is aggregated onto the subworkflow node
- Parent nodes can depend on subworkflow and access its outputs
- Reusable workflow components
- Cleaner separation of concerns
- Version management per workflow
- Easier testing and maintenance
- Reusable analysis patterns
- Standard processing steps
- Complex workflows as building blocks
Node Output Access
All node outputs are stored in workflow context and accessible to dependent nodes:Choosing Node Types
Next Steps
- Dependencies - Define execution order between nodes
- Execution Variables - Access data across nodes
- Input Variables - Define workflow inputs