# Start Node and Variables — Dify Workflow Basics

Source: https://www.skillbyai.com/en/dify-workflows/b-start

> Define inputs; reference outputs downstream.

## Typed inputs, named outputs

A workflow begins at a **start node** where you declare **input variables** (text, paragraph, select, number, file) with names, types and whether they are required. Each later node produces **output variables**, and any downstream node can reference them by node and variable name. Clear names (`query`, `language`, `order_id`) make the graph readable. Dify also provides system variables (for example the user id or files) and, in chatflows, conversation variables that persist across turns. Dify's node names, menus and options change between versions; check the current Dify documentation.

## Start, LLM, end

Every workflow passes variables from a start node through processing nodes to an end node.

![Three ideas: variables, LLM prompts, outputs.](assets/figures/dify-workflows/section-2-map.svg) — Figure 2.1 — Variables, prompts and outputs.

## A start-node design

Typed and documented inputs.

```text
start node inputs
  query      paragraph  required   the customer's message
  language   select     required   English | Hindi | Marathi
  order_id   text       optional   from your app, not typed by the user

downstream references
  LLM prompt uses start.query and start.language
  HTTP node uses start.order_id
```

## Pass trusted IDs from your system

Supply identifiers like customer or order IDs from your backend when calling the API, not from text the user typed.

**Quiz:** Where are a workflow's input variables declared?

- [ ] In the end node
- [x] In the start node
- [ ] In the model provider settings
- [ ] In the browser console

*Answer:* In the start node. The start node defines what a run receives.
