Nodes/Dustin ComfyUI Nodes/Dustin Marble Upload Video
ComfyUI Node

Dustin Marble Upload Video

Get a video onto Marble's servers so it can become a world

By zihualiu1997·Created 4 months ago·Updated 4 months ago· 1
Dustin Marble Upload Video
    • media_asset_id
    api_key
    video_path

    Before Marble can turn a local video into a 3D world, that video has to exist somewhere the API can reach. Public URLs work - that's what the video_url path in Generate Video World is for. But if your footage is sitting on your hard drive, you need the upload step first, and that's the entire job of this node. It takes a path to a video file, pushes it to Marble's storage through the media-assets:prepare_upload endpoint, and hands you back a media_asset_id - a token that references your file on their servers.

    What it does, precisely

    Two inputs, one output, no drama. video_path is the absolute or relative path to your file - mp4, mov, mkv, anything Marble accepts. api_key is your key, or export WLT_API_KEY and leave the field blank. The node reads the file, calls prepare_upload to get a signed upload URL and headers, PUTs the bytes up, and returns the media_asset_id string. That string is what you wire into Generate Video World's media_asset_id input (with video_mode set to video_file).

    The gotchas

    • The path must resolve. If the file isn't found, you get "File not found: <path>" - check that ComfyUI's process can actually see the path you typed. Relative paths resolve against wherever ComfyUI is running from, which trips people up more than it should. An absolute path is the reliable choice.
    • File-not-found beats silent failure. It errors loudly rather than uploading nothing, which is the right behavior for a node whose only job is "get this file there."
    • Your footage leaves the machine. This is the API-wrapper reality from the KB: the moment this node runs, your video is on World Labs' servers. If that's a privacy problem for the footage, the whole video-to-world path is off the table - the node is the point where the data leaves, not a bug.
    • Big files, slow uploads. The underlying upload call has a generous 300-second timeout, which is a hint that videos can be chunky. A long clip will make this node sit there a while. That's normal.

    Why a separate upload node at all?

    You could have Generate Video World upload the file inline - and honestly, for video_file mode it can, if you give it a video_path directly. The reason the split exists is composability and cost: upload once, then reuse the media_asset_id across multiple generation attempts with different prompts, models, or seeds without re-uploading the footage every time. Videos are the biggest payload in this pack, so uploading once and iterating is a real saving. If you're doing a single shot and don't care, skip this node and let Generate Video World handle the file. If you're iterating, upload once and fan the ID out.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/zihualiu1997/dustin-comfyui-nodes
    

    Restart ComfyUI; or install "dustin-comfyui-nodes" from ComfyUI Manager. It needs requests and a World Labs API key - that's the full dependency story. No models, no local GPU, just a pipe from your disk to Marble's storage.

    CategoryDustin Nodes/Marble

    Inputs (2)

    NameTypeDefaultDescription
    api_keySTRING
    video_pathSTRING

    Outputs (1)

    NameTypeDescription
    media_asset_idSTRING