Card reference: all 17 cards
Every card in the palette — what it does, when to reach for it, and the limit or cost worth knowing before you put it in a flow of two hundred items.
The palette holds seventeen cards in six groups. Everything FlowArray can do is a combination of these — there are no hidden special cases, which is why a template is just an ordinary flow you can take apart.
Triggers
▶Start
Runs the flow when you press Run. Every flow has one. No settings, no cost.
◷Scheduled start
Behaves exactly like Start today. Running a flow on a timetable is set up on the saved flow (the clock icon on its card, or Schedule in the Builder) rather than on this card — see schedules. Reach for plain Start unless you have a reason not to.
Input
⧉Batch of items
Declares the list a run works through, and the columns each item carries. A column is text, one image, or several images (image[]), and images can be marked as the product subject or a style reference so image models know how to use them.
This is the card that makes a flow bulk work rather than a single prompt. Fill it by typing rows, by uploading a sheet, or by having a trigger post the rows in. Every column becomes available to later steps as {item.<column>} — see referring to data.
📄Brand guide / notes
Holds reusable text — brand rules, a tone-of-voice note, a house format — that later steps pull in with {step.<label>.text}. Keyless, local, $0, and identical on every item, so write the rules once and every step obeys the same ones.
✎Prompt
A text block that resolves your placeholders and passes the result on, without calling a model. Useful for assembling an instruction from item columns and earlier outputs when you want that composition visible on the canvas instead of buried in a step's instruction. Keyless, $0.
Model
◆AI model
The general text step: analysis, copy, classification, chat-style reasoning. Pick a pool and a model — Claude, Gemini, or anything reachable through OpenRouter — and write an instruction with placeholders in it. Runs once per item, in parallel. Cost is per token, and the estimate is booked per item; see what runs cost.
Two options worth knowing: Reuse output (pinning) serves a cached result when the same step runs on the same input again, and retry settings control what happens on a transient provider error.
🤖Agent
A model that decides for itself which of your connected tools to call, in a bounded loop, before answering. You tick the tools it is allowed to use — nothing outside that allowlist is ever available to it.
The guardrails are the point: read-only by default (a tool that can change things needs a second explicit "allow changes" tick), a cap on tool calls per item (default 5) and turns (default 4), and a tool that reports an error is never blindly retried. The agent must run on a Claude (Anthropic) pool. After a run, Steps shows the full transcript — which tools it called, with what arguments, and what came back. See agents with tools.
Use Call a tool instead when you want one specific tool called every time; use an Agent when the right sequence depends on the item.
Media
✦Generate images
Creates images with AI — the workhorse of the flagship batch. Defaults to Gemini's gemini-2.5-flash-image, which composes from multiple reference images, so a product photo plus a style reference plus a written scene gives you an on-brand shot. Runs once per item in parallel.
Cost is per image (about $0.039 at up to 1024×1024 on the standard tier), so a hundred-item batch is real money — check the Data tab first. Image generation is stochastic: the same prompt twice gives two different images, which is why Reuse output is opt-in rather than automatic.
🧹Clean up image
Removes a background or upscales, through fal.ai. Deterministic for a given input, which makes it the best candidate in the palette for Reuse output — pin it and you never pay twice for cleaning the same photo. The usual prep step ahead of generation or a listing.
🎬Generate video
Creates video with Veo 3.1 (audio included) on your Gemini key, from a prompt and optionally a product image.
Read this before running a list: video is dollars per clip, not cents — roughly $3.20 for eight seconds — and a clip takes minutes, not seconds. So the card is deliberately set up to never double-bill: a long timeout (10 minutes) and retries off, because retrying a paid generation that may already have succeeded is how you get charged twice. If a worker restarts mid-generation, FlowArray re-polls the job it already paid for rather than submitting a new one. Start with one item.
🔁Video to GIF
Loops a video into a GIF with ffmpeg — local, keyless, $0. Mirror or straight loop, with a lossy setting to keep file size down. Handy for turning a Veo clip into something you can drop into an email or a listing.
Data
🔌Call a tool
Runs one specific tool on a connected MCP server, once per item, in parallel — look up a product, query metrics, fetch a record. The tool's inputs accept the same placeholders as an AI step, so each item calls it with its own values, and the result feeds the next step.
Retries default to off: a tool may have side effects, and FlowArray will not repeat something that might have changed data on the other side. Turn retries on only for tools you know are safe to repeat. A tool that reports an error is treated as a genuine failure, not a transient one.
⑂Decide
Sends each item down a path by a condition — if the QA score is under 70, revise; otherwise publish. Conditions are set in plain terms (contains, equals, ≥, <, is empty), the first matching route wins, and there is always an otherwise route, so no item is ever stranded. See Decide and Repeat.
↻Repeat
Redoes earlier steps for an item until a condition passes — bounded to at most 5 tries (default 3). After the last attempt the item continues with its best attempt and is flagged Needs review, so a loop around a paid step can never quietly spend forever. The Ad + QA loop template is this card in action.
🧩Run workflow
Runs one of your saved workflows as a single step inside another — build "clean and QA an image" once and call it from every campaign. It runs once per item in the same run, so you get one monitor and one cost total, with the child's steps shown inline.
Guardrails: nesting is capped at 5 deep, a flow cannot call itself, and the child is resolved when the run starts (so fixing the child fixes every parent's next run). See Run workflow.
Output
▦Gallery
Collects every item's result for review: text as formatted text, images as a grid with a full-size viewer. Keep the good ones and Regenerate unapproved re-runs only the rest, with the cost shown before you confirm. Kept items are never re-paid for. Download one or download all. $0 — it is a view, not a call.
➦Send to a URL
POSTs each item's result to a webhook as JSON — the text, absolute links to any generated images or videos, and any custom fields you add. Point it at a Slack, Discord or Teams incoming hook, at Zapier / Make / n8n, or at your own backend. Keyless and $0.
Because the URL usually contains a secret, it is masked as you type and stripped from exported workflow files. Only public addresses are accepted — internal and loopback addresses are refused, and redirects are not followed. Retries are off by default (a delivered POST may already have had an effect). For the full Slack/Drive/Gmail APIs — posting a file, uploading to a folder — connect an MCP server and use Call a tool instead. See Send to a URL.