Veo Native CLI Passthrough

Drive Google's Veo through Flow and useapi.net without leaving vclaw — check batches, resume paused jobs, upscale clips to 4K, and turn videos into GIFs, all from one command surface.
What it does
- Bridges the
vclaw veo *subcommands to the Bun-basedvclaw-cli/flow.ts, which talks to Google Flow (via Puppeteer) and useapi.net. - Standard batch verbs:
status,list,history,resume,reset,cancel— inspect and steer Veo jobs that are already running. - UseAPI verbs: manage accounts, register CAPTCHA providers, check account health, generate and upscale images, upscale videos, and convert video to GIF.
- Keeps the underlying tool's colon-separated form (e.g.
useapi:accounts list) so existing scripts keep working. - The same Veo route also powers full pipeline runs via the native in-process transport (
native-veo.ts), which drivesflow.tsunder the hood when youproduce/executea project on theveo-useapiroute.
How to use it
All examples use node dist/cli/vclaw.js video ...; once the bin is on your PATH you can shorten this to vclaw .... The veo family lives directly under vclaw veo (not vclaw video).
node dist/cli/vclaw.js veo statusShows the status of the current Veo batch (pass a batchId to target a specific one).
node dist/cli/vclaw.js veo listLists every Veo batch the CLI knows about.
node dist/cli/vclaw.js veo history --limit 20Prints recent job history, capped to the last N entries.
node dist/cli/vclaw.js veo resumeResumes a paused batch (optionally pass a batchId).
node dist/cli/vclaw.js veo resetResets failed jobs back to pending so they can be retried.
node dist/cli/vclaw.js veo cancelCancels the current batch.
node dist/cli/vclaw.js veo useapi:accounts listLists your registered useapi.net accounts (use useapi:accounts add to register one).
node dist/cli/vclaw.js veo useapi:healthReports account health and history so you can confirm the route is live before spending credits.
node dist/cli/vclaw.js veo useapi:captcha --provider 2captcha --key <key>Registers a CAPTCHA-solving provider (or run useapi:captcha list to see what's configured).
node dist/cli/vclaw.js veo useapi:image --image-prompt "a neon-lit alley at dusk"Generates still images through useapi.net.
node dist/cli/vclaw.js veo useapi:image:upscale --media-id <id> --resolution 4kUpscales a generated image to 2k or 4k.
node dist/cli/vclaw.js veo useapi:upscale --media-id <id> --resolution 4kUpscales a generated video to 1080p or 4k.
node dist/cli/vclaw.js veo useapi:gif --media-id <id> --output-file ./out.gifConverts a video into a GIF — this one is free.
How it flows

Diagram source (live Mermaid)
Artifacts & outputs
- Generated videos land in the Veo CLI output directory (
vclaw-cli/output-videos/by default, overridable withVCLAW_VEO_OUTPUT_DIR). - The native transport writes per-job state to
<output-videos>/.vclaw-jobs/<externalJobId>.json(route, output dir, timestamps, output file list) so polling can resolve completed clips. - GIFs, upscaled images, and upscaled videos write to the path you pass (
--output-file) or the useapi-returned media. - When the Veo route is used inside a project pipeline, the resulting clips and the
execution-reportflow into the standardprojects/<slug>/artifacts/layout. See Execution.
Tips & gotchas
Bun is required
The bridge runs bun run flow.ts, so install Bun first: curl -fsSL https://bun.sh/install | bash. Point VCLAW_VEO_CLI_ROOT at your vclaw-cli directory if it isn't a sibling of the workspace, and override the binary with VCLAW_VEO_BUN_BIN if needed.
Stale Google Flow cookies cause timeouts
If a command times out or fails with a "session refresh failed" message, your Google Flow cookies have expired. Refresh them in the Veo CLI's cookie.json (setup guide: useapi.net setup-google-flow) and retry. The default per-command timeout is 180s (VCLAW_VEO_COMMAND_TIMEOUT_MS).
Keep the colon form
veo verbs use colon separators (useapi:accounts list, not useapi accounts list) to match the underlying Bun CLI. The legacy bun run vclaw-cli/flow.ts <verb> form still works in v3.0 but is deprecated — prefer vclaw veo *.
Driving it from an agent
These are thin passthrough commands: a non-zero exit means the underlying flow.ts call failed (commonly a session-refresh / cookie error, surfaced verbatim in stderr). Agents should treat any "session refresh failed" string as a cookie-refresh signal and not retry blindly. Run vclaw veo useapi:health as a cheap pre-flight before submitting paid work, and discover the canonical command list with vclaw schema --json. For full project runs on this route, see Providers and Execution.
