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

# Text Template

> Write a prompt once and drop connected text into {{variables}}.

Text Template holds a block of text with `{{name}}` placeholders. Each placeholder becomes its own input on the node. When the workflow runs, the text connected to each input is dropped in where its placeholder sits, and the finished text goes to the next node.

A template with no placeholders is fixed text. It feeds the next node as it is and never appears as a field in your app, which makes it the right home for a long, carefully tuned prompt that people running the app shouldn't touch.

## When to use

* Put a product name inside a long image or video prompt, right where it belongs in the sentence
* Keep a fixed prompt out of the app form
* Build one prompt from several writer outputs, for example a character description and a scene description

Common pattern: `[text_prompt (product), text_prompt (offer)] → text_template → generate_image`.

## Writing a template

```text theme={null}
A handheld phone photo of a man on a Manhattan sidewalk holding a cardboard sign.
The sign reads '{{sign}}' in messy black marker, all caps.
```

This template has one input, `sign`. Connect a Text Prompt to it and your app asks only for the sign text. The rest of the prompt stays as written.

* Names use letters, numbers and underscores, and start with a letter: `{{product}}`, `{{offer_2}}`.
* Spaces inside the braces are ignored, so `{{ product }}` is the same as `{{product}}`.
* Use a name more than once and every copy gets the same text.
* If you connect a list (for example from Split Text), its items go in one per line.
* An input with nothing connected is filled with nothing. The node shows a warning so you notice before running.

## Inputs

<ParamField body="{{name}}" type="text">
  One input per placeholder in the template, named after it. Each takes text. Optional: an unconnected input is left empty.
</ParamField>

## Outputs

<ParamField body="Text" type="text">
  The template with every placeholder filled in.
</ParamField>

## Configuration

<ParamField body="template" type="string" required>
  The text, with `{{name}}` wherever connected text should go.
</ParamField>

## Building with the MCP or API

Each placeholder's input port id is `input_var_<name>`. For the template above, connect your text to `input_var_sign`:

```json theme={null}
{ "source": "sign_text", "sourcePort": "output_text", "target": "template", "targetPort": "input_var_sign" }
```

Ports are matched by name, so you can rewrite or reorder the template without breaking existing connections.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.