invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError

call_saved_workflow does not yet support multiple connected…

Error message

call_saved_workflow does not yet support multiple connected batch inputs on node '{node_id}'

What it means

_resolve_batch_items_from_inputs finds all default edges feeding a batch node's field. If more than one distinct source node feeds the same batch input, the resolver cannot pick a single generator and raises this error, since multiple connected batch inputs aren't supported yet.

Solutions

  1. Remove one of the incoming edges so exactly one source feeds the batch field
  2. Merge the sources into a single generator/collection node upstream
  3. Move each source to a separate batch node if independent batching is intended

Example fix

// before
{"target": "batch-1", "targetHandle": "images", "source": "gen-1", "type": "default"},
{"target": "batch-1", "targetHandle": "images", "source": "gen-2", "type": "default"}
// after: keep only one edge
{"target": "batch-1", "targetHandle": "images", "source": "gen-1", "type": "default"}
Defensive patterns

Strategy: validation

Validate before calling

from collections import defaultdict
targets = defaultdict(set)
for e in workflow.get("edges", []):
    if e.get("type") == "default":
        targets[(e["target"], e["targetHandle"])].add(e["source"])
dupes = {k: v for k, v in targets.items() if len(v) > 1}
if dupes:
    raise ValueError(f"multiple batch input sources on: {dupes}")

Type guard

def has_single_batch_source(edges: list, node_id: str, handle: str) -> bool:
    srcs = {e["source"] for e in edges
            if e.get("target") == node_id and e.get("targetHandle") == handle and e.get("type") == "default"}
    return len(srcs) == 1

Try / catch

try:
    build_batch_child_workflow_session_results(...)
except UnsupportedWorkflowNodeError as e:
    if "multiple connected batch inputs" in str(e):
        dedupe_edges_for_node(extract_node_id(str(e)))

Prevention

When it happens

Trigger: A batch node (image_batch, string_batch, integer_batch, float_batch) has two or more default edges with different source nodes targeting the same field.

Common situations: Wiring two generators into one batch input to try to merge collections; copy-pasting edges in the canvas editor; refactoring a workflow and leaving a stale edge behind.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/56365e5b1a1dbfbd. Report an issue: GitHub.

Appendix: source

Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:526

    return batch_items


def _resolve_batch_items_from_inputs(
    node_id: str,
    field_name: str,
    workflow_edges: Sequence[Mapping[str, Any]],
    workflow_nodes: Mapping[str, Mapping[str, Any]],
) -> list[Any] | None:
    incoming_edges = [
        edge
        for edge in workflow_edges
        if edge.get("target") == node_id and edge.get("targetHandle") == field_name and edge.get("type") == "default"
    ]
    if not incoming_edges:
        return None
    incoming_source_ids = [edge.get("source") for edge in incoming_edges if isinstance(edge.get("source"), str)]
    if len(incoming_source_ids) != 1:
        raise UnsupportedWorkflowNodeError(
            f"call_saved_workflow does not yet support multiple connected batch inputs on node '{node_id}'"
        )
    source_id = incoming_source_ids[0]
    source_node = workflow_nodes.get(source_id)
    if _is_invocation_node(source_node) and source_node["data"].get("type", "").endswith("_generator"):
        return source_id
    if _is_connector_node(source_node):
        resolved_source = _resolve_connector_source(source_id, workflow_nodes, workflow_edges)
        if resolved_source is not None:
            resolved_source_id, _resolved_source_handle = resolved_source
            resolved_source_node = workflow_nodes.get(resolved_source_id)
            if _is_invocation_node(resolved_source_node) and resolved_source_node["data"].get("type", "").endswith(
                "_generator"
            ):
                return resolved_source_id
    raise UnsupportedWorkflowNodeError(
        f"call_saved_workflow does not yet support connected batch child workflow inputs on node '{node_id}'"
    )

View on GitHub (pinned to 0b6a024f2f)