# End node

The **End** node terminates a workflow execution. Whatever is wired into an End node becomes the workflow's final result — returned to the caller, the webhook response, or the chat reply.

End nodes have one input handle and no outputs. You can place multiple End nodes in a single workflow — one per branch — and the runtime will return whichever one is reached first.

---

## What it returns

The End node passes through the upstream node's output:

- `last_output` becomes the workflow's `result.text`
- `last_output_parsed` (if present) becomes the workflow's `result.parsed`
- The full `outputs` map is also exposed for callers that need intermediate values

For webhook-triggered workflows, this becomes the HTTP response body. For chat-triggered workflows, it becomes the assistant message.

---

## Multiple End nodes

Branching workflows (after a Classify or If/Else) typically use one End per branch:

```
Webhook → Classify → ┬─ billing   → Agent → End
                     ├─ technical → Agent → End
                     └─ other     → Agent → End
```

Whichever branch the runtime takes, the matching End node fires and the workflow returns. The other branches are skipped.

---

## Tips

- **Always wire an End node to every terminal branch.** Branches that just dead-end still execute, but the caller may see an empty result.
- **Put a JSON-mode Agent right before End** if the caller expects structured data — the parsed object surfaces in the workflow result.

---

*Source: https://agentbuilder.systalink.sn/docs/node-end — human documentation.*
*Other language: [/docs-md/fr/node-end.md](/docs-md/fr/node-end.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
