Nodes/ComfyUI-BytePlus-ModelArk/BytePlus Video Query Tasks
ComfyUI Node

BytePlus Video Query Tasks

Where did that Seedance render go? This node goes and finds it

By byteplus-sa·Created 8 days ago·Updated about 8 hours ago· 3
BytePlus Video Query Tasks
    • task_list_json
    • total_tasks
    ◄page_num1►
    ◄page_size10►
    ◄statusall►
    ◄service_tierdefault►
    ◄task_ids►
    ◄model_versionall►
    ◄seed0►

    The node you want after the tab closes

    A Seedance render doesn't die with your ComfyUI session. It keeps running on BytePlus after you close the window, and the result sits there for 24 hours. What you lose is the graph watching it - and the task ID that was printed in the console once, on a line you scrolled past.

    BytePlus Video Query Tasks is the recovery tool. It lists your recent video tasks - status, model, timestamps - as JSON. Reach for it when: a long job outlived the session, you killed the queue mid-render, you want to check whether the flex-tier job ever finished, or you have a draft_task_id from a Seedance 2.5 Draft node and want to know where the draft got to.

    It's an output node - nothing to wire into it, and it runs when you hit Queue even with nothing connected. It only lists, mind you; it won't pull anybody's video back into your graph.

    How it works

    Read-only, and that's the whole mechanism. It calls the task-list endpoint on your ModelArk account with your paging and filters, sorts the results newest first, and hands them back as text. Nothing is generated, nothing is uploaded, and no media moves - this is a lookup against a list of your own jobs, not a render.

    Two behaviours from the source explain a lot of confusion. API or network failures come back as JSON with an error field and total_tasks of 0 rather than throwing and killing the run - so a run that "succeeded" with 0 tasks is usually a bad key, not an empty account. And model_version: all queries once with no model filter, while a specific pick narrows the query.

    The inputs that matter

    task_ids is the one you'll change. Paste task IDs, one per line - that's what the lookup keys on. Used alone with everything else at all/default, it collects exactly those tasks. Paste an ID that doesn't come back and the node tells you instead of quietly returning nothing.

    status - all, succeeded, failed, running, queued, cancelled, expired. That last one is where results go to die after the 24-hour window.

    model_version - all, the current Seedance 2.5 / 2.0 / 1.0 names, and the retired ones. The pack can still query models you can't select in the UI any more, which is exactly what you need when you're hunting down a task ID from three months ago.

    service_tier - default or flex, the cheaper slower queue. Filter by it when you can't remember which tier you submitted on. page_num and page_size default to 1 and 10.

    And then there's seed. Yes, on a read-only query node. It exists to defeat ComfyUI's node cache: a node whose inputs haven't changed hands back its previous result without making a request, so re-queuing returns yesterday's answer. Changing the seed forces a fresh query - the shipped Seedance Task Query template sets that widget to randomize, which is the pack telling you the same thing. Same reason the README's smoke test tells you to change the prompt between runs; the plumbing doc covers the cache rule if you want the general version.

    Outputs

    task_list_json (STRING) - send it to Preview Any to read it, or pull a single field out with RegexExtract, which is exactly what the included template does to display the status and the model that made the clip. total_tasks (INT) is the count across everything it looked at.

    Install

    ComfyUI Manager → search BytePlus ModelArk (ComfyUI BytePlus ModelArk & AI MediaKit), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/byteplus-sa/ComfyUI-BytePlus-ModelArk
    pip install -r ComfyUI-BytePlus-ModelArk/requirements.txt
    

    Restart after installing. Needs ComfyUI 0.31.0 or newer. Then Settings → BytePlus with your ModelArk API key - BYTEPLUS_API_KEY, not the MediaKit one, since this is a ModelArk endpoint. No Comfy.org login is involved; nothing is uploaded.

    Common issues

    • An empty list almost always means the wrong region. Keys and models are per-region, and so are tasks: query from eu-west-1 and your ap-southeast-1 renders simply aren't there. Settings → BytePlus shows which region your key is on.
    • {"error": ...} with total_tasks: 0 is a credential or connection problem, not an empty account. That's the node's own error path, and it's why you should always have the JSON output showing.
    • A filter that excludes the thing you're looking for. status: succeeded while the job is still queued looks identical to "gone."
    • Turn off every filter when recovering. all / default / empty task_ids lists everything recent, which is the fastest way to find an ID you never wrote down.
    CategoryBytePlus ModelArk

    Inputs (7)

    NameTypeDefaultDescription
    page_numINT1—
    page_sizeINT10—
    statusCOMBOall7 options: all, succeeded, failed, running, queued, cancelled, +1
    service_tierCOMBOdefault2 options: default, flex
    task_idsSTRING—
    model_versionCOMBOall9 options: all, seedance-1-0-pro, seedance-1-0-pro-fast, dreamina-seedance-2-0, dreamina-seedance-2-0-fast, dreamina-seedance-2-0-mini, +3
    seedINT00–2147483647—

    Outputs (2)

    NameTypeDescription
    task_list_jsonSTRING—
    total_tasksINT—