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.
A Batch card can also make its items during the run. Name a step under Make the items during the run from, and when the run reaches the card, every row of the list that step wrote — a JSON list in its answer, like a script's shot list — becomes one item, with the pictures of the item it came from. Put a Results card between that step and the batch. The Ad from one prompt template works this way: its script's shot list becomes the scenes.
📄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.
On a Claude step there is also Effort (Model default, low, medium, high, xhigh, max): how hard Claude thinks before it answers. Lower is cheaper and faster, which suits simple extraction or tagging; higher suits reasoning-heavy steps. Leave it on Model default unless you have a reason — Opus 5.5 then runs at high — and note that older Claude models (Haiku 4.5, Sonnet 4.5 and earlier) simply ignore it. If a Claude step fails because it was cut off at its output limit, raise Max tokens or lower Effort.
Opus 5 / 5.5 and Sonnet 5.5 steps also have If Claude declines, answer with a fallback model, on by default. Claude's safety checks occasionally decline harmless work; with this on, Anthropic re-runs a declined item on the model it recommends, so the item still gets an answer. The result shows an Answered by badge and the cost is booked at the rates of the models that actually ran. Turn it off if every answer must come from the model you picked.
Speed: Economy (Claude steps and Gemini text and image steps; not agents, not video) halves the price of a step. Its items go to Anthropic or Google as one batch. Claude answers usually arrive within the hour; Google can take longer — both within 24 hours. While they wait, items show Collecting for batch and then Waiting on Anthropic batch or Waiting on Google batch, and the run page has a Cancel batch button. If a batch runs out of time before an item ran, that item cost nothing: it goes into the next batch once, and if that also runs out it runs at the normal price so it still finishes. Answers carry an Economy · 50% badge. Pick Economy for big catalogue or QA runs nobody is waiting on; keep Standard when the next step or a person needs the answer now. While an item waits, its worst-case cost counts against your spend limits, so a tight daily limit lets fewer Economy items through at once.
🤖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 Nano Banana Pro (gemini-3-pro-image), Google's highest-quality image model: it composes from multiple reference images, keeps a product faithful to its photo and spells on-image text correctly, so a product photo plus a style reference plus a written scene gives you an on-brand shot. Runs once per item in parallel. Flows made before 15 October 2026 keep the model they were built with (Nano Banana 2.5, which Google is retiring) — open the step and pick Pro to upgrade it.
Cost is per image (about $0.134 for Pro at up to 2K on the standard tier — half that with Speed: Economy; Nano Banana 2.1 is about $0.034), 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 Gemini Omni Flash (audio included) on your Gemini key, from a prompt and optionally a product image — the same model the Gemini app uses (it replaced Veo 3.1, which Google is retiring). Clips are 3–10 seconds; say "single continuous shot, no scene cuts" if you want one shot, because Omni cuts between shots by default. Images can be given roles in the prompt: <FIRST_FRAME>, <LAST_FRAME>, <IMAGE_REF_0>.
For a product, keep the side shown in the photo facing the camera — a full turntable makes the model invent the sides it has never seen, and that is where products drift.
With a fal.ai pool the card uses fal's video models instead. The product-video templates use Seedance 2.5 at 1080p — the highest quality in our tests — with the clip's last frame pinned to the product photo, so the product can't turn to a side the photo never showed and the clip loops seamlessly. About $9.30 for eight seconds ($3.78 at 720p), 5–9 minutes a clip.
Read this before running a list: video costs cents per second — about $0.80 for eight seconds at 720p (1080p and 4K are upscaled and cost more) — 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.
▶Web-ready video
Turns a video into small, silent MP4s for landing pages — local ffmpeg, keyless, $0. Most pages embed a looping MP4 that plays like a GIF but is a fraction of the size and much sharper. You get three sizes — Quality (1080 wide), Balanced (720) and Lightweight (540), never enlarged beyond the original — plus a poster image (the first frame) to show while the video loads. The result lists each file's size. Set the aspect ratio to crop the clip (Veo delivers 16:9; 1:1 keeps the centred product). On the page, embed it with autoplay, muted, loop and playsinline so it behaves like a GIF.
🎙Voice-over
Speaks each item's line in one fixed voice through ElevenLabs (your own key), so the narrator sounds the same in every shot. By default the line comes from a line column. Besides the audio you get the line's exact length and the timing of every word — Edit video uses the length to time each shot to its line. Pick the voice by its Voice ID from your ElevenLabs library (save it to your own library: ElevenLabs retires its default voices on 31 Dec 2026). About $0.08 per 1,000 characters — a 60-second script is roughly 900 characters, so about $0.07.
♫Extract audio
Takes a video's sound track as an MP3 — local ffmpeg, keyless, $0. The usual use: the clips where your model speaks on camera, feeding Clone a voice. A clip with no sound fails with a clear message rather than handing on silence.
🗣Clone a voice
Makes a new voice in your ElevenLabs library from recordings of someone speaking (ElevenLabs' instant voice clone, on your own key). Put Extract audio before it; the step's instruction is the voice's name. It returns the new voice's ID, which then shows up in every Voice-over step's Voice list. Each run makes a NEW voice and your plan limits how many custom voices you can have, so keep it as an optional last step and run it once per model. Your ElevenLabs key needs Voices: Write (or no restrictions). Only clone a voice you have the right to use: an AI-generated presenter from your own ad, or someone who has agreed.
🎵Music bed
Composes an instrumental music bed from a description — mood, tempo, where it lifts. Put it after Results and it sizes itself to the edit (the shots' voice-over plus a little spare); Edit video then trims it, fades it and turns it down under the voice. ElevenLabs, about $0.15 a minute. Music made through the API may be used commercially on ElevenLabs' Starter plan and above.
🔊Sound effect
Makes a sound effect from a description — a whoosh for a transition, a velcro rip, a click. Set a length up to 30 seconds, or 0 to let ElevenLabs choose. About $0.12 a minute of sound.
✂Edit video
Cuts every finished item into one video — local ffmpeg, keyless, $0. Put it after Results. It takes each item's picture or clip in item order (the last step that made one, or the item's own upload), its voice-over line, and a music bed from a step after Results, and renders a finished video: stills get a slow camera move (push in, pan, pull out), clips are trimmed and cropped to the shape you choose (9:16, 4:5, 1:1 or 16:9), the music dips under the voice, the sound is levelled to −14 LUFS (what TikTok, Reels and YouTube expect), and captions are burned in — sized for phones, because most social video plays muted.
Each item can steer its shot with columns: duration (seconds), caption, caption_position (bottom, middle or top — middle keeps a caption off a product low in the frame, like an ankle brace in a seated shot), motion (push in, pull out, pan left or right, tilt up or down) and transition into it (cut, dissolve, dip to black or white, whip). The step's Instruction is the edit list: leave it empty for every item in order, or point it at an AI step that wrote one — {step.Edit plan.text} — to re-order, trim and re-use shots and add supers (big on-screen words, like a price). Anything the list gets wrong, such as a shot that doesn't exist, is skipped and noted in the result — never silently.
Draft renders a quick 720 preview: use it for an animatic — the whole ad, timed, from storyboard stills, before any video is paid for. Final renders 1080 for delivery and takes longer. The finished video appears under Whole-run results on the run page and in the Library as "Whole run".
▦Extract frames
Pulls evenly spaced stills from a video — 5 by default, first and last included — so a vision step can check them. Local ffmpeg, keyless, $0. It is the first half of a fidelity check: put a Claude step after it with use previous images on, and it sees the product photo first and the frames after it. Any later step can take the original clip back by setting Use images from step to the video step's name.
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.
✓Approve
Pauses each item until a person approves or rejects it — put it before the expensive steps so they only run on work someone wanted. Approved items continue; rejected items skip what comes after. Undecided items are handled automatically after a set time (default 72 hours, then reject, so silence never spends). See Approval steps.
🧩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.