> For the complete documentation index, see [llms.txt](https://docs.uptiq.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.uptiq.ai/task-guides/create-a-flow.md).

# Create a flow

Every Flows task, from describing an automation to testing, publishing, and using it from an agent.

This guide is organized by task. Find what you want to do in the list below, then follow the steps.

A **flow** is an automation of connected tasks. A trigger starts it, and each task passes its results onward. Every flow is also a skill that an agent can use.

| Task                                            | Go to                                                            |
| ----------------------------------------------- | ---------------------------------------------------------------- |
| Create a flow by describing it in a chat prompt | [Create a flow from a prompt](#create-a-flow-from-a-chat-prompt) |
| Start from a ready-made template                | [Start from a template](#start-from-a-template)                  |
| Create a flow while building an agent           | [Create from an agent](#create-a-flow-from-an-agent)             |
| Change the flow by chatting                     | [Change the flow](#change-the-flow-by-chatting)                  |
| Rename the flow                                 | [Rename the flow](#rename-the-flow)                              |
| Choose what starts the flow                     | [Add a trigger](#add-a-trigger)                                  |
| Add a step to the flow                          | [Add a task](#add-a-task)                                        |
| Fill in a task's settings                       | [Configure a task](#configure-a-task)                            |
| Define what the flow takes in and returns       | [Flow I/O](#define-the-flow-inputs-and-outputs)                  |
| Store credentials and shared values             | [Variables](#add-secrets-and-global-variables)                   |
| Run the flow with test data                     | [Try Out](#test-the-flow)                                        |
| Answer an approval request during a run         | [Approve a run](#respond-to-an-approval-request)                 |
| Make the flow available                         | [Publish](#publish-the-flow)                                     |
| Go back to the published version                | [Version History](#review-versions-or-undo-draft-changes)        |
| See past runs                                   | [Execution History](#see-past-runs)                              |
| Let an agent use the flow                       | [Use with an agent](#let-an-agent-use-the-flow)                  |
| Find one of my flows                            | [Find a flow](#find-one-of-my-flows)                             |
| Open a flow to keep working on it               | [Edit a flow](#open-a-flow-to-keep-working-on-it)                |

{% hint style="info" %}
**Flows are in preview.** The experience may change. Flows are project-scoped: a flow is available only in its project.
{% endhint %}

***

## <i class="fa-diagram-project">:diagram-project:</i> Start a new flow

### Create a flow from a chat prompt

{% stepper %}
{% step %}

#### Open Flows

In **Console**, select a project, then select **Flows**. **Create New Flow** reads *Describe the automation. I'll build the flow to run it.*
{% endstep %}

{% step %}

#### Describe the automation

In **Describe the flow you want to build…**, enter what the flow receives, what it should do, and what it returns.
{% endstep %}

{% step %}

#### Send the prompt

Select the send arrow. Qore creates a draft and opens it in the builder. The chat summarizes the flow's name, tasks, input, output, and trigger.
{% endstep %}

{% step %}

#### Refine the draft

Continue the conversation to request changes, or edit the flow directly. Open **Agent Reasoning** for the design rationale.
{% endstep %}
{% endstepper %}

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-025510f7e6e6c82b8ab61d9e2ed634355e84b205%2Fqore_flows_how-to-flows-home_rounded_shadow.png?alt=media" alt="The Flows page: Create New Flow with a prompt box reading Describe the flow you want to build, template chips such as Fraud Investigation, Loan Approval Flow and KYC Verification Flow, and a My Flows list with Search flows and list and grid icons"><figcaption><p>Create New Flow.</p></figcaption></figure>

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-e7546e2eb6a6c382b5c5fd30828d7f670481cbc6%2Fqore_flows_builder-chat-and-canvas_rounded_shadow.png?alt=media" alt="A drafted flow: the chat on the left with Agent Reasoning and a flow summary of name, nodes, inputs, output and trigger; the canvas on the right with a Start manually trigger, Test Workflow and Flow I/O buttons, and two Prompt tasks, one showing a red warning icon"><figcaption><p>A drafted flow, with the chat summary and the canvas.</p></figcaption></figure>

### Start from a template

Template chips sit below the prompt box, such as **Fraud Investigation**, **Loan Approval Flow**, and **KYC Verification Flow**. Use the **‹** and **›** arrows to scroll through them. Select one to start from its description, then tailor the draft.

### Create a flow from an agent

{% stepper %}
{% step %}

#### Open the Flows tab

In an agent's **Add Skill to Agent** dialog, select the **Flows** tab. With no flows yet, it reads *No skills found*.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-ce658f0a0b3370bb1c23954049cd375bc8b2dbeb%2Fqore_flows_how-to-add-skill-flows-tab_rounded_shadow.png?alt=media" alt="The Add Skill to Agent dialog on the Flows tab, reading No skills found, with a Create Flow button"><figcaption><p>The Flows tab in Add Skill to Agent.</p></figcaption></figure>
{% endstep %}

{% step %}

#### Select Create Flow

Select **+ Create Flow**. **Create New Flow** opens: *Create a reusable flow as a Skill to extend your AI…*
{% endstep %}

{% step %}

#### Name and describe the flow

Enter a **Flow Name** and a **Description**. Both are required.

To set the flow's image, select **Upload**, then **Click to upload or drag and drop** and choose an image up to 2 MB, and select **Upload Avatar**. **Remove** clears it.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-a2bd4e17539704b90986c028c7c2f74cf76c4a24%2Fqore_flows_how-to-create-new-flow-dialog_rounded_shadow.png?alt=media" alt="The Create New Flow dialog: an avatar with Upload and Remove buttons, required Flow Name and Description fields, and Cancel and Save buttons"><figcaption><p>Create New Flow.</p></figcaption></figure>
{% endstep %}

{% step %}

#### Save

Select **Save**. The flow opens in the builder with an empty canvas, and the chat reads *Workflow "‹name›" created. How can I help to build your workflow?* The flow also appears in **My Flows**.
{% endstep %}
{% endstepper %}

***

## <i class="fa-pen-ruler">:pen-ruler:</i> Work in the builder

The chat is on the left, and the canvas is on the right.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-857bb5a4422b26b8386c42201647f02e3640fd3b%2Fqore_flows_how-to-builder-empty_rounded_shadow.png?alt=media" alt="The flow builder: All changes saved in cloud, the Editor and Try Out tabs, Flow I/O and Publish, a rail of icons on the left, Start of Flow with an Add Trigger button in the canvas, and zoom controls at the bottom"><figcaption><p>A new flow in the builder.</p></figcaption></figure>

| Item                         | What it does                                                                                                |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------- |
| *All changes saved in cloud* | Shows that your changes are saved.                                                                          |
| **Editor**, **Try Out**      | Switch between building the flow and testing it.                                                            |
| **Flow I/O**                 | Opens the flow's input and output schemas.                                                                  |
| **Publish**                  | Publishes the draft.                                                                                        |
| Rail icons                   | From the top: the flow canvas, **Variables**, **Version History**, **Execution History**, and help (**?**). |
| Zoom controls                | **−**, the zoom level such as **100%**, **+**, a lock icon, and **•••**.                                    |

The chat header holds the flow name and three icons: chat history, new chat, and the panel toggle.

### Change the flow by chatting

Type the change in **Type here…** in the chat, and send it. Qore updates the draft on the canvas.

### Rename the flow

Select the flow name at the top of the chat, then **Rename Flow**. The same menu has **Back**.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-2c430c4d686614046fde0ac33366bed8d0a7ebf1%2Fqore_flows_how-to-flow-name-menu_rounded_shadow.png?alt=media" alt="The flow name menu open, with Back and Rename Flow"><figcaption><p>The flow name menu.</p></figcaption></figure>

### Add a trigger

A new flow's canvas shows **Start of Flow**: *Start by adding a trigger to define how your flow begins.* Select **+ Add Trigger**, then choose one:

* **Start manually** — Launch the flow by clicking a button. Ideal for quick tests and simple setups.
* **Start through Agent** — The flow begins automatically when your AI Agent performs or detects an action.
* **Start via trigger** — Launch the flow when an external event occurs, such as a Slack message. This option is still in development.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-d1d9e47399ccaf0438dd5ca0f9c500bc092df45e%2Fqore_flows_how-to-add-trigger-menu_rounded_shadow.png?alt=media" alt="The Add Trigger menu: A trigger is what starts your workflow, with Start manually, Start through Agent and Start via trigger, each with a description"><figcaption><p>The trigger options.</p></figcaption></figure>

To change the trigger in a drafted flow, select it on the canvas.

{% hint style="info" %}
A flow trigger starts a flow. An agent's own triggers are set in the agent. See [Triggers](/console/agent-builder/build/triggers.md).
{% endhint %}

### Add a task

Select **Select Task**, or the **+** after a task. Search by task name, then select the task.

| Task              | Purpose                                                    |
| ----------------- | ---------------------------------------------------------- |
| **Agent**         | Runs an agent as a flow step.                              |
| **Prompt**        | Sends a prompt to an AI model.                             |
| **Dataset**       | Reads from or writes to a dataset.                         |
| **Pass Through**  | Passes data to the next task.                              |
| **Sticky Note**   | Documents the flow in the canvas.                          |
| **User Approval** | Waits for a user's approval before continuing. In preview. |
| **Knowledge**     | Pushes data to a knowledge store. In preview.              |

### Configure a task

Select the task on the canvas to open its settings. Required settings have an asterisk. A red warning icon on a task means a required setting is missing.

Open **Advance** to assign task inputs from global variables, and to map output fields to output variables.

For each task's settings, see [Build a flow › Task settings](/console/flows/build-a-flow.md#task-settings).

### Define the flow inputs and outputs

{% stepper %}
{% step %}

#### Open Flow I/O

Select **Flow I/O**. It configures the request parameters and the expected response format.
{% endstep %}

{% step %}

#### Choose a schema

Select **Input Schema** for the values the flow receives, or **Output Schema** for the values it returns.
{% endstep %}

{% step %}

#### Add fields

In **Basic**, select **+ Add** and set the **Key**, **Type**, **Description**, and **Required**. To edit the schema as JSON Schema instead, select **Advanced**.
{% endstep %}

{% step %}

#### Save

Select **Save**.
{% endstep %}
{% endstepper %}

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-dc30638f52954103e064b08d779de3e7f171ee4d%2Fqore_flows_how-to-flow-io-input_rounded_shadow.png?alt=media" alt="The Flow I/O dialog on the Input Schema tab, with Basic and Advanced modes, a Key, Type, Description and Required table with an Add button, and Save"><figcaption><p>Flow I/O.</p></figcaption></figure>

The types are **Text**, **Number**, **Boolean**, **Object**, **Array**, and **Dropdown**. Input fields also appear on the **Global Variables** tab as read-only entries.

### Add secrets and global variables

Select **Variables** on the rail.

* **Secrets** — API keys, tokens, and other credentials. Select **Add Secret**, enter a **Name** and **Value**, choose **String** or **JSON**, select **Secured** if needed, then **Save**. Reference it as `$secret.{variable_name}`.
* **Global Variables** — values shared across tasks. Select **Add Variable**, enter a **Key**, choose a type, add a description, select **Required** if the flow can't run without it, then **Save**. Reference it as `$global.{variable_name}`.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-d48bfe65404178a89e6a5f93cafb91d540af56e6%2Fqore_flows_how-to-rail-variables_rounded_shadow.png?alt=media" alt="The flow builder rail with the Variables icon highlighted and its tooltip"><figcaption><p>Variables, on the rail.</p></figcaption></figure>

{% hint style="warning" %}
Store credentials as secrets, and reference them in task settings. Don't enter credentials directly in a task.
{% endhint %}

***

## <i class="fa-flask-vial">:flask-vial:</i> Test and publish

### Test the flow

{% stepper %}
{% step %}

#### Open Try Out

Switch from **Editor** to **Try Out**. The **Input** panel and the **Execution Log** open below the canvas.
{% endstep %}

{% step %}

#### Enter the input

Enter a value for every input field. Choose how:

* **JSON Grid** — select **+ Add Entry**, enter a **Key** and **Value**, then select **✓**. Select **✕** to discard the entry.
* **Raw** — type the input as JSON.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-0035b30d888cf06852646af3c70598ea10f5dbcd%2Fqore_flows_how-to-try-out-add-entry_rounded_shadow.png?alt=media" alt="The Input panel in JSON Grid mode, with Key and Value fields, confirm and discard buttons, and Run and Cancel"><figcaption><p>Adding an input entry in JSON Grid.</p></figcaption></figure>
{% endstep %}

{% step %}

#### Run

Select **Run**. The **Execution Log** records each task and its result. Before the first run, it reads *No execution logs available*.
{% endstep %}
{% endstepper %}

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-981917f380cd334de811cc609d2caa466b224995%2Fqore_flows_how-to-try-out_rounded_shadow.png?alt=media" alt="Try Out: the Input panel in Raw mode showing an empty JSON object with Run and Cancel, and the Execution Log reading No execution logs available, with expand and close icons"><figcaption><p>Try Out.</p></figcaption></figure>

### Respond to an approval request

A **User Approval** task pauses the run. Enter the requested `answer`, such as `approve`, then select **Continue**. Select **Cancel** to stop the run.

### Publish the flow

Select **Publish**. Changes stay in a draft until you publish. Publishing makes the draft the current published version.

{% hint style="info" %}
Before publishing, complete every required task setting and check the Execution Log for the results you expect.
{% endhint %}

### Review versions or undo draft changes

Select **Version History** on the rail. It lists the draft, the current published version, and earlier saved versions. To discard the draft and restore the published version, select **Revert Draft Changes**.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-6d5013d7f89eafe6cd9ff27c36489e6dab28d526%2Fqore_flows_how-to-rail-version-history_rounded_shadow.png?alt=media" alt="The flow builder rail with the Version History icon highlighted and its tooltip"><figcaption><p>Version History, on the rail.</p></figcaption></figure>

### See past runs

Select **Execution History** on the rail. It lists every run by date, time, and status. Select a run to see what each task did.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-4431ac9cb43720f9b001457b0fd3c05c64030308%2Fqore_flows_how-to-rail-execution-history_rounded_shadow.png?alt=media" alt="The flow builder rail with the Execution History icon highlighted and its tooltip"><figcaption><p>Execution History, on the rail.</p></figcaption></figure>

***

## <i class="fa-robot">:robot:</i> Use a flow with an agent

### Let an agent use the flow

Every flow is a skill with the flow's name and description. Choose one:

* **Add the flow as a skill** — in the agent's **Add Skill to Agent** dialog, select the flow on the **Flows** tab. See [Create an agent › Add a flow as a skill](/task-guides/create-an-agent.md#add-a-flow-as-a-skill).
* **Let the agent start the flow** — give the flow the **Start through Agent** trigger.

Your role decides what you can do with flows. Every role can view or trigger a flow. Building, publishing, and managing versions need the Developer, Account Admin, or Organisation Admin role. See [Use flows with agents › Permissions](/console/flows/use-flows-with-agents.md#permissions).

***

## <i class="fa-folder-gear">:folder-gear:</i> Manage your flows

**My Flows**, below the prompt on Create New Flow, lists your flows, including flows created from an agent. Each row shows the flow's name, description, and when it was last updated.

### Find one of my flows

* Type part of the name in **Search flows…**.
* Use the list and grid icons to switch how the flows are laid out.

### Open a flow to keep working on it

Select **•••** on the flow's row, then **Edit**.

<figure><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-4fc72c87de4082e9f73cbf69dea2cedafa3464ce%2Fqore_flows_how-to-my-flows-menu_rounded_shadow.png?alt=media" alt="My Flows with the ••• menu open on a flow, showing Edit"><figcaption><p>The flow's ••• menu.</p></figcaption></figure>

***

## <i class="fa-triangle-exclamation">:triangle-exclamation:</i> Common issues

* **A task shows a red warning icon.** A required setting is empty. Select the task, fill it in, and test again before publishing.
* **The flow pauses during a test.** It may be waiting at a **User Approval** task. Enter the requested `answer`, then select **Continue**.
* **A test result isn't what I expected.** Open the **Execution Log**, check the input values and the task settings, then run the test again.
* **My changes aren't live.** Changes stay in a draft until you select **Publish**.
* **I need to undo draft changes.** Open **Version History** and select **Revert Draft Changes**.

***

## <i class="fa-link">:link:</i> Related pages

* [Flows](/console/flows.md), [Build a flow](/console/flows/build-a-flow.md), and [Flow inputs, outputs, and variables](/console/flows/flow-inputs-outputs-and-variables.md)
* [Test and publish flows](/console/flows/test-and-publish-flows.md) and [Use flows with agents](/console/flows/use-flows-with-agents.md)
* Use the flow from an agent: [Create an agent](/task-guides/create-an-agent.md)

***

{% columns %}
{% column width="83.33333333333334%" %}

<p align="right"><em>Maintained by</em> <mark style="color:green;">Abhishek Paul</mark><br><code>AI-assisted, human-approved</code></p>
{% endcolumn %}

{% column width="16.666666666666664%" %}

<div align="left"><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-d034645b4f8f8ee661985f5306b60ded3289653c%2Fmaintainer-abhishek-paul.png?alt=media" alt="" width="60"></div>
{% endcolumn %}
{% endcolumns %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.uptiq.ai/task-guides/create-a-flow.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
