<!-- BusyBot node reference — https://busybot.net/tools/loop-end/ -->

> Node: Loop End (`loop_end`) · Action · v1
> Category: Core Nodes · Credentials: none
> Updated: 2026-08-16

# Loop End

> End of a loop body region

## Overview

Boundary sentinel for the Loop node's body region. Must be paired with a Loop node. All nodes between a Loop and its Loop End form the loop body and are run as a sub-workflow, once per iteration. The Loop End itself is a simple pass-through — it forwards all input items to its output unchanged.

**Category:** Core Nodes  
**Tool Name:** `loop_end`  
**Version:** 1

**Appearance:** Icon: `loopEnd` | Color: `#8b5cf6`

## Node Type

**Action** — processes input items and produces output

This node is not listed in the node panel — it is placed as part of another node's pattern.

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output` |

## Credentials

This tool does not require any credentials.

### Parameters

This node has no parameters to configure.

## Output Data

One output item per input item, passed through unchanged — the same JSON and the same binary data the last node of the loop body produced. The Loop node collects these items and applies its accumulation strategy to them, so what you connect into a Loop End is what comes out of the Loop's `Done` port.

## Usage Examples

- Place after the last node in a Loop body

## Example Configuration

Close a loop body:

```json
{ "type": "loop_end", "parameters": {} }
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

End boundary for a Loop body — place after the last node in your loop chain.

### Behavior notes

- **A Loop End belongs to exactly one Loop.** It is added with the Loop pattern rather than picked from the node panel, and it does nothing on its own.
- **It never transforms data.** Use it only to mark where the body ends; put any final shaping of the loop's results in a node before it, or after the Loop's `Done` port.