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

# Run blueprint

export const payload_0 = undefined

Starts another blueprint by key. Useful for breaking logic into smaller, reusable parts.

<img src="https://mintcdn.com/writer/KruNpIclsgQbhj82/images/agent-builder/blueprints/run-blueprint-block.png?fit=max&auto=format&n=KruNpIclsgQbhj82&q=85&s=8606940f7f4f2654f95539ab18d4f3bf" alt="" width="2192" height="1450" data-path="images/agent-builder/blueprints/run-blueprint-block.png" />

## Overview

The **Run blueprint** block allows you to call another blueprint from within your current workflow. This enables modular, reusable logic and lets you break complex workflows into smaller, manageable pieces.

You can specify the blueprint to run and pass input parameters. The output of the called blueprint is available for use in subsequent blocks.

## Common use cases

* Reusing logic across multiple workflows
* Breaking up large blueprints into smaller, maintainable components
* Creating shared utility blueprints
* Running conditional or dynamic workflows

## How it works

1. **Blueprint Key**: Select the blueprint to run by its key. The blueprint must have a key set in its settings. If the blueprint doesn't have a key, it does not show in the list of available blueprints.
2. **Payload**: Provide input data as text that will be available as `@{payload}` in the called blueprint. The payload is treated as plain text.

The block executes the specified blueprint and returns any output that the called blueprint returns with the **Return value** block.

<Tip>
  **No trigger required:** Blueprints called with the Run blueprint block don't need a UI trigger or any other trigger. They start execution immediately when called and can access the payload data you pass in.
</Tip>

## Examples

### Document processing workflow

This example demonstrates a document processing system that handles different file types using specialized blueprints.

**Blueprint Flow:**

1. **UI Trigger** → User uploads document through file input
2. **Classification** → Identifies document type (invoice, resume, or contract)
3. **Conditional routing** → Routes to appropriate processing blueprint
4. **Run blueprint** → Executes specialized document processor
5. **Set state** → Stores the processing result to display in the UI

**Block Configuration:**
For invoice processing:

* **Blueprint Key:** `invoice_processor`
* **Payload:** `@{file_data}`

**Called Blueprint Access:**
In the `invoice_processor` blueprint, you can access the passed data using `@{payload}`. Then you can return a value from the blueprint using the **Return value** block.

<img src="https://mintcdn.com/writer/KruNpIclsgQbhj82/images/agent-builder/blueprints/run-blueprint-workflow.png?fit=max&auto=format&n=KruNpIclsgQbhj82&q=85&s=c5cf052b37a9ca43ab55016e53a39dbe" alt="" width="2750" height="1430" data-path="images/agent-builder/blueprints/run-blueprint-workflow.png" />

## Fields

<table className="blueprintFields">
  <thead>
    <th>Name</th>
    <th>Type</th>
    <th>Control</th>
    <th>Default</th>
    <th>Description</th>
    <th>Options</th>
    <th>Validation</th>
  </thead>

  <tbody>
    <tr>
      <td>Blueprint Key</td>
      <td>Blueprint Key</td>
      <td>-</td>

      <td>
        <span>-</span>
      </td>

      <td>-</td>

      <td>
        <span>-</span>
      </td>

      <td>
        Format: writer#blueprintKey
      </td>
    </tr>

    <tr>
      <td>Payload</td>
      <td>Text</td>
      <td>Textarea</td>

      <td>
        <code>
          {"{}"}
        </code>
      </td>

      <td>The value specified will be available using the template syntax, e.g. @{payload_0}.</td>

      <td>
        <span>-</span>
      </td>

      <td>
        <span>-</span>
      </td>
    </tr>
  </tbody>
</table>

## End states

Below are the possible end states of the block call.

<table className="blueprintFields">
  <thead>
    <th>Name</th>
    <th>Field</th>
    <th>Type</th>
    <th>Description</th>
  </thead>

  <tbody>
    <tr>
      <td>Success</td>
      <td>-</td>
      <td>success</td>
      <td>The request was successful.</td>
    </tr>

    <tr>
      <td>Error</td>
      <td>-</td>
      <td>error</td>
      <td>The blueprint execution failed.</td>
    </tr>
  </tbody>
</table>

The output of the **Run blueprint** block is the return value from the called blueprint. This is typically the result of the last block in the called blueprint, or a specific return value if the called blueprint has a **Return value** block. You can access this output in subsequent blocks using `@{result}`.
