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

# Flow Output Block for Workflow Results

> Use the Flow Output block to return workflow results, expose subflow outputs, and pass typed data back from Odella flows.

<Frame>
  <img src="https://mintcdn.com/odella/PGZ7enNCqh0mvwj_/block-reference/assets/output_light.png?fit=max&auto=format&n=PGZ7enNCqh0mvwj_&q=85&s=15219df53b8eecd7cb6d70ea838c5b16" alt="Output Block Screenshot" className="block dark:hidden" width="880" height="352" data-path="block-reference/assets/output_light.png" />

  <img src="https://mintcdn.com/odella/PGZ7enNCqh0mvwj_/block-reference/assets/output_dark.png?fit=max&auto=format&n=PGZ7enNCqh0mvwj_&q=85&s=be8f65b29313d8dba92e7480dde328e1" alt="Output Block Screenshot" className="hidden dark:block" width="908" height="384" data-path="block-reference/assets/output_dark.png" />
</Frame>

## Overview

Use the Flow Output block to define what a workflow returns when it finishes. Each Flow Output block creates one named output value, making it useful for returning generated text, extracted data, files, tables, confirmation results, or structured objects from a flow. When the flow is reused as a [Subflow](/block-reference/advanced/sub-graph), each Flow Output block becomes an output port on that subflow.

## Inputs

<ParamField path="value" type="any" required>
  The value to be outputted from the flow. The data type should match the type specified in the Editor Settings.
</ParamField>

## Outputs

<ResponseField name="valueOutput" type="any">
  The value that was passed into the block. The data type matches the type specified in the Editor Settings.
</ResponseField>

## Editor Settings

<ParamField path="id" type="string" default="output" required>
  The unique identifier for the output. This ID is used when referencing the output and defines the output port name when used as a subflow.
</ParamField>

<ParamField path="dataType" type="string" default="string">
  Specifies the expected data type for the output. The input value will be coerced to this type if necessary.
</ParamField>

## Examples

### Basic Output Definition

1. Create a Text Block with the value "Hello, world!"
2. Add a Flow Output Block and set the ID to "greeting" and Data Type to "String"
3. Connect the Text Block to the Flow Output Block's Value input
4. In another flow, use a Subflow Block referencing the first flow
5. Run the second flow to see the "greeting" output with the value "Hello, world!"

## Error Handling

The Flow Output Block will generate an error if the data type of the input value doesn't match the specified Data Type in the Editor Settings.

<Warning>
  Always ensure that the input value matches the specified Data Type to avoid runtime errors.
</Warning>

## FAQ

<AccordionGroup>
  <Accordion title="Can I have multiple Flow Output Blocks in a flow?">
    Yes, you can have multiple Flow Output Blocks in a flow. Each block represents an individual output of the flow. Ensure that each Flow Output Block has a unique ID.
  </Accordion>

  <Accordion title="What happens if the ID of a Flow Output Block is not unique?">
    If multiple Flow Output Blocks have the same ID, the flow's output will contain the value of the last processed block with that ID.
  </Accordion>

  <Accordion title="Can I use the Flow Output Block to output complex data types?">
    Yes, the Flow Output Block can output any data type, including arrays and objects. Make sure to set the appropriate Data Type in the Editor Settings.
  </Accordion>
</AccordionGroup>

## See Also

* [Input Block](/block-reference/io/graph-input)
* [Confirm Block](/block-reference/io/confirm)
* [Subflow Block](/block-reference/advanced/sub-graph)
* [Extract Data Block](/block-reference/ai/extract-data)
* [Data Types](/workflow/data-types)
