Grok Proxy Video Generate (Compatibility)
Grok Video Without Breaking Your Old Workflows
- image
- video_path
- video_url
- request_id
Read the name like a warning label. "Grok Proxy Video Generate (Compatibility)" is not the node you should build a new workflow around - it's the node that keeps an old workflow alive after the pack renamed its video node. If you're opening a saved workflow and this thing shows up, the whole point is that it still loads and still runs. If you're starting fresh, reach for the pack's plain "Grok Video" node instead and use this one as the fallback it's named after.
What it actually does: it takes your prompt, ships it to a local proxy that fronts xAI's Grok video models, polls until the video is done, and downloads the result into output/grok_proxy/. None of the generation happens on your GPU - the heavy lifting is on Grok's servers, so this is an API-wrapper node (the same contested corner of the ecosystem as the official Grok Imagine partner node), just routed through a proxy you control.
How it works
Under the hood it's three steps, all plain HTTP. First it POSTs to {proxy_base_url}/videos/generations with your prompt, model, duration, aspect_ratio, resolution, and seed. Then it polls GET /videos/{request_id} every poll_interval_seconds (default 5) until the job is done or max_wait_seconds (default 600) runs out - a timeout error if the proxy never hands back a video URL. Finally it downloads the file, keeping the .mp4/.mov/.webm/.mkv extension, and returns it as a path.
Three outputs, all plain strings: video_path (the file in output/grok_proxy/), video_url (the proxy's hosted URL, if it has one), and request_id (handy for debugging). Wire video_path into a video loader or preview node to actually see the clip - unlike the newer Grok Video node, this compat shim doesn't hand you a tensor.
The inputs that matter
For a first run you barely touch anything: prompt, model (default grok-imagine-video; the dropdown refreshes from the proxy's /models endpoint when available), duration (1–15s), aspect_ratio, and resolution (720p/480p).
The optional inputs give it image-to-video chops: image or image_url (never both - it errors if you connect both), or reference_images_json for a list of reference images. extra_json lets you smuggle extra parameters into the request payload. And here's a real gotcha: the default api_key is literally dummy, and the default proxy_base_url is http://127.0.0.1:8317/v1. Out of the box this node expects a proxy already running on that port. The pack is proxy-neutral on purpose - point proxy_base_url at any local proxy that exposes OpenAI-style /videos/generations routes, or set COMFY_GROK_PROXY_BASE_URL / COMFY_GROK_PROXY_API_KEY as environment variables.
Installing it
No model files, no heavy deps - the code runs on ComfyUI's bundled torch/PIL and Python's stdlib, and there's no requirements.txt at all. Install via ComfyUI Manager (search "ComfyUI-Grok-Proxy") or:
cd ComfyUI/custom_nodes
git clone https://github.com/zoidypuh/ComfyUI-Grok-Proxy.git
Then restart ComfyUI. The real dependency is the proxy itself and a Grok API account behind it - the node is just the plumbing.
Where people get burned
- It hangs and times out. Almost always the proxy at
127.0.0.1:8317isn't running or doesn't implement the video routes. Checkproxy_base_url, then the proxy's logs. max_wait_secondstoo low. Grok video jobs can outrun the default 600s on slow days. Bump it; the poll loop just keeps waiting.- "Use either the image input or image_url, not both." That's the node talking - disconnect one.
reference_images_jsonrejected. It must be a valid JSON list, and it can't be combined withimage/image_urlon Grok video.
One more thing, because it matters with anything in this category: this node sends your prompt and images to a remote server and the proxy holds the credential. Only install from Manager or the official repo, and don't paste a real API key into a workflow you share - the field serializes into the file. Keep it dummy locally and let the proxy handle auth.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A cinematic slow-motion shot | — |
| proxy_base_url | STRING | http://127.0.0.1:8317/v1 | — |
| api_key | STRING | dummy | — |
| model | STRING | grok-imagine-video | — |
| duration | INT | 101–15 | — |
| aspect_ratio | COMBO | 16:9 | 8 options: auto, 16:9, 4:3, 3:2, 1:1, 2:3, +2 |
| resolution | COMBO | 720p | 2 options: 720p, 480p |
| output_prefix | STRING | grok_video | — |
| poll_interval_seconds | INT | 51–60 | — |
| max_wait_seconds | INT | 60030–7200 | — |
| request_timeout_seconds | INT | 605–600 | — |
| seed | INT | 00–18446744073709550000 | — |
| image_urlopt | STRING | — | |
| imageopt | IMAGE | — | |
| reference_images_jsonopt | STRING | [] | — |
| extra_jsonopt | STRING | {} | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |
| video_url | STRING | — |
| request_id | STRING | — |