Skip to content

Veo Native CLI Passthrough

Clawbot, the videoclaw mascot, illustrating veo cli

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-based vclaw-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 drives flow.ts under the hood when you produce/execute a project on the veo-useapi route.

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).

bash
node dist/cli/vclaw.js veo status

Shows the status of the current Veo batch (pass a batchId to target a specific one).

bash
node dist/cli/vclaw.js veo list

Lists every Veo batch the CLI knows about.

bash
node dist/cli/vclaw.js veo history --limit 20

Prints recent job history, capped to the last N entries.

bash
node dist/cli/vclaw.js veo resume

Resumes a paused batch (optionally pass a batchId).

bash
node dist/cli/vclaw.js veo reset

Resets failed jobs back to pending so they can be retried.

bash
node dist/cli/vclaw.js veo cancel

Cancels the current batch.

bash
node dist/cli/vclaw.js veo useapi:accounts list

Lists your registered useapi.net accounts (use useapi:accounts add to register one).

bash
node dist/cli/vclaw.js veo useapi:health

Reports account health and history so you can confirm the route is live before spending credits.

bash
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).

bash
node dist/cli/vclaw.js veo useapi:image --image-prompt "a neon-lit alley at dusk"

Generates still images through useapi.net.

bash
node dist/cli/vclaw.js veo useapi:image:upscale --media-id <id> --resolution 4k

Upscales a generated image to 2k or 4k.

bash
node dist/cli/vclaw.js veo useapi:upscale --media-id <id> --resolution 4k

Upscales a generated video to 1080p or 4k.

bash
node dist/cli/vclaw.js veo useapi:gif --media-id <id> --output-file ./out.gif

Converts a video into a GIF — this one is free.

How it flows

veo cli diagram

Diagram source (live Mermaid)

Artifacts & outputs

  • Generated videos land in the Veo CLI output directory (vclaw-cli/output-videos/ by default, overridable with VCLAW_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-report flow into the standard projects/<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.

Built to be driven by agent hosts like Claude Code, Claude Desktop, or Codex · Source-available, commercial use requires a paid license.