Nodes/ComfyUI MediaHub/MediaHub Submit Video
ComfyUI Node

MediaHub Submit Video

The node that kicks off a cloud video job (then hands off to Resolve)

By vantang·Created 3 months ago·Updated 3 months ago· 3
MediaHub Submit Video
  • request
  • job
  • raw_json
api_key

Video generation is not like image generation, and MediaHubSubmitVideo exists because of that difference. Images come back from a single synchronous API call in seconds. Video - Seedance, Hailuo, Wan, HappyHorse - takes minutes, so every provider does it as an async job: you submit a request, get a task ID back, and poll until the video is ready. This node is the "submit" half of that dance.

It takes your API key and a request of type MEDIAHUB_VIDEO_REQUEST (the output of any provider video config node - Seed Volcengine T2V Config, MiniMax CN I2V Config, Agnes Video 2.0 T2V Config, and so on). It returns a job object and raw_json. Crucially, it does not give you a video. That's the trap beginners hit: they run the workflow, see a job come out, and wonder where the clip went.

What the job actually is

The job is a MEDIAHUB_JOB - essentially the provider name, the operation, and the provider's task_id from the submission response, plus a bit of metadata. It's not a file and not a URL. Think of it as a receipt you hand to MediaHub Resolve Video, which is the node that actually waits for the render, downloads the MP4, and turns it into a VIDEO you can feed to ComfyUI's SaveVideo.

Like the image node, MediaHubSubmitVideo sets IS_CHANGED to NaN, so it always executes - every queue run is a real submission, which means every run is a real bill. There's no caching safety net.

Inputs and outputs that matter

  • api_key - your provider key, from MediaHub API Key.
  • request - a MEDIAHUB_VIDEO_REQUEST from any video config node. Don't try to build one by hand; the config nodes exist to validate parameters against what each provider actually accepts.
  • job - wire this into MediaHub Resolve Video. That's its only real destination.
  • raw_json - the full submission response, useful for checking the returned task ID and provider-specific fields.

The node's category is MediaHub/Video, and the pack's example workflows chain config → submit → resolve → SaveVideo. Follow that shape and the plumbing takes care of itself.

Installing it

It's a MediaHub pack node, so the install is the pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/vantang/ComfyUI-MediaHub.git
/path/to/ComfyUI/python -m pip install -r ComfyUI-MediaHub/requirements.txt

Restart ComfyUI and it appears under MediaHub/Video. Dependencies are just requests, Pillow, and numpy - nothing to download, no models to place, because the render happens on the provider's machines.

Common gotchas

The big one is expecting a video out of this node. If you want the finished clip, you need the Resolve node after it - without it, the job just sits there and the workflow ends. A job that comes back with an error instead of a task ID usually means the config node validated something the provider disagreed with (resolution, duration, model access), and the raw_json output will tell you exactly what. Also remember each provider's key only works for that provider: a Bailian key can't submit a Seedance job, no matter how similar the request looks.

CategoryMediaHub/Video

Inputs (2)

NameTypeDefaultDescription
api_keySTRING
requestMEDIAHUB_VIDEO_REQUEST

Outputs (2)

NameTypeDescription
jobMEDIAHUB_JOB
raw_jsonSTRING