invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError

call_saved_workflow batch child workflow contains no support

Error message

call_saved_workflow batch child workflow contains no supported batch nodes

What it means

After scanning every invocation node in the called saved workflow, no node of a supported batch type was found, so batch_data_by_group stayed empty. A workflow_call with batching requires at least one recognized batch node to expand into child executions, so UnsupportedWorkflowNodeError is raised.

Source

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

                )
        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)
    batch_data = [[datum] for datum in batch_data_by_group.pop("None", [])]
    batch_data.extend(batch_data_by_group.values())
    batch = Batch(graph=child_graph, data=batch_data)
    if calc_session_count(batch) > maximum_children:
        raise TooManySessionsError("call_saved_workflow exceeds remaining queue capacity for child workflow executions")

    child_session_results: list[WorkflowCallChildSessionResult] = []
    for session_id, session_json, field_values_json in create_session_nfv_tuples(batch, maximum_children):
        generated_session = GraphExecutionState.model_validate_json(session_json)
        child_session = parent_session.create_child_workflow_execution_state(generated_session.graph, call_frame)
        child_session.id = session_id
        field_values = [NodeFieldValue.model_validate(field_value) for field_value in json.loads(field_values_json)]
        child_session_results.append(WorkflowCallChildSessionResult(session=child_session, field_values=field_values))
    return child_session_results

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Add a supported batch node (per SUPPORTED_BATCH_TYPES) wired to an invocation input in the saved workflow.
  2. Call the workflow normally (without batch expansion) if you do not intend batching.
  3. Check SUPPORTED_BATCH_TYPES in workflow_call_batch.py and align your workflow's batch node type with a supported value.
  4. Verify the workflow record's node 'data.type' strings after upgrades; re-save the workflow in the current editor version.

Example fix

// before: workflow with only text-to-image nodes
// after: add a batch node feeding the prompt field
{"id":"b1","data":{"type":"batch","collection":["cat","dog"]}}
edges: b1 -> prompt_node
Defensive patterns

Strategy: validation

Validate before calling

def has_supported_batch_node(workflow, supported_types):
    return any(n.get("data", {}).get("type") in supported_types
               for n in workflow.get("nodes", []))

Type guard

def is_supported_batch_type(node, supported_types) -> bool:
    return node.get("data", {}).get("type") in supported_types

Try / catch

try:
    results = build_batch_child_workflow_session_results(...)
except UnsupportedWorkflowNodeError as e:
    if "no supported batch nodes" in str(e):
        raise WorkflowConfigError("workflow is not batch-enabled") from e

Prevention

When it happens

Trigger: build_batch_child_workflow_session_results completes its node loop without appending any BatchDatum because no node's data.type is in SUPPORTED_BATCH_TYPES (e.g. the workflow only has plain invocation nodes, or the batch node type was renamed/is unsupported).

Common situations: Calling a saved workflow that was never configured for batching; using a custom/older batch node type not in SUPPORTED_BATCH_TYPES; version drift where batch node types changed between InvokeAI versions; typo in node type from hand-edited workflow JSON.

Related errors


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