--data <file> flag runs a journey multiple times in parallel, once for each row (CSV) or object (JSON array) in your data file. Each row provides a distinct set of run inputs. This is the CLI equivalent of data-driven parallel runs — useful for load-shaped testing, multi-user scenarios, or validating a journey across a set of known inputs.
When to use it
- Testing a journey across multiple users, accounts, or input combinations in one command.
- Running a data-driven regression suite — e.g., verifying every record in a test dataset passes.
- Simulating parallel load against an API workflow with varied inputs.
- Any scenario where you’d otherwise loop
reqflo runmanually across a set of values.
Key concepts
Each row is one run. The CLI spawns one journey execution per row/object. Runs execute in parallel up to the runner’s concurrency limit. Each run receives the values from its row as run inputs. Column names map to run input keys. For CSV files, each column header maps to a run input key by name. For JSON files, each object’s keys map to run input keys. Column/key names must match the journey’s declared run input names. Composable with other flags. You can combine--data with --env, --case, and --set. Shared values (environment, case) apply to all rows; --set overrides apply to all rows too. Row-level values are merged with the shared context, with row values taking precedence for matching keys.
Local and cloud. --data works with both local and cloud runs. For large data files, --cloud is recommended so parallel runs don’t compete for local resources.
How it works
- The CLI reads the data file and parses each row/object.
- One journey run is created per row, with the row’s values loaded as run inputs.
- Shared values from
--env,--case, and--setare merged in (row values win on conflicts). - Runs execute in parallel.
- Results are aggregated and reported — each run’s result is identified by its row index or a key column if one is designated.
Examples
Run with a CSV file:All values in CSV files are strings. Make sure the journey’s value handling is compatible with string inputs, or that any necessary coercion is handled in the journey’s step configuration.

