Node Types
Orchka provides a variety of node types organized into categories. Each node serves a specific purpose in your workflow.
Triggers
Triggers are the starting points of your workflows. They define when and how a workflow begins execution.
Manual Trigger
The default trigger that allows manual execution of workflows.
Type: MANUAL_TRIGGER
Category: TriggersUse Cases:
- Testing workflows during development
- On-demand automation tasks
- Debugging and troubleshooting
Cron Trigger
Starts a workflow on a cron schedule.
Type: CRON_TRIGGER
Category: TriggersConfiguration:
- Name: Node identifier
- Cron Pattern: Schedule expression
Actions
Action nodes perform operations and can transform data.
HTTP Request
Makes HTTP requests to external APIs and services.
Type: HTTP_REQUEST
Category: ActionsConfiguration:
| Field | Description |
|---|---|
| URL | Target endpoint |
| Method | GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD |
| Headers | Request headers (with enable/disable toggle) |
| Body | Request body (JSON, text, form-data, x-www-form-urlencoded) |
| Auth | None, Bearer, Basic, API Key, or Credential |
Authentication Options:
| Type | Description |
|---|---|
| None | No authentication |
| Bearer | Authorization: Bearer <token> |
| Basic | Authorization: Basic <base64> |
| API Key | Custom header with API key |
| Credential | Use a stored credential |
Advanced Settings:
- Timeout: Request timeout in milliseconds (default: 30000)
- Follow Redirects: Automatically follow HTTP redirects
- Retry on Failure: Retry failed requests with exponential backoff
- Max Retries: Maximum retry attempts (default: 3)
Social Media Actions
Publish to popular social platforms with dedicated nodes and credential types.
| Node | Type | Credential |
|---|---|---|
| X Post | X_POST | X |
| LinkedIn Post | LINKEDIN_POST | |
| Facebook Page Post | FACEBOOK_POST | Facebook Page |
| Instagram Post | INSTAGRAM_POST | |
| Threads Post | THREADS_POST | Threads |
| Discord Message | DISCORD_MESSAGE | Discord |
| Reddit Post | REDDIT_POST | |
| Bluesky Post | BLUESKY_POST | Bluesky |
| Mastodon Post | MASTODON_POST | Mastodon |
| Pinterest Pin | PINTEREST_PIN |
See the Social Media Nodes reference for platform-specific fields and notes.
AI
AI nodes leverage large language models for intelligent automation.
AI Agent
Executes AI-powered tasks with tool calling capabilities.
Type: AI_AGENT
Category: AIConfiguration:
- Model: AI model to use
- Credential: Stored credential for the AI provider (optional)
- System Prompt: Instructions for the AI agent
- Tools: Connected AI Tool nodes for function calling
Supported Providers:
- OpenAI (GPT-4.1, GPT-4o, o1, o3)
- Anthropic (Claude Sonnet 4, Claude 3.7, Claude 3.5 Haiku)
- Google (Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.0 Flash)
Authentication: Select a stored credential in the node settings. This is the only way — AI provider keys are deliberately not read from environment variables, because a process-wide key would be shared by every organization on the deployment. A node with no credential selected fails with a message telling you to attach one. See Credentials.
AI Generate
Simple text generation using AI models.
Type: AI_GENERATE
Category: AIConfiguration:
- Model: AI model to use
- Credential: Stored credential for the AI provider
- System Prompt: Instructions for generation
- Prompt/Input Variable: Text to process
- Temperature: Creativity level (0-2)
- Max Tokens: Maximum output length
Use Cases:
- Content creation
- Summarization
- Translation
- Text transformation
AI Classify
Classify content into predefined categories.
Type: AI_CLASSIFY
Category: AIConfiguration:
- Model: AI model to use
- Categories: Classification options with labels and descriptions
- Include Confidence: Add confidence score (0-1)
- Include Reasoning: Add explanation for classification
Built-in Templates:
- Sentiment Analysis (positive/negative/neutral)
- Intent Detection (question/request/complaint/feedback)
- Priority Classification (urgent/high/medium/low)
- Spam Detection (spam/not_spam)
AI Extract
Pull structured data out of unstructured input, against a JSON Schema you define. Unlike AI Generate, the output is an object, not prose.
Type: AI_EXTRACT
Category: AIConfiguration:
- Model: AI model to use
- Credential: required, matching the provider
- System Prompt / Prompt: what to extract
- Input Variable: expression selecting the text to read from
- Output Schema: JSON Schema describing the shape to return
- Temperature: defaults to
0.3— lower than the other AI nodes, since extraction rewards consistency over invention
Built-in Templates:
- Entity Extraction — a list of
{ name, type, value } - Contact Info —
name,email,phone,company, each nullable - Summary —
summary,keyPoints[], and asentimentenum
AI Agent (Experimental)
Type: AI_AGENT_EXP
Category: AIA second agent implementation built on the AI SDK rather than LangChain. It takes the same model and credential settings and exposes the same tools. It is kept alongside the main AI Agent while the two implementations are compared — prefer AI Agent unless you have a reason not to.
Control
Control nodes manage the flow of execution.
Condition (If)
Branches workflow based on an expression.
Type: IF_CONDITION
Category: ControlConfiguration:
- Expression: JSONata expression that evaluates to boolean
- True Branch: Path when expression is true
- False Branch: Path when expression is false
Example Expressions:
$input.status = "success"
$input.count > 10
$exists($input.email)Wait
Pauses workflow execution for a specified duration or until a specific time.
Type: WAIT
Category: ControlConfiguration:
| Mode | Fields | Description |
|---|---|---|
| Duration | value, unit | Wait for a fixed time period |
| Until | timestamp | Wait until a specific date/time |
Duration Units: seconds, minutes, hours, days
Example - Duration Mode:
{
"mode": "duration",
"duration": {
"value": 5,
"unit": "minutes"
}
}Example - Until Mode:
{
"mode": "until",
"until": "{{ $input.scheduledTime }}"
}Loop
Iterates over an array of items or a fixed count.
Type: LOOP
Category: ControlConfiguration:
| Mode | Fields | Description |
|---|---|---|
| Array | arrayExpression | Iterate over each element |
| Count | count | Iterate N times |
Loop Context Variables:
$item- Current item in the iteration$index- Current index (0-based)$total- Total number of items
Example - Array Mode:
{
"mode": "array",
"arrayExpression": "{{ $input.users }}"
}Example - Count Mode:
{
"mode": "count",
"count": 10
}Switch
Routes workflow execution based on matching a value against multiple cases.
Type: SWITCH
Category: ControlConfiguration:
- Expression: Value to evaluate and match
- Cases: Array of value/label pairs to match against
- Default: Fallback when no case matches
Example Configuration:
{
"expression": "{{ $input.status }}",
"cases": [
{ "id": "case-1", "value": "pending", "label": "Pending" },
{ "id": "case-2", "value": "approved", "label": "Approved" },
{ "id": "case-3", "value": "rejected", "label": "Rejected" }
]
}Output Handles:
- One handle per case (connects to case-specific logic)
- Default handle (when no case matches)
Merge
Converges multiple incoming branches into one output.
Type: MERGE
Category: ControlConfiguration:
| Mode | Description |
|---|---|
| Append | Flatten all inputs into one array |
| Merge by Key | Join rows using a shared key field |
| Keep First | Use the first non-empty value |
| Keep Last | Use the last non-empty value |
| Combine | Merge object fields |
| Custom Expression | Use a JSONata expression |
See the Merge Node reference for examples and custom expression inputs.
Visual
These carry no behaviour. The executor skips them at runtime, so they cost nothing and cannot fail.
Group
Type: GROUP
Category: VisualA container for organising related nodes on the canvas.
Annotation
Type: ANNOTATION
Category: VisualA free-text note pinned to the canvas, for explaining a workflow to whoever opens it next.
Initial
Type: INITIAL
Category: VisualThe placeholder a new workflow starts with. Replace it with a trigger — a workflow needs one to be runnable.