Nodes/Volcengine Seedance/Seedance 2.0 Query Task (Volcengine)
ComfyUI Node

Seedance 2.0 Query Task (Volcengine)

Grab your finished video by task ID

By kuangrenaigc-stack·Created 3 months ago·Updated 3 months ago· 1
Seedance 2.0 Query Task (Volcengine)
    • video_path
    • video_url
    • last_frame_path
    • last_frame_url
    • task_id
    • status
    • response_json
    api_key
    task_id
    download_videotrue
    download_last_framefalse
    base_urlhttps://ark.cn-beijing.volces.com/api/v3

    This is the sibling node you reach for after you've met Seedance 2.0 Generate. Where Generate submits a video task to ByteDance's API-only Seedance model and (optionally) waits for it, Query Task does the boring but essential job: you hand it a task_id, it asks Volcengine Ark how the generation is going, and if it's done it downloads the mp4 to ComfyUI/output/seedance/ for you. No GPU, no local model - just a polite HTTP poll, which makes sense for a model whose weights were never released and only exist behind an API key.

    Why you'd use it at all

    Because Generate's wait_for_result toggle is a trap for queues. With it on (the default), the node sits on ComfyUI's execution thread sleeping between polls for up to 30 minutes, and everything behind it in the queue just... waits. The recommended pattern is to turn wait_for_result off on the Generate node, let it return the task_id instantly, keep the rest of your queue moving, and check in on jobs later with this node. It's also the way to recover a generation you kicked off outside ComfyUI entirely - Ark returns task IDs from raw API calls, and any of them work here as long as they're from the same account.

    How it works

    It's a single GET against the Ark endpoint contents/generations/tasks/{task_id} using your key. If the status is succeeded, it extracts the video URL (and last-frame URL, if present), downloads what you asked for, and returns paths. If it's still running, you get an empty video_path and a status you can inspect - run it again, or wire it to loop. The mechanism is plain urllib; this pack has no extra runtime dependencies beyond what ComfyUI already ships.

    Inputs (there are only four)

    • api_key - same key as the Generate node. The node reads it from this field first, then falls back to the ARK_API_KEY (or VOLCENGINE_ARK_API_KEY) environment variable. Paste it in or set the env var so it never gets baked into a saved workflow.
    • task_id - the only thing you actually change each run. Wire it straight from the Generate node's task_id output, or type one in.
    • download_video (default true) - whether to save the mp4 locally. Turn this off if you only want the URL or the status.
    • download_last_frame (default false) - fetch the last frame too, if the task produced one.

    base_url defaults to the Ark v3 endpoint and you won't touch it unless you're proxying through a region-appropriate mirror.

    Outputs

    Identical to the Generate node's seven: video_path, video_url, last_frame_path, last_frame_url, task_id, status, and response_json. For a finished task, video_path is the file on disk that feeds the rest of your workflow; response_json is your debugging friend when a job went sideways.

    Install

    You're installing the whole pack either way - this node ships in the same repository as Generate:

    cd ComfyUI/custom_nodes
    git clone https://github.com/kuangrenaigc-stack/ComfyUI-Volcengine-Seedance
    

    Restart ComfyUI and look under the Volcengine/Seedance category (or search "Seedance" in the node palette). Via ComfyUI Manager, search for "Volcengine Seedance". There are no model downloads and nothing heavy to pip install, so the only real setup is having an Ark API key, which - the recurring gotcha with Chinese cloud APIs - historically required a Chinese phone number to obtain.

    Where people get burned

    • No key, no query. Even reading a task status needs the API key. The node raises "Missing Ark API key" if neither field nor env var has one - the _env_api_key() helper checks ARK_API_KEY, VOLCENGINE_ARK_API_KEY, and VOLCENGINE_API_KEY, so pick one and be consistent.
    • Blank task_id. The node errors immediately if it's empty; it won't guess. If your Generate node ran with wait_for_result off and never executed, you have no ID to query.
    • Only downloads on success. download_video is checked inside the status == "succeeded" branch - a failed or still-running task returns empty paths, not a stale file.
    • Gone after expiry. Ark tasks carry an expiry (Generate's execution_expires_after defaults to 48 hours). Querying a long-expired task returns an error, and that's Ark being Ark, not the node.

    It's a deliberately tiny utility, and that's fine: in the Generate-plus-Query pairing it's the half that stops your ComfyUI queue from being held hostage by a five-minute video render. For a workflow that runs more than one generation, it earns its place.

    CategoryVolcengine/Seedance

    Inputs (5)

    NameTypeDefaultDescription
    api_keySTRING
    task_idSTRING
    download_videoBOOLEANtrue
    download_last_frameBOOLEANfalse
    base_urlSTRINGhttps://ark.cn-beijing.volces.com/api/v3

    Outputs (7)

    NameTypeDescription
    video_pathSTRING
    video_urlSTRING
    last_frame_pathSTRING
    last_frame_urlSTRING
    task_idSTRING
    statusSTRING
    response_jsonSTRING