Your First Workflow
Learn how to create your first custom workflow - from an empty canvas to a published, running automation.
Follow this walkthrough to construct a basic workflow that fetches data from an external API, processes it with an agent, and stores the result. Along the way you'll learn the builder itself - the same mechanics apply to every workflow you'll build afterwards.
Before you start
It helps to understand the three building blocks of every workflow:
- Nodes - self-contained execution units that perform one task each (query a database, call an HTTP endpoint, invoke an LLM...). Each node accepts inputs, runs its operation, and outputs structured data.
- Edges - connectors that define execution flow. Data flows down the graph, letting downstream nodes reference outputs from any upstream step.
- Triggers - what starts a run: manual execution, a schedule, a webhook, or changes to Resource Items. See Workflow Triggers.
Building the workflow
Create the workflow
Navigate to Settings → Workflows and select Create Workflow. Give it a descriptive name and a unique identifier slug.
Drag nodes onto the canvas
From the palette sidebar, drag nodes onto the canvas. For this example:
- An HTTP Request node to fetch data from a public API.
- An Agent Call node to interpret the response.
- A Create Resource node to store the result.
Each palette entry is grouped by category - browse Nodes for the full catalog.
Configure each node
Click a node to open its configuration drawer. Fill in the required fields (URLs, prompts, queries...). Any field that supports templating accepts {{ ... }} expressions to inject dynamic values from upstream nodes:
{{ nodes.http_request.output.body }}Reference nodes by their ID. When a whole field is a single expression, it keeps its native type (number, boolean, array, object) instead of being flattened into text.
Expression help is built in
The config drawer highlights expression fields, and the toolbar's expression cheat sheet offers copy-paste recipes for reading values, ternaries, string, list, date, and regex operations. Full language reference lives in the Scripting guide.
Connect the nodes
Drag a connection handle from the output port of one node to the input port of the next. Your graph should follow a clear directional flow from trigger to terminal action - loops are expressed with dedicated control-flow nodes, not circular wiring.
Validate
Select Validate in the top toolbar. The platform saves your draft and checks the graph server-side, reporting problems directly on the offending nodes or edges. Fix everything it reports before continuing.
Publish
Select Publish to snapshot the current graph as a new version. Publishing matters:
- Runs always execute against the published snapshot, never your live draft.
- Every publish creates a new version (
v1,v2, ...); a workflow that has never been published has no runnable version. - You can keep editing the draft freely - changes only take effect after the next publish.
Run it
With a published version in place:
- Toggle the workflow Active so automatic triggers may fire.
- Select Run to execute it manually right away.
- Watch progress live: nodes light up on the canvas as the run advances, and the Runs tab records every execution.