> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryblend.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflow Overview

> How to build a workflow: the canvas, nodes, connections, and data types.

A **workflow** is a visual canvas in the [Blend AI editor](https://tryblend.ai/workflow). Think of it like Figma, but for AI: an infinite pane where you drop **nodes**, wire them together, and run them.

You don't build a workflow only to ship it. Most of the time you build one to **experiment**: try a model, branch off a variation, compare outputs, and learn what works.

The canvas is huge on purpose, so you can lay out many experiments side by side, run a lot at once, and explore freely.

Publishing is optional. Some workflows you keep as a private playground forever; others you [publish](#publishing) once they're worth rerunning. Both are normal.

## The canvas

The canvas is an infinite pane. Drag nodes in from the toolbar, move them around, and connect them. Click a node to open its settings panel, where you choose models, write prompts, and configure options.

Run a supported server node to test it, or run the whole graph. Lay out experiments side by side and use Annotation nodes to explain or group them.

Each node type is documented on its own page under [Nodes](/workflow/nodes/input).

## The shape of a runnable chain

When you do want an end-to-end run, a connected chain follows the same three stages:

<Steps>
  <Step title="Input">
    **User Input** nodes receive values — typed in directly, or sent by a caller once published.
  </Step>

  <Step title="Processing">
    LLM, Image Gen, Video Gen, Tool, Utility, Batch, and Choose Output nodes transform that data step by step.
  </Step>

  <Step title="Result">
    **User Result** nodes mark the output of the chain.
  </Step>
</Steps>

## Node families

The live workflow canvas has eleven registered node types:

| Family              | Nodes                                                                                                                                    | What they do                                                            |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Sources             | [User Input](/workflow/nodes/input), [Batch](/workflow/nodes/batch), [Collection](/workflow/nodes/collection-read)                       | Start data flowing through the graph.                                   |
| AI and tools        | [LLM](/workflow/nodes/llm), [Image Gen](/workflow/nodes/image-gen), [Video Gen](/workflow/nodes/video-gen), [Tool](/workflow/nodes/tool) | Run models or built-in capabilities.                                    |
| Workflow control    | [Utility](/workflow/nodes/utility), [Choose Output](/workflow/nodes/output-comparison)                                                   | Transform data or pause for a human choice.                             |
| Outputs             | [User Result](/workflow/nodes/result)                                                                                                    | Mark what the runner and API return.                                    |
| Canvas organization | [Annotation](/workflow/nodes/annotation)                                                                                                 | Add notes, image boards, frames, and arrows without changing execution. |

Every registered node has its own page under [Nodes](/workflow/nodes/input).

## How nodes connect

Nodes connect through **handles** — the small dots on a node's edges.

* **Input handles** sit on the **left** of a node. They receive data.
* **Output handles** sit on the **right** of a node. They emit data.

You draw an **edge** by dragging from an output handle to a compatible input handle. A few rules govern what's allowed:

| Rule                           | Behavior                                                                                                                                     |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Single vs. multiple inputs** | Most input handles accept exactly one edge. Some — like an LLM Agent's **Tools** input or a Choose Output's **Choices** input — accept many. |
| **No cycles**                  | An edge that would loop data back into one of its own upstream nodes is rejected.                                                            |
| **No self-connections**        | A node can't connect to itself.                                                                                                              |
| **Type compatibility**         | The output type and input type must be compatible (see below).                                                                               |

<Note>
  If a connection is rejected, the editor tells you why — usually a type mismatch, a cycle, or an input handle that's already full.
</Note>

## Data types

Every handle carries a **data type**. This is how the editor knows which connections make sense.

| Type         | Carries                                                                            |
| ------------ | ---------------------------------------------------------------------------------- |
| `text`       | Strings — prompts, captions, model output.                                         |
| `image`      | An image file.                                                                     |
| `video`      | A video file.                                                                      |
| `audio`      | An audio file.                                                                     |
| `file`       | Any file, including the media types above.                                         |
| `model`      | A model selection, preserving the model picker and its filtering rules.            |
| `collection` | A saved collection selection.                                                      |
| `any`        | A flexible slot that adapts to whatever connects to it.                            |
| `tool-list`  | A bundle of tools or sub-agents — only ever wired into an LLM Agent's tools input. |

## Compatibility matrix

When you drag an edge, the editor checks the source type against the target type:

| Source → Target                          | Allowed?                                                     |
| ---------------------------------------- | ------------------------------------------------------------ |
| Same type (`text` → `text`)              | ✅ Exact match always connects.                               |
| Anything → `any` (or `any` → anything)   | ✅ `any` is a wildcard — except it never accepts `tool-list`. |
| `image` / `video` / `audio` → `file`     | ✅ Media is a kind of file.                                   |
| `tool-list` → `tool-list`                | ✅ The only valid use of `tool-list` — strict on both sides.  |
| `tool-list` → anything else              | ❌ Tools only plug into a tools input.                        |
| `text` → `image`, `image` → `text`, etc. | ❌ Mismatched concrete types are rejected.                    |

## Running the same node many times

By default a node runs once for each input item group it receives. Most workflows start with one item, so each node runs once.

A [Batch](/workflow/nodes/batch), a multi-select [Choose Output](/workflow/nodes/output-comparison), or an LLM structured list can create multiple items. Downstream nodes then run once per item.

See [Lists & single values](/concepts/lists-and-values) for the exact behavior, including Cartesian products when multiple handles receive lists.

## Publishing

When a workflow is worth running again and again, **publish** it. Publishing turns the canvas into a reusable runner page.

User Input nodes become form fields, User Result nodes become outputs, and public workflows can include a creator fee.

<Note>
  Publishing is optional. A workflow you never publish still runs perfectly well inside the editor. When you do publish, you can keep iterating on the canvas and publish a new version later.
</Note>

## Next steps

<CardGroup cols={2}>
  <Card title="Review and publish" icon="rocket" href="/workflow/review-and-publish">
    How inputs, results, visibility, pricing, examples, and API access work when publishing.
  </Card>

  <Card title="Lists & single values" icon="list-tree" href="/concepts/lists-and-values">
    How batches, selections, and structured list outputs change downstream run counts.
  </Card>

  <Card title="Agents, sub-agents & tools" icon="robot" href="/workflow/agents-and-tools">
    The difference between an Agent, a Sub-agent, and a Tool — and how to wire them together.
  </Card>

  <Card title="User Input" icon="arrow-right-to-bracket" href="/workflow/nodes/input">
    Start with the node that feeds values into your workflow.
  </Card>
</CardGroup>
