Windpaint
Commands

Product commands

Command reference for products list, get, estimate and run, and runs list, get and cancel.

A product is a ready-made multi-step workflow you run with one command: for example, an idea in, a still image, a 5-second clip and a cover frame out. See Products.

windpaint products get text-to-clip
windpaint products run text-to-clip -i idea="a paper boat drifting down a rainy street" -o ./clip/

products has the alias workflows.

products

windpaint products
windpaint products --category video

Lists products with their visible inputs and the credit estimate at default inputs. products list also works.

PRODUCT        NAME           CATEGORY  AVAILABLE  CREDITS  INPUTS
text-to-clip   Text to Clip   video     yes        4.08     aspect,idea
photo-to-clip  Photo to Clip  video     no         -        look,motion,photo
...
FlagDescription
--category <category>Only products in this category: image, video or audio.

text-to-clip is available today. Other products in the catalog show AVAILABLE no until the models they need are live; running them fails with exit code 8.

products get

windpaint products get text-to-clip

Shows a product’s input form, outputs, steps and estimate. Alias show.

Product      text-to-clip
Name         Text to Clip
Category     video
Description  Describe a moment; get a still, a 5 s clip and a cover frame.
Available    yes
Credits      4.08 (estimate at defaults)
Outputs      video, still, cover

Inputs (-i name=value):
INPUT   TYPE    REQUIRED  DEFAULT  OPTIONS    LABEL
aspect  choice  no        16:9     16:9|9:16  Aspect ratio
idea    text    yes       -        -          What should happen?

Steps:
STEP   CAPABILITY/OP        MODEL
still  image.generate       z-image-turbo
frame  image.resize         -
clip   video.generate       wan-2.2-i2v
cover  video.extract_frame  -

Read the Inputs table before running a product you haven’t used: it has the names to pass with -i, their types and the allowed options. Steps without a model are local operations and cost nothing.

products estimate

windpaint products estimate text-to-clip -i idea="a paper boat" -i aspect=9:16

Prices a run with these inputs without starting it.

Product    text-to-clip
Credits    4.08
Available  yes
FlagDescription
-i, --input <name=value>Product input. Repeatable.

Unlike windpaint estimate, this uploads local files given for media inputs. Uploads are free.

products run

windpaint products run text-to-clip -i idea="a paper boat drifting down a rainy street" -o ./clip/
windpaint products run text-to-clip -i idea="neon koi in a puddle" -i aspect=9:16 --no-wait

Starts a run, waits for it with step progress on stderr, and prints the run with its steps and outputs. With -o it downloads every output.

Started run 9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f (text-to-clip, estimate 4.08 credits)
run 9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f completed in 3m02s
Saved clip/cover.png
Saved clip/still.png
Saved clip/video.mp4
Run      9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f
Product  text-to-clip
Status   completed
Credits  4.08 charged

STEP   STATUS     CAPABILITY/OP        REQUEST                               ERROR
still  completed  image.generate       0b6e2f4a-91c3-4d8e-a5f7-3c2d1e0f9a8b  -
frame  completed  image.resize         -                                     -
clip   completed  video.generate       3c9a7e21-4f5b-4d6c-8e9a-1b2c3d4e5f60  -
cover  completed  video.extract_frame  -                                     -

OUTPUT  ASSET                                 TYPE       LOCATION
cover   5a6b7c8d-9e0f-4a1b-8c2d-3e4f5a6b7c8d  image/png  /Users/you/clip/cover.png
still   7d2c9e1a-5b3f-4a6d-8e0c-1f2a3b4c5d6e  image/png  /Users/you/clip/still.png
video   d41e8b0c-2a3f-4c5d-9e6f-7a8b9c0d1e2f  video/mp4  /Users/you/clip/video.mp4
FlagDescription
-i, --input <name=value>Product input. Repeatable.
-o, --output <dir>Download outputs into this directory. Always treated as a directory and created if missing.
--forceOverwrite existing files.
--no-waitReturn after starting the run.
--timeout <duration>How long to wait. Default 30m; 0 waits forever.

Input values

Each -i name=value is typed by the product’s input form:

Input typeValue
image, video, audioOne local file (uploaded for you), @path, an asset id or an asset URL the API returned. Same rules as run inputs, but one value only.
numberA number, e.g. -i strength=0.6
choiceOne of the listed options, e.g. -i aspect=9:16
textAny string. Quote it if it has spaces.

An input name the product doesn’t have fails with exit code 2 and lists the valid names. Omitted inputs take their defaults; a missing required input is rejected by the API with exit code 6.

Output files

Files are named after the product’s outputs, with the extension from the content type: text-to-clip with -o ./clip/ saves clip/video.mp4, clip/still.png and clip/cover.png. If one output has several files, they’re saved as <output>-1.<ext>, <output>-2.<ext>, … Existing files are never overwritten without --force.

How it ends

OutcomeExit code
Run completed0
Run failed or canceled9. The run, with each step’s error, is on stdout.
Still running after --timeout10. Continue with windpaint runs get <run-id> --wait.
Ctrl-C130. The run keeps going; stop it with windpaint runs cancel <run-id>.

Starting a run checks your balance against the estimate but doesn’t reserve it. Each step holds its own credits when it starts, so a run can fail partway if your balance runs out. Steps that completed are charged; the rest are not. There are no webhooks for product runs; wait with the CLI or poll.

runs

windpaint runs
windpaint runs --product text-to-clip -n 50

Lists product runs in the selected project, newest first. runs list also works.

RUN                                   PRODUCT       STATUS     CREDITS  CREATED
9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f  text-to-clip  completed  4.08     2026-10-04 14:20
FlagDescription
-n, --limit <n>Maximum rows, 1–200. Default 20.
--product <slug>Only runs of this product.

To see the individual generation jobs a run made, use windpaint requests --run <run-id>.

runs get

windpaint runs get 9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f
windpaint runs get 9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f --wait -o ./clip/

Shows a run with its steps and outputs. Run status is one of queued, running, completed, failed or canceled; each step is pending, running, completed, failed or canceled.

FlagDescription
-w, --waitWait until the run finishes, with the same exit codes as products run.
--timeout <duration>How long to wait. Default 30m; 0 waits forever.
-o, --output <dir>With --wait, download outputs into this directory. Ignored without --wait.
--forceOverwrite existing files.

runs cancel

windpaint runs cancel 9f8e7d6c-5b4a-4c3d-8e2f-1a0b9c8d7e6f

Cancels an unfinished run and its pending steps, and prints the run.

Next