Concurrent Submit | zhenzhen-grok-video-1.5-new
Grok 1.5's newer endpoint, batched — and it's really an i2v node
- image
- task
Here's a thing the display name won't tell you: this "grok-video-1.5-new" node is really an image-to-video node. The underlying Comfly_grok_video_1_5 class raises an error if you don't give it an image or an image_url - it needs an input_reference to start from. The default prompt even says it: "基于这张图片生成视频" (generate a video from this image). So go in knowing it's for animating a still, not conjuring clips from text.
What you get for that is the Grok 1.5 video line with explicit 6/10/15-second model choices and a clean 1280x720 or 720x1280 size toggle, wrapped in the pack's concurrent pattern so you can run ten animates in parallel in the shared video pool.
How the wrapper works
The plain Comfly_grok_video_1_5 node uploads your reference image to Zhenzhen's /v1/files endpoint, posts a multipart form with the model, prompt and size, then polls the resulting task id. The Submit wrapper keeps every one of those inputs but returns a single task of type COMFLY_VIDEO_FUTURE instead of a video, running the call on a background worker (video pool, default 10, COMFLY_VIDEO_CONCURRENCY env var).
The task must flow into ComflyConcurrent_Video_Await. That's the node that blocks until all connected tasks finish and hands back video_1 … video_10 in slot order plus a status JSON. failure_mode on it decides whether one failure aborts the batch (fail_fast) or leaves a placeholder slot.
[Submit: animate image A] ──task──┐
[Submit: animate image B] ──task──┼──▶ ComflyConcurrent_Video_Await ──▶ Save
[Submit: animate image C] ──task──┘
Inputs that matter
prompt is required (defaulted to the Chinese "generate video from this image"). model picks the length: grok-1.5-video-6s, grok-1.5-video-10s, or grok-1.5-video-15s, defaulting to the cheap 6s. size is 1280x720 or 720x1280 - the landscape/portrait toggle, no freeform resolution.
image is the reference (or image_url if you have a public URL instead - it's ignored when the image input is connected). Note the field name: this node's key field is apikey, not api_key. Small thing, but it catches people copy-pasting between the pack's nodes. poll_interval (6s) and max_poll_attempts (600, so up to an hour of waiting) bound the wait. skip_error (false by default) makes it return an empty video instead of raising on failure.
Install and gotchas
Pack install is unchanged: ComfyUI Manager → search Comfyui-zhenzhen, or git clone https://github.com/T8mars/Comfyui-zhenzhen into ComfyUI/custom_nodes, restart. No downloads - the model lives on Zhenzhen's servers.
Two things will bite. First, the missing-reference error: if you hit a "requires an image input or image_url" failure, this node genuinely needs a starting image - there's no text-only path here. Second, 6/10/15s are different model choices, so switching "duration" means switching the model dropdown, not a slider. Timeouts on long renders usually mean the clip finished and the poll gave up - check the site's task page. And like every node in the pack, a 500 is typically upstream Grok load; re-run it.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 基于这张图片生成视频 | — |
| model | COMBO | grok-1.5-video-6s | 3 options: grok-1.5-video-6s, grok-1.5-video-10s, grok-1.5-video-15s |
| size | COMBO | 1280x720 | 2 options: 1280x720, 720x1280 |
| imageopt | IMAGE | — | |
| image_urlopt | STRING | Optional image reference URL. Ignored when image input is connected. | |
| apikeyopt | STRING | — | |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 6001–10000 | — |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、返回空视频;关闭时(默认)失败直接抛出错误。 |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_VIDEO_FUTURE | — |