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

# Flows

> Chain AI agents to automate an entire task from start to finish, manually or on a schedule.

## What it is

**Flows** let you **chain AI agents** to automate an entire task from start to finish, without copying and pasting responses from one conversation to another.

Think of an assembly line: each step receives the result of the previous step, does its part, and passes it on. For example:

> **Contract received** → one agent **summarizes** the document → another agent **points out the risks** → the final result is saved for you to review.

You build this path once, by dragging blocks on the screen, and then run it as many times as you want, manually or **automatically** on a schedule.

## How to access

* Sidebar → **Flows**
* To create: **New flow** button.

<Note>
  The page only appears if the **Flows** permission is enabled for you. If you can't find the menu, contact your company's administrator.
</Note>

The **Flows** page has two tabs:

* **My flows** — the flows you created and the ones shared with you.
* **Templates** — ready-made flows provided by your company that you can use as a starting point.

## Basic concepts

| Term | What it means |
| - | - |
| **Flow** | The complete automation path, from start to finish. |
| **Node** | Each block (step) of the flow. E.g., an **Agent** node that summarizes a text. |
| **Connection** | The line that links one node to the next. It sets the order in which steps happen. |
| **Run** | Each time the flow runs. Every run is recorded in **Run history**. |
| **Output** | The result a node passes to the next one. The last node's result is the **Final result**. |

## How to use

### 1. Create a flow

<Steps>
  <Step title="Click New flow" />

  <Step title="Fill in the fields">
    * **Flow name** *(required)* — between **3 and 60 characters**. It can't repeat another flow's name.
    * **Description** *(optional)* — the flow's goal, in a few words.
  </Step>

  <Step title="Click Create">
    The flow editor opens next.
  </Step>
</Steps>

### 2. Get to know the editor

The editor has three areas:

| Area | What it's for |
| - | - |
| **Node palette** (left) | Lists the block types you can use. |
| **Canvas** (center) | Where you build the flow, dragging and connecting nodes. |
| **Properties** (right) | Shows the settings of the selected node. |

The top bar has the **Undo**, **Redo**, **Validate**, **Run**, **Run history**, **Help**, and **Save** buttons. Next to the flow name, you see whether there are **Unsaved changes** or everything is **All saved**.

### 3. Build the flow

<Steps>
  <Step title="Drag a node from the palette onto the canvas" />

  <Step title="Connect the nodes">
    Click a node's connection point and drag it to the next node.
  </Step>

  <Step title="Click a node to configure it in the Properties panel" />

  <Step title="Repeat until you reach the Output node" />
</Steps>

Every flow needs **one Start node** and **at least one Output node**.

### 4. Node types

| Node | What it does | When to use |
| - | - | - |
| **Start** | Where the flow begins. Sets whether the flow receives a text or file and whether it runs on its own on a schedule. | Always: it's the first node of every flow. |
| **Agent** | Calls an agent with the previous node's output. | For any step the AI should do: summarize, classify, translate, review, extract data. |
| **Tool** | Calls a tool with the previous node's output. | When the step uses a tool registered on the platform. |
| **Condition** | Picks a path based on the previous node's output. | For decisions like "if the response contains APPROVED, go this way; otherwise, that way". |
| **Parallel** | Splits the flow into paths that run at the same time. | When several independent analyses can happen together, which saves time. |
| **Merge** | Combines the results of parallel paths. | Right after a **Parallel** node. |
| **Sub-flow** | Runs another flow as a single step. | To reuse a flow you've already built. |
| **Output** | Ends the flow and saves the final result. | Always: it's the last node. |

### 5. Configure each node

<AccordionGroup>
  <Accordion title="Start" icon="play">
    * **Content input** — when enabled, clicking **Run** opens a window for you to **paste text** or **upload a file** (PDF, DOCX, XLSX, CSV, TXT, MD, JSON, HTML, PPTX, EPUB, RTF). This content is the flow's starting point. When disabled, the flow starts without asking for anything.
    * **Start mode**:
      * **Manual** — you decide when to run it, by clicking **Run**.
      * **Automatic** — the flow runs on its own, on the defined schedule:
        * **Interval** — every X hours (e.g., every 6 hours).
        * **Weekly** — on the chosen **days of the week** and **time**. The screen shows when the **next run** will be.

    <Warning>
      For a weekly schedule, choose **at least one day**. Without it, the flow never runs.
    </Warning>
  </Accordion>

  <Accordion title="Agent" icon="robot">
    * **Agent** — choose one of the agents you can use. If the list is empty, create an agent first (see [Agents](/en/guia/agentes)).
    * **Instructions** — tell the agent what to do in this step. E.g., *"List the three main risks in this contract."* The previous node's output is added right after your instructions.
    * **Timeout (ms)** — maximum time to wait for the response, in milliseconds (1,000 ms = 1 second). Leave empty for no limit.
  </Accordion>

  <Accordion title="Tool" icon="screwdriver-wrench">
    * **Tool** and **Function** — the tool and the function of it that will be called.
    * **Arguments (JSON)** — the data sent to the tool. Use `{{input}}` to include the previous node's output.
  </Accordion>

  <Accordion title="Condition" icon="code-branch">
    * **Comparison** — **Contains**, **Does not contain**, **Equals**, **Does not equal**, **Starts with**, **Ends with**, or **Matches regex**.
    * **Value to compare** — the text to look for in the previous node's output. E.g., `APPROVED`.
    * **Case sensitive** — enable if "Approved" and "APPROVED" should be treated as different.

    If the condition is true, the flow continues through the node's **top output**. Otherwise, it continues through the **bottom output**.

    <Tip>
      To use Condition, ask the previous agent for a standardized response. E.g., *"Respond only APPROVED or REJECTED."*
    </Tip>
  </Accordion>

  <Accordion title="Parallel" icon="arrows-split-up-and-left">
    All paths leaving this node run at the same time. Connect **at least two outputs** and use a **Merge** node afterward to combine the results.
  </Accordion>

  <Accordion title="Merge" icon="code-merge">
    **Merge** waits for all paths to arrive before continuing. Connect **at least two inputs**. In **Merge strategy**, choose how to combine:

    * **Concatenate** — joins the texts, one after the other.
    * **JSON array** — turns each result into an item in a list (useful when the next step is technical).
    * **First non-empty** — uses the first path that has content.
  </Accordion>

  <Accordion title="Sub-flow" icon="diagram-project">
    Choose another flow to run as a step in this one. Sub-flows support up to **5 levels** (a flow inside another, inside another...). If the same flow appears twice in the chain, the run is blocked.
  </Accordion>

  <Accordion title="Output" icon="flag-checkered">
    In **Format**, choose **Plain text** or **JSON**.
  </Accordion>
</AccordionGroup>

<Note>
  Agent and Tool nodes also show a **Failure rate (%)** / **Failure chance (%)** field. It's only for **testing** how the flow behaves when a step fails. Leave it at **0** for normal use.
</Note>

### 6. Validate and save

<Steps>
  <Step title="Click Validate">
    Symphony checks whether the flow is ready.

    * **Validation passed** — the flow can be saved and run.
    * **Validation issues** — a list of what to fix appears. Click an item to go straight to the node with the problem.
  </Step>

  <Step title="Click Save">
    Or use **Ctrl + S**.
  </Step>
</Steps>

The most common issues:

| Message | What to do |
| - | - |
| Add a start node for the flow to begin. | Drag a **Start** node onto the canvas. |
| Your flow has more than one start node. | Keep only one **Start** node. |
| Add an output node for the flow to end. | Drag an **Output** node and connect it at the end. |
| The flow is looping. | Remove the connection that goes back to an earlier node. |
| Select an agent in node "...". | Open the indicated node and choose the agent. |
| Connect at least two outputs / inputs in node "...". | **Parallel** and **Merge** nodes need at least two paths. |

### 7. Run the flow

<Steps>
  <Step title="Save the flow">
    The **Run** button only works when everything is saved.
  </Step>

  <Step title="Click Run" />

  <Step title="Provide the content, if asked">
    If the Start node has **Content input** enabled, choose:

    * **Text** — paste or type the content.
    * **File** — click or drag the file. Wait for processing: a **preview of the extracted content** appears.
  </Step>

  <Step title="Confirm">
    While it runs, each node shows its own status on the canvas.
  </Step>
</Steps>

| Status | Meaning |
| - | - |
| **Queued** | Waiting to start. |
| **Running** | In progress. |
| **Completed** | Finished successfully. |
| **Failed** | An error occurred in this step. |
| **Skipped** | Didn't run, because the flow took another path (for example, at a Condition). |
| **Canceled** | The run was stopped. |

While the flow is running, editing is locked. To stop it, click **Stop**. The node already in progress finishes before the run stops.

### 8. View the result

When it finishes, the side panel shows:

* **Final result** — what the flow delivered. Click **View full** to read everything and download the result as **.txt** or **.json**.
* **Selected node** — click any node to see the **Input received** and the **Output** of that step. This helps you find where a result came out differently than expected.

Click **Close run** to return to the editor.

### 9. Run history

The **Run history** button lists every time the flow ran, with status and time. Click a run to see the result and the details of each step.

When an **automatic** flow starts, finishes, or fails, you get a **notification** on the platform, with an **Open** button to see the result.

### 10. Manage flows

In each flow's menu, in the list:

| Action | What it does |
| - | - |
| **Edit** | Opens the editor. |
| **Clone** | Creates a copy of the flow that you can change freely. |
| **Share** | Makes the flow available to **groups** in your company, with one of these permissions: **Can run** (only runs the flow) or **Can edit** (also changes the flow). |
| **Delete** | Deletes the flow. |

### 11. Use a template

The **Templates** tab holds ready-made flows provided by your company. They're **read-only**: to adapt a template, use **Clone** and edit your copy.

<Info>
  Administrators can turn a flow into a template (**Make template**) or remove it from the list (**Remove from templates**). Templates are visible to everyone in the company.
</Info>

## Practical example: contract summary

<Steps>
  <Step title="Create the &#x22;Contract summary&#x22; flow" />

  <Step title="Drag a Start node and enable Content input" />

  <Step title="Drag an Agent node to summarize">
    Choose an agent and write in **Instructions**: *"Summarize this contract in up to 10 bullet points."*
  </Step>

  <Step title="Drag another Agent node for the risks">
    Write in **Instructions**: *"Based on the summary, list the three main risks for the company."*
  </Step>

  <Step title="Drag an Output node" />

  <Step title="Connect the nodes">
    **Start → Agent (summary) → Agent (risks) → Output**.
  </Step>

  <Step title="Click Validate, then Save" />

  <Step title="Click Run, choose File, and upload the contract" />

  <Step title="Read the Final result">
    Download the .txt if you want to keep it.
  </Step>
</Steps>

## Keyboard shortcuts

| Shortcut | Action |
| - | - |
| **Ctrl + Z** | Undo |
| **Ctrl + Y** | Redo |
| **Ctrl + S** | Save |
| **Delete** | Delete the selected item |
| **+** / **−** | Zoom in / out |

The **Help** button in the editor shows this summary at any time.

## Best practices

* **Start simple.** First build a flow with Start → Agent → Output, test it, and only then add steps.
* **One task per node.** Short, clear instructions for each agent work better than one agent doing everything.
* **Test with real content** before enabling **Automatic** mode.
* **Use the history** to understand failures: click the node that failed and check the input it received.
* **Give nodes clear names** (**Name** field), like "Summarize contract" or "Classify risk". This makes the flow and the history easier to read.
* **Keep usage in mind.** Each Agent node uses AI and counts toward your usage, just like a chat message. Automatic flows that run often consume continuously.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="The Run button is disabled. Why?">
    There are unsaved changes. Click **Save** and try again.
  </Accordion>

  <Accordion title="My automatic flow didn't run.">
    In the **Start** node, check that **Start mode** is set to **Automatic** and, for a **Weekly** schedule, that at least one day is selected. Also check that the flow has no validation issues.
  </Accordion>

  <Accordion title="Can I use any agent?">
    Yes, any agent you have permission to use, including the ones shared with you.
  </Accordion>

  <Accordion title="Can people I shared the flow with change it?">
    Only if you shared it with the **Can edit** permission. With **Can run**, the person can only run the flow.
  </Accordion>

  <Accordion title="I got a run limit message.">
    Each company can start up to **30 runs per minute**. Wait a few seconds and try again.
  </Accordion>

  <Accordion title="The flow stopped halfway.">
    Open the run in **History**, click the node with **Failed** status, and read the error message. If your AI usage limit has run out, Agent nodes fail too (see [Settings → Usage](/en/guia/configuracoes)).
  </Accordion>
</AccordionGroup>

## Known limitations

* The flow name must be between **3 and 60 characters** and can't repeat another flow's name.
* The flow needs **exactly one Start node** and **at least one Output node**, and can't have paths that go back (*loops*).
* Sub-flows support up to **5 levels**.
* Each company can start up to **30 runs per minute**.
* You can't edit a flow while it's running.
* Connections can't be edited: to change one, delete it and create another.
* Templates are read-only: to change one, clone it.
* Creating and using flows depends on the **Flows** permission, set by the administrator.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.