> For the complete documentation index, see [llms.txt](https://docs.digibee.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digibee.com/documentation/connectors-and-triggers/connectors/tools/pipeline-executor.md).

# Pipeline Executor

The **Pipeline Executor** connector makes synchronous or asynchronous calls to other pipelines that are already deployed. Use the synchronous approach when you need the result of the called pipeline, or the asynchronous approach when you don't need to wait for it.

## **Parameters**

The table below lists all configuration parameters for the connector. Parameters that support [Double Braces expressions](/documentation/connectors-and-triggers/double-braces/overview.md) are marked with ✅ in the **Supports DB** column.

{% tabs %}
{% tab title="General" %}

<table><thead><tr><th width="111.79998779296875">Parameter</th><th width="230.800048828125">Description</th><th width="100">Type</th><th width="110.4000244140625">Supports DB</th><th width="150.19061279296875">Default</th></tr></thead><tbody><tr><td><strong>Operation</strong></td><td><code>SYNC</code> for synchronous calls to the pipeline and <code>ASYNC</code> for asynchronous calls to the pipeline.</td><td>Select</td><td>❌</td><td><code>SYNC</code></td></tr><tr><td><strong>Pipeline Name</strong></td><td>Name of the pipeline to be called.</td><td>String</td><td>✅</td><td>N/A</td></tr><tr><td><strong>Version Major</strong></td><td>Major Version of the pipeline to be called.</td><td>Integer</td><td>✅</td><td><code>1</code></td></tr><tr><td><strong>Payload</strong></td><td>Payload to be sent when the pipeline is called.</td><td>Any</td><td>✅</td><td><code>{{ message.body }}</code></td></tr><tr><td><strong>Timeout</strong></td><td>Maximum time allowed for the full round trip of a synchronous call, from the moment the message is published until the response returns to the calling pipeline (in milliseconds). This includes any time the message spends in queue, not just the called pipeline's execution time.</td><td>Integer</td><td>✅</td><td><code>20000</code></td></tr><tr><td><strong>Expiration</strong></td><td>Time that the message remains in the queue when trying to execute the pipeline (in milliseconds).</td><td>Integer</td><td>✅</td><td><code>30000</code></td></tr><tr><td><strong>Fail On Error</strong></td><td>If enabled, interrupts the pipeline execution when an error occurs. If disabled, execution continues, but the <code>"success"</code> property will be set to false.</td><td>Boolean</td><td>❌</td><td><code>false</code></td></tr></tbody></table>
{% endtab %}

{% tab title="Documentation" %}

<table><thead><tr><th width="111.79998779296875">Parameter</th><th width="230.79998779296875">Description</th><th width="100">Data type</th><th width="110.39990234375">Supports DB</th><th width="150.190673828125">Default value</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Optional field to describe the connector configuration and any relevant business rules.</td><td>String</td><td>❌</td><td>N/A</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## **Understanding timeout in Pipeline Executor**

### **How timeout is calculated**

In a synchronous call, the **Timeout** value doesn't just measure how long the called pipeline takes to run. It measures the whole round trip of the message:

1. The calling pipeline sends the message.
2. The message waits in the called pipeline's queue.
3. The called pipeline processes the message.
4. The response goes back to the calling pipeline's queue.
5. The calling pipeline gets the response and continues.

Queue time counts toward the timeout both ways. If there are messages ahead of yours in the queue, that wait time adds to the total, even if the pipeline runs fast once it starts.

{% hint style="info" %}
Even if the called pipeline responds in under a second, the calling pipeline can still time out if queue delays make the round trip longer than the configured **Timeout** value.
{% endhint %}

Set **Timeout** high enough to cover expected queue delays in the called pipeline, not just its typical run time.

### **Trigger timeout versus Pipeline Executor timeout**

A pipeline can be started in more than one way, and each way can have its own timeout:

* When a pipeline is started by an external call through its trigger, the timeout configured on the trigger applies.
* When a pipeline is started by another pipeline through **Pipeline Executor**, the trigger timeout is ignored. The **Timeout** configured on the **Pipeline Executor** connector applies instead.

For example, a pipeline can have a trigger timeout of 10 seconds for external API calls, while a **Pipeline Executor** timeout of 1 second applies when that same pipeline is called internally by another pipeline. The two values are independent, and only the timeout relevant to how the pipeline was started takes effect.

### **Recommended configuration to prevent timeout**

When deploying pipelines with **Pipeline Executor**, use the same concurrent execution configuration in the origin and destination pipelines, especially when the **Operation** parameter is set to SYNC. A concurrency mismatch between the two pipelines, or a destination pipeline that also receives a high volume of external traffic, is a common cause of enqueue and timeout errors, even when the destination pipeline executes successfully.

If you already hit this error in a running pipeline, read [Timeout in the Pipeline Executor connector](/documentation/troubleshooting/integration-issues/timeout-pipeline-executor.md) for the common causes and the fix.

## **Messages flow**

### **Input**

This connector doesn't expect a specific payload as input. The input is dynamically configured in the **Payload** field, according to the needs of the pipeline to be called.

### **Output**

```json
{
   "operation": "SYNC",
   "pipelineName": "pipeline-example",
   "versionMajor": 1,
   "success": true,
   "payload": {},
   "pipelineResponse": {}
}
```

* **`operation`**: the selected operation, SYNC or ASYNC.
* **`pipelineName`**: name of the called pipeline.
* **`versionMajor`**: major version of the called pipeline.
* **`success`**: if the call was successful.
* **`payload`**: payload used to call the configured pipeline.
* **`pipelineResponse`**: response of the executed pipeline. This property is returned only in the SYNC operation.

## **Pipeline Executor in action**

See below how the connector behaves in certain situations and how it is configured in each case.

### **Making an asynchronous call**

* **Operation:** `ASYNC`
* **Pipeline Name:** name of the pipeline to be called
* **Version Major:** `1`
* **Payload:** `{}`
* **Timeout:** `20000`
* **Expiration:** `30000`
* **Fail On Error:** `false`

In this scenario, an asynchronous call to the configured pipeline is made, and the current flow continues normally without waiting for the called pipeline's response. You can see the execution and call logs of this pipeline on the Platform logs screen.

**Output:**

```json
{
   "operation": "ASYNC",
   "pipelineName": "name of the pipeline to be called",
   "versionMajor": 1,
   "success": true,
   "payload": {}
}
```

### **Making a synchronous call**

* **Operation:** `SYNC`
* **Pipeline Name:** name of the pipeline to be called
* **Version Major:** `1`
* **Payload:** `{}`
* **Timeout:** `20000`
* **Expiration:** `30000`
* **Fail On Error:** `false`

**Output:**

```json
{
   "operation": "SYNC",
   "pipelineName": "name of the pipeline to be called",
   "versionMajor": 1,
   "success": true,
   "payload": {},
   "pipelineResponse": {}
}
```


---

# 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.digibee.com/documentation/connectors-and-triggers/connectors/tools/pipeline-executor.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.
