Inputs and outputs
Inputs let one workflow run for many cases, such as a report for any client. Outputs are what it hands back to a workflow that runs it.
An input is a value a workflow asks for when it starts, so the same workflow can run for different cases: a monthly report that takes the client and the month, or an onboarding workflow that takes the new hire's email. An output is a value a workflow hands back when it finishes, for the workflow that ran it.
Inputs are for workflows you run on demand. A workflow with a trigger or a schedule takes no inputs: its event, or its steps, provide everything it needs.
Declaring inputs
Each input has a name, a type, and whether every run must give it a value:
| Setting | What it means |
|---|---|
| Name | What steps call it, and what callers pass the value under, such as client |
| Type | text, number, boolean, list or object |
| Required | Whether every run must be given a value |
| Default | The value an optional input takes when a run leaves it out |
| Description | What the input is for, shown to whoever runs the workflow |
Steps read an input's value with an @ reference, like any other value.
Giving inputs a value
Whoever starts the run supplies the values:
- You, when you run the workflow in Lodol
- Your code, in the body of an API call:
{"inputs": {"client": "Acme", "month": "2026-05"}}. See Run a workflow. - Another workflow, in its Run a workflow step
- An AI agent, when the workflow is one of its tools: the agent fills in the inputs itself
Values are converted to each input's type where they can be: "21" becomes the number 21, "yes" becomes true, and "a, b" becomes a list. A value that can't be converted, a missing required input, or a name the workflow doesn't declare stops the run before it starts, with a message naming the input.
Outputs
A workflow can declare outputs: the values it hands back when it finishes. When another workflow runs it with a Run a workflow step, that step's result has one field per output, so later steps read them like any step's result. This is how you build a small workflow once, such as "look up a customer", and reuse it in many others.
Your code gets them the same way: a run started through the API has them in its outputs once it succeeds. See Get a run.