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

# User Input

> Exposes a value as a form field people fill in when running your published workflow, and as an input parameter in the API.

The User Input node is how the outside world feeds a value into your workflow.

When you publish a workflow, each User Input becomes a field people fill in before running it. It also becomes an entry in the `inputs` object when the workflow is called through the [API](/api-reference/overview).

On the canvas it starts empty, then adopts the look and type of whatever field you connect it to.

## Inputs

This node has no inbound handles — it is a source of values, not a consumer.

| Handle | Type | Required | Notes                                                                                   |
| ------ | ---- | -------- | --------------------------------------------------------------------------------------- |
| —      | —    | —        | No input handles. Values come from the published form or the API, not from other nodes. |

## Outputs

| Handle  | Type                                                                                                       | Notes                                                                                                                  |
| ------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `value` | adapts to the connected field (`text`, `image`, `video`, `audio`, `file`, `model`, `collection`, or `any`) | The single output. Its data type is derived from the field you bind it to; before you connect it, the handle is `any`. |

<Note>
  While unbound, the output handle is labeled **Value** and accepts a connection to any compatible field. Once bound, the handle takes on the label of the field it captured.
</Note>

## Settings

The panel changes depending on whether the node is bound:

* **Unbound** — shows a "Not connected" placeholder prompting you to connect the output to a field someone should fill in. There is nothing to configure yet.
* **Bound** — the node renders the *exact same control* as the field you connected to (a text box, file picker, model selector, slider, toggle, and so on), so you can set a default value right on the node.
* **Default value** — whatever you set in the bound control is used as the starting value people see in the published form. Callers can override it via the API.
* **Label** — the field's label drives the API key (see Notes / limits).

### Choose inputs

When you bind User Input to a select field, you can define a fixed list of choices for the runner.

For each choice, configure two values:

* **People see** — the text or image shown in the runner. Image choices also have a **Title** shown on the image card.
* **Workflow receives** — the text, image, video, audio, or file sent through the `value` output after the runner selects the choice.

The shown value and the sent value can be different. For example, the runner can select an image card while the workflow receives a text prompt. You can also let the runner select more than one choice.

The API uses each choice's stable ID. Changing the shown value or the sent value does not change that ID.

## Supplying a Batch list

Connect a User Input to a scalar [Batch](/workflow/nodes/batch) node's **User input** handle when the caller should supply a whole list instead of one value.

The User Input becomes a repeated list editor:

* Use **Add one more** or remove rows on the canvas and in the published Runner.
* The API receives the field as an ordered array.
* Each array entry becomes one Batch item and one downstream iteration.
* A list can contain up to **25 items**.

File batches work differently: each file row is a set with its own handle and a [Set / Explode control](/workflow/nodes/batch#set-vs-explode).

## When to use

Use a User Input whenever a value should be supplied at run time rather than hard-coded into the workflow — a prompt to type, a reference image to upload, a model to pick, or any setting you want the caller to control.

## Connects to

Connect the output to any field on a downstream node, for example:

* An [LLM / model node](/workflow/nodes/llm) prompt or parameter field
* A media or file field on a generation node
* Any node field that exposes a matching input handle

## Notes / limits

* **Binding adapts the type.** When you connect the output to a field, the node snapshots that field's shape and the `value` handle's data type becomes the field's type.
* **File fields narrow when possible.** Text fields produce `text`; file fields produce `file`, narrowing to `image`, `video`, or `audio` when the field only accepts that media.
* **Model and collection fields keep their semantic types.** Model selectors produce `model`; collection selectors produce `collection`.
* **Batch list inputs are arrays.** A User Input wired to Batch's whole-list handle renders repeated scalar controls and is capped at 25 items.
* **The snapshot drives the runner.** The captured field shape is the single source of truth for how the node renders in both the editor and the published runner.
* **Choose inputs can separate display and output.** The runner shows **People see**, but the workflow receives **Workflow receives**.
* **Connection compatibility still applies.** The output follows the standard rules: exact-type matches connect, `image`/`video`/`audio` can feed a `file` target, and `any` connects to anything except `tool-list`.
* **Label → API key.** The field's label is normalized into the input key used by the API. "Prompt" becomes `prompt`; "Reference Image" becomes `reference_image`. This is the key you set inside `inputs` when calling the workflow.

## Next steps

<CardGroup cols={2}>
  <Card title="Workflow overview" icon="diagram-project" href="/workflow/overview">
    How nodes, handles, and connections fit together on the canvas.
  </Card>

  <Card title="User Result node" icon="flag-checkered" href="/workflow/nodes/result">
    The other end of the published contract — how your workflow returns output.
  </Card>
</CardGroup>
