Grok Generate Video (Ace Data Cloud)
The task ID is your receipt
- status
- task_id
- media_urls_json
- first_media_url
- result_json
- trace_id
Grok Imagine has no weights to download. There is no local path, at any VRAM - same situation as Veo, Sora or Kling. If you want it inside a graph, something has to call it, and this node is one of the callers: text-to-video or image-to-video through Ace Data Cloud's hosted Grok API, no GPU involved, credits consumed per submit.
The honest framing first. This is a reseller path, not ComfyUI's official Partner Node, which also offers xAI Grok Imagine. Resellers exist for the same four reasons they always do - price, region, billing, and looser filtering - and the tradeoff is the usual one: your prompt and reference images leave the machine, and you're trusting a third party's markup on someone else's model. Ace Data Cloud's GitHub presence is real and the pack is small and readable (about 1,500 lines, one HTTP client, a copied API contract), but nobody on r/comfyui is talking about it, so you're the one doing the reading.
The model dropdown is doing more than you think
Five choices plus (from JSON/default): grok-imagine-video-1.5-fast:reverse, grok-imagine-video:reverse, grok-imagine-video:official, grok-imagine-video-1.5:official, and plain grok-imagine-video. The suffixes read as a route and a version - official for the first-party route, reverse for the other one, 1.5 newer than the base, -fast the quick tier. The pack's own default is grok-imagine-video-1.5-fast:reverse, which is a reasonable guess at cheapest-and-quickest rather than anything the README argues for. Run the same prompt through two of them and compare what your request history shows you actually paid. Don't assume.
The inputs that matter
Only four widgets do real work, and two of them are the whole t2v/i2v decision.
prompt- the multiline text field. This is it for text-to-video.image_url- image-to-video: one URL string, and note it's a string, not an IMAGE socket. There's no drag-a-file-in here; the service fetches the image itself, so your reference has to be reachable over the internet. That's the single most annoying thing about the node for animating your own renders.resolution-480p,720p,1080p. The contract's default is480p, so a run with everything blank is a 480p run.duration- an integer, 1 to 30 seconds. Default 6. Longer is more expensive; presumably linearly, but check the pricing page rather than trusting my arithmetic.
Also present: aspect_ratio (1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3), reference_image_urls (a JSON array string of extra reference URLs), and callback_url for a webhook you don't need - polling covers the same ground without you standing up an HTTP endpoint.
parameters_json stays {} unless you want to send something no widget exposes. Remember the rule: a nonempty widget overrides the same field in the JSON.
Why you always get a task ID back
The client marks this endpoint asynchronous and sets async on the request, so the submit returns quickly with status of pending and a task_id, even when the job finishes fast. Video doesn't come out of this node. It comes out of the retrieve node, and then out of the loader:
AceGrokGrokGenerateVideo ──► AceGrokGrokTaskRetrieve ──► AceGrokLoadVideo ──► your save/preview node
(prompt, res) (first_media_url) (media_url → VIDEO)
All six outputs are STRINGs - status, task_id, media_urls_json, first_media_url, result_json, trace_id - and for a generation you care about task_id. Copy it somewhere. That string is your receipt, and it's the only thing that lets you get your clip back without paying again.
Install, and the key
Manager → search Grok → publisher acedatacloud, package "Grok by Ace Data Cloud" (registry ID grok). Or:
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/GrokComfyUI
cd GrokComfyUI && python -m pip install -r requirements.txt
Two dependencies: requests and jsonschema. No model downloads. Set ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) in the ComfyUI process environment and restart - this pack has no key widget by design.
Where people get burned
Re-queueing is re-billing. Every node in this pack is an output node, and ComfyUI runs output nodes every queue. Adjust something unrelated and you've bought another clip. Bypass the node when you don't want it.
Paid submits are never retried, on purpose. The client makes one attempt for a write and three for read-only queries, and the error text says exactly what to do: preserve the task ID and inspect request history before resubmitting. If a submit times out mid-flight, don't fire it again until you've checked whether the first one landed.
Nothing is required, so nothing stops a blank request. The contract marks no fields required for generation - no prompt, no image_url. A paid call with neither is legal and useless.
Out-of-range values do get caught: type 31 into duration and validation rejects it before the request.
Then it's the usual hosted-model reality. Grok's image side has a reputation as the least restrictive mainstream service, but this is a video endpoint through a reseller, moderation still happens upstream, and your prompt and reference images are on someone else's disk. Check the current service price before you point a loop at it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| parameters_json | STRING | {} | — |
| model | COMBO | (from JSON/default) | 6 options: (from JSON/default), grok-imagine-video-1.5-fast:reverse, grok-imagine-video:reverse, grok-imagine-video:official, grok-imagine-video-1.5:official, grok-imagine-video |
| prompt | STRING | — | |
| image_url | STRING | — | |
| reference_image_urls | STRING | — | |
| aspect_ratio | STRING | — | |
| resolution | STRING | — | |
| duration | STRING | — | |
| callback_url | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| task_id | STRING | — |
| media_urls_json | STRING | — |
| first_media_url | STRING | — |
| result_json | STRING | — |
| trace_id | STRING | — |