---
title: "How do I run one workflow over a list of prompts or images with an iterator?"
description: "Run one workflow over a list of prompts or images: wire the list into a Text Iterator or Image Iterator, then its output into the next node."
updated: 2026-10-24
---

To run one workflow over a list, wire the list into a [Text Iterator node](/docs/nodes/iterator--text) for prompts or an [Image Iterator node](/docs/nodes/iterator--image) for images, then wire the iterator's output into the next node. The workflow fans out over the list inside one run: the run's `outputs` hold one entry per take, each with its `iteration` number ([Executions](/docs/api/executions)).

## What do the Image Iterator and Text Iterator nodes do?

The Text Iterator iterates over a list of text values, and the Image Iterator iterates over a list of images with timestamps, as their node pages describe them.

| Node | Node type | Inputs | Outputs |
| --- | --- | --- | --- |
| Text Iterator | `iterator:text` | **Array Input** (`ARRAY`) | **Text** (`TEXT`), **Options** (`ARRAY`) |
| Image Iterator | `iterator:image` | **Frames** (`IMAGE`), **Timed Chunks** (`ARRAY`) | **Image** (`IMAGE`), **Transcript** (`TEXT`), **Timestamp** (`NUMBER`) |

Neither node has settings or a price on its node page, and neither page marks an input as required. Wire **Text** or **Image** onward into the next node.

## How do I feed a list of prompts into one image or video node?

Wire the list into the Text Iterator's **Array Input** and its **Text** output into the **Prompt** input of the image or video node. The run's `outputs` then hold one entry per take.

The list has to reach **Array Input** as a list (`ARRAY`), not as one block of text. One source the docs show is an LLM step that writes the prompts as a JSON array, followed by a JSON Extract step that pulls the array out, as in the Compositor's [AI factory pattern](/docs/batch-image-generation). How to ask an LLM step for that list is covered in [write one prompt per scene](/docs/workflows/text-and-llm-nodes).

| Node | Wire its output into |
| --- | --- |
| The node that gives the list, such as a JSON Extract step | Text Iterator, **Array Input** |
| Text Iterator (output **Text**) | Your image or video node, **Prompt** |

## How do I run a set of images through the same edit?

Wire the images into the Image Iterator's **Frames** input, its **Image** output into the edit node's image input, and one prompt that describes the change into the edit node's **Prompt**.

With the [GPT Image 2.5 Flare Edit node](/docs/nodes/edit--openai_gpt_image_2_5_flare_edit):

| Node | Wire its output into |
| --- | --- |
| The node that holds your images | Image Iterator, **Frames** |
| Image Iterator (output **Image**) | GPT Image 2.5 Flare Edit, **Image 1** |
| Text Input, labelled "Change" | GPT Image 2.5 Flare Edit, **Prompt** |

Write the prompt so it fits every image in the set: name the change, then what must stay the same.

```text
Replace the background with a plain warm-grey studio wall.
Keep the product, its label, its shape and its colors exactly as they are.
```

The node's page advises repeating the list of what to keep in every edit prompt, and editing the clean source image rather than an earlier edit, because edits of edits add noise and drift. It is billed per image.

To sharpen or enlarge every image instead, wire **Image** into the **Image** input of the [Topaz Upscale node](/docs/nodes/process--topaz_upscale_image), which is billed per image.

The Image Iterator's node page doesn't say whether **Timed Chunks** must be filled. Run a short list of two or three images first, and check that each one came out, before you run the full set.

## How do I run it once per row from code?

Call `POST /api/v1/workflows/{id}/run` once per row, with that row's values in `inputs` and its own `Idempotency-Key`, and keep each `executionId` to poll. Each row is then a separate run, while an iterator fans out over the list inside one run. The Python loop, with `429` handling, is in [run a workflow over many rows](/docs/trigger-a-workflow-from-your-app), and in Claude Code the [ai-workflow-runner skill](/docs/skills/ai-workflow-runner) runs your workflow once per CSV row, at most 3 runs at a time.

## How many credits will a list run use?

The iterators show no price, but iterator fan-out multiplies real cost: a node's credit estimate is per single run of that node.

Work it out before a long list: multiply the number of items by the price of each paid node after the iterator, in that node's unit (per image, per run or per second). For example, 10 images through the GPT Image 2.5 Flare Edit node, at about 20 credits per image with **Number of Images** set to 1, come to about 200 credits.

The credit estimate covers one run of each node and can't see iterator fan-out, so multiply it by the number of items yourself, and keep enough credits for the whole list. Files that finished generating before a run stopped are still charged, so a list that stops halfway still costs what it made.

Last updated: 2026-10-24

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
