invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError
call_saved_workflow batch child workflow node '{node_id}' is
Error message
call_saved_workflow batch child workflow node '{node_id}' is not connected to any invocation input What it means
A batch node in the called saved workflow has valid items but its output is not connected to any invocation input field. InvokeAI requires each batch datum to have a concrete destination node/field, otherwise it could not inject per-child field values, so it raises UnsupportedWorkflowNodeError.
Source
Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:611
_resolve_generator_items(generator_node, services, user_id, maximum_children)
if resolve_generator_items
else _get_generator_placeholder_items(generator_node)
)
used_generator_node_ids.add(generator_source_id)
if not batch_items:
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow generator-backed batch child workflow node '{generator_source_id}' produced no batch items"
)
else:
batch_items = _get_batch_items(node_data, field_name)
if not batch_items:
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow batch child workflow node '{node_id}' must provide at least one batch item"
)
batch_group_id = _get_batch_group_id(node_data)
destinations = _resolve_batch_destinations(node_id, field_name, workflow_nodes, workflow_edges)
if not destinations:
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow batch child workflow node '{node_id}' is not connected to any invocation input"
)
group_batch_data = batch_data_by_group.setdefault(batch_group_id, [])
for destination_node_id, destination_field in destinations:
group_batch_data.append(
BatchDatum(
node_path=destination_node_id,
field_name=destination_field,
items=_normalize_batch_item_for_destination(destination_field, batch_items),
)
)
if not batch_data_by_group:
raise UnsupportedWorkflowNodeError("call_saved_workflow batch child workflow contains no supported batch nodes")
_reject_unrelated_generator_nodes(mutable_workflow, used_generator_node_ids)
sanitized_workflow = _build_child_graph_workflow(mutable_workflow, used_generator_node_ids)
child_graph = build_graph_from_workflow(sanitized_workflow)View on GitHub (pinned to 0b6a024f2f)
Solutions
- Open the saved workflow and connect the batch node's output to at least one invocation node's input field.
- Check for edges of non-default type (e.g. collapsed/hidden edges) — only 'default' edges count as destinations; re-add as a normal edge.
- Remove the batch node if it is unused, so the workflow contains only supported, connected batch nodes.
- Programmatically validate: for each supported batch node, assert _resolve_batch_destinations-like edge scan finds >=1 target before calling.
Example fix
// before (no outgoing edge)
{"nodes":[batch1, denoise], "edges":[]}
// after
{"edges":[{"source":"batch1","target":"denoise","type":"default"}]} Defensive patterns
Strategy: validation
Validate before calling
def batch_nodes_connected(workflow, batch_ids):
targets = {e.get("source") for e in workflow.get("edges", []) if e.get("type") == "default"}
return all(bid in targets for bid in batch_ids) Type guard
def has_outgoing_default_edge(node_id, edges) -> bool:
return any(e.get("source") == node_id and e.get("type") == "default" for e in edges) Try / catch
try:
results = build_batch_child_workflow_session_results(...)
except UnsupportedWorkflowNodeError as e:
if "not connected to any invocation input" in str(e):
raise WorkflowConfigError("connect batch output to an invocation input") from e Prevention
- Check edge integrity after editing or importing workflows
- Connect batch outputs before saving; delete unused batch nodes
- Run graph validation (edges non-empty for batch nodes) in CI for saved workflows
- Avoid connecting batch outputs only to non-invocation nodes
When it happens
Trigger: build_batch_child_workflow_session_results calls _resolve_batch_destinations for a supported batch node and no default edges lead from the batch output into any other node's input in the workflow graph.
Common situations: Deleting the edge out of a batch/iterate node while restructuring a workflow; a saved workflow where the batch output is connected only to a note/output node rather than an invocation; partial workflow imports missing edges.
Related errors
- call_saved_workflow image-generator-backed batch child workf
- call_saved_workflow generator-backed batch child workflow no
- call_saved_workflow batch child workflow node '{node_id}' mu
- call_saved_workflow batch child workflow contains no support
- All Krea-2 conditioning batch items must have the same valid
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/2ac4e9257a4d6ba4.
Report an issue: GitHub.