Documentation
Everything you need to build, connect, and debug workflows in AsyncNode.
Overview
AsyncNode workflows are directed graphs of nodes. Each workflow starts at exactly one trigger node, flows through any number of action nodes, and runs top to bottom in the order your connections define.
- Drag a node from the sidebar onto the canvas to add it to your workflow.
- Connect nodes by dragging from one node's output handle to the next node's input handle.
- Click a node to open its configuration panel on the right.
- Save your workflow, then run it manually, via webhook, or on a schedule.
- Watch execution status and output live in the log panel at the bottom of the builder.
Node Types
Every node lives under one of five categories. Add a node by dragging it from the sidebar, then fill in its configuration panel.
Trigger
Starts the workflow
- Trigger Type
- Manual, Webhook, or Schedule (Cron)
- Interval (sec)
- Schedule only — minimum 60 seconds
AI Integration
Calls an AI model
- Provider
- Anthropic, OpenAI, or Groq
- Model
- Depends on provider, e.g. claude-sonnet-5, gpt-5.1, llama-3.3-70b-versatile
- API Key
- Provider API key
- Prompt
- Supports {{nodeId.field}} references to earlier node output
HTTP Request
Calls an external API
- URL
- Request URL, required
- Method
- GET, POST, PUT, PATCH, or DELETE
- Headers
- Key-value pairs
- Body
- Key-value pairs
Sends an email over SMTP
- SMTP Host / Port
- Your mail server
- Username / Password
- SMTP credentials
- To / Subject
- Recipient and subject line
- Body (HTML)
- Supports {{nodeId.field}} references
Slack
Posts a Slack message
- Bot Token
- xoxb-... bot token
- Channel
- #channel-name or channel ID
- Message
- Supports {{nodeId.field}} references
Connecting Nodes
Connections define both execution order and how data moves through your workflow.
To connect two nodes, drag from the small dot on the right edge of a node (its output) to the dot on the left edge of another node (its input).
A few rules keep workflows unambiguous:
- Every node can have at most one outgoing connection and at most one incoming connection.
- A node cannot connect to itself.
- The Trigger node has no input handle — it can only be the start of a workflow and can never receive an incoming connection.
Invalid connections (e.g. dragging a second connection into an already-connected node, or into a trigger) are rejected automatically by the canvas — you'll simply see the connection line snap back.
Passing Data Between Nodes
When a workflow runs, every node's output is kept in memory so any later node can reference it.
Reference an earlier node's output from any text field (Prompt, Body, Message, URL, Headers, etc.) using double curly braces:
{{nodeId.path.to.field}}nodeId is the ID of the node whose output you want (shown in the Run Log and in the node config panel). path.to.fieldwalks into that node's output object.
The trigger node is always available under the fixed key trigger, regardless of its node ID — this is the only node whose reference key never changes.
{{trigger.body.email}} → a field from a webhook's JSON body
{{trigger.query.userId}} → a query string param from a webhook call
{{node-3.choices.0.message.content}} → an AI node's model responseIf a field's value is exactlyone placeholder, the resolved value keeps its original type (object, number, etc.). If a placeholder is embedded inside a longer string, it's inserted as text.
Triggers
Every workflow starts with exactly one trigger node, set to one of three types.
Manual
Runs the workflow immediately when you click Run in the trigger's config panel. No external input — downstream nodes see the trigger's stored config as-is.
Webhook
Save the workflow to generate a unique webhook URL, shown in the trigger's config panel with a copy button. Any HTTP POST to that URL queues a run.
POST {backend_URL}/v1/webhooks/{webhookToken}The posted body, query string, and headers are all available to later nodes:
{{trigger.body...}} → JSON body of the POST request
{{trigger.query...}} → URL query parameters
{{trigger.headers...}} → request headersSchedule (Cron)
Set an interval in seconds (minimum 60) and click Start. The workflow then runs automatically on that interval until you click Stop. The panel shows whether the schedule is currently running.
Logs & Debugging
The panel at the bottom of the builder shows what's happening as your workflow runs, in real time.
Selected Node tab
Shows the output of whichever node you last clicked on the canvas, pretty-printed. Useful for checking one node's result without scrolling the full log.
Run Log tab
One row per node in the run, in execution order. A red badge on the tab shows how many nodes failed. Click a row to expand its full output or error.
Status icons used in the Run Log:
- Running — the node is currently executing
- Success — the node completed without errors
- Failed — the node threw an error; expand the row to see the message
Updates stream in live over a websocket as soon as the run starts, so you can watch each node go from running to success/failed without refreshing. Re-opening a workflow also loads the most recent run's log automatically, so you can debug a past run even after leaving the page.