Check Video Status
The Node That Babysits Your MiniMax Video Job
- status
- file_id
- video_url
- cover_image_url
The name is doing exactly what it says: this node sits between "I submitted a video job" and "I have a video file." MiniMax's video generation is asynchronous - the Video Generation node fires off a request and gets back a task_id, then the actual rendering happens somewhere in MiniMax's cloud. This node polls that job until it's done. It's the middle leg of the three-node pipeline that makes up the whole video side of the ComfyUI-JM-MiniMax-API pack:
video-generation → check-video-status → download-video
Without it, you'd be hand-pasting a task_id into a browser every few minutes. With it, the workflow runs end to end and just works.
How it works
Under the hood it's an honest while loop, no magic. It sends a GET to https://api.minimaxi.chat/v1/query/video_generation?task_id=... with your API key in the auth header, checks the returned status, and if the job is still processing it time.sleeps for check_interval seconds and tries again. It prints progress to the ComfyUI console as it goes - elapsed time, remaining wait, attempt count, even the video dimensions once they exist.
That means this node blocks the ComfyUI queue while it waits. You won't run anything else on that queue while a render is pending. That's the trade-off for a linear API pipeline, and it's usually fine - a MiniMax video takes minutes, not hours.
The inputs that matter
Only four, and you set three of them:
- api_key - the same MiniMax key every node in this pack wants.
- task_id - wire it straight from the Video Generation node's output. That's the whole point.
- check_interval - seconds between polls, 10–300 (default 30). Lowering it makes the loop feel snappier but burns more API requests, so leave the default unless you're impatient.
- max_wait_time - total seconds to keep polling, 300–7200 (default 1800 = 30 minutes). This is your timeout protection, and the node will raise a clear error if it's exceeded.
What comes out
Four strings, and you mostly care about one:
- status -
processing,success, orfailed. The node only returns on success or failure; it doesn't hand you back a mid-render status. - file_id - the one you actually wire forward, into the Download Video node. This is what you use to pull the file down through the proper API.
- video_url - a direct download URL. Handy if you'd rather grab the video some other way or check it in a browser.
- cover_image_url - the thumbnail MiniMax generated for the job.
Common issues
The node maps MiniMax's API error codes to plain English before it raises, so you'll see readable messages like "Authentication failed, please check your API key" (1004), "Insufficient account balance" (1008), or "Rate limit exceeded" (1002). A 404 means the task_id is wrong or the job already expired - double-check you copied it from the Video Generation node.
The one that trips people up: if max_wait_time runs out, you get a timeout error even though MiniMax may still be rendering the video just fine. Nothing is lost - just re-run the node with the same task_id (and a higher max_wait_time) and it'll pick up the job where it left off.
Install
This node ships inside the ComfyUI-JM-MiniMax-API pack, so you get all eight nodes at once:
cd ComfyUI/custom_nodes
git clone https://github.com/synthetai/ComfyUI-JM-MiniMax-API
pip install -r requirements.txt
Or skip all that and search "ComfyUI-JM-MiniMax-API" in ComfyUI Manager's install tab. Restart ComfyUI afterward. Dependencies are just requests and Pillow - no GPU, no model downloads, because nothing runs locally. Everything here is a thin wrapper around MiniMax's paid cloud API, so you'll also need an API key from their open platform before anything will work.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| task_id | STRING | — | |
| check_interval | INT | 3010–300 | Check interval in seconds |
| max_wait_time | INT | 1800300–7200 | Maximum wait time in seconds (default: 30 minutes) |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| file_id | STRING | — |
| video_url | STRING | — |
| cover_image_url | STRING | — |