The chain you do by hand, becomes one run
Twenty times you did it yourself: write the brief, generate the scene, animate it, add the voiceover, crop it for a different platform. A workflow is that same chain, saved once as a graph — run it again with a new brief, and every step happens the way you did it the first time.
- Seven kinds of step
- 31 named transforms
- Branching and fan-out
- Runs on your own inputs

What a step can be
Not a prompt describing what should happen — an actual step, of a specific type, with its own input and output.
A model call
Chat, structured output, tool use — the same call you would make on its own, wired in as one node that hands its answer to whatever comes next.
A generation call, any modality
An image, a video, a voiceover, a track, or a 3D model built from a mesh — the same generation call you make in the Studio, as a node with the last step’s output wired into its input.
One of 31 named transforms
Crop a clip, extract a frame, add a watermark, convert a document, unpack an archive, search the web — each a real step type of its own, not a prompt asking a model to do it.
Your own code, when you need it
A Node or Python snippet, run as one step against whatever the step before it produced — for the one transform that isn’t already named.
A call to something of yours
An HTTP request to your own endpoint, with the run’s data going out and its response coming back into the next step — the graph reaching outside the product when it needs to.
One step becomes many
A fan-out over a list — reruns a whole sequence of up to 20 steps per item, not just one; several branches at once; or a whole saved workflow, called by id and version, as a single step inside a bigger one.
A port can feed more than one step
Every step has an input port and an output port. clip's output goes to final, the next step in the chain — and, separately, into a foreach step that reruns a crop once per output format. That second edge is a branch: one output, two consumers, in the same graph.
- final takes two inputs on two ports: the video from clip, and a voiceover you attach as a declared input
- A foreach step does not run anything itself — it wraps a sequence of up to 20 steps and reruns that whole sequence once per item in a list
- Here the wrapped sequence is one step, video.crop, one of the 31 named transforms — run once per format
Change one step, not the whole run
A run's real output is not only the final file — it's every piece along the way, each with its own cost. Open scene, clip and final and see exactly what each one made and what it spent. If clip is the one you don't like, change that step and rerun it, and everything after it — the parts of the run that already worked stay exactly as they were.
- Each step's own output previewed inline — an image, a video, a document — not a link you click to find out what it made
- Credits and duration sit next to each step, not only as one total for the whole run
- Run this step and everything that depends on it: one step changed, not the graph rerun from the top

Prefer to start from something already built? Browse the template catalogue.
Frequently asked questions
What actually counts as a step?
Seven base kinds: a model call, a media or 3D generation call, an HTTP call, several branches at once, a fan-out over a list, and a whole saved workflow called as one step inside another. Alongside those, 31 named transforms — crop, transcode, extract text, search the web, run your own code, and more — each its own step type.
Can I run the same workflow with different inputs?
Yes — that is the point of saving one. The graph stays fixed; what you declared as inputs (a brief, a reference image, a voice file) takes a new value each time you run it.
What happens when one step fails?
Every step before the failure keeps its own output, inspectable on its own — the image or video it actually produced, not a stack trace you have to interpret.
Do I need to write code to build one?
No. Add a node, wire its input port to the step before it, run it — on the canvas. Code is one of the 31 named transforms, there for the one time you already have a snippet.
Can a workflow call another workflow?
Yes. A sub_pipeline step invokes a saved, published workflow by its id and a specific version, as a single step inside a bigger one.
What does a run cost?
The sum of what each step costs on its own — a model call, a generation call, a transform. The run view shows credits per step next to its duration, so a slow or expensive step is the one you see, not a guess.
Save the chain you keep repeating
Free trial credits, no card. Build the graph once on the canvas and run it again on the next brief.