{"record":{"id":"8d362ed09cf9e17b","repo":"invoke-ai/InvokeAI","slug":"call-saved-workflow-batch-child-workflow-contains","errorCode":null,"errorMessage":"call_saved_workflow batch child workflow contains no supported batch nodes","messagePattern":"call_saved_workflow batch child workflow contains no supported batch nodes","errorType":"validation","errorClass":"UnsupportedWorkflowNodeError","httpStatus":null,"severity":"error","filePath":"invokeai/app/services/session_processor/workflow_call_batch.py","lineNumber":625,"sourceCode":"                )\n        batch_group_id = _get_batch_group_id(node_data)\n        destinations = _resolve_batch_destinations(node_id, field_name, workflow_nodes, workflow_edges)\n        if not destinations:\n            raise UnsupportedWorkflowNodeError(\n                f\"call_saved_workflow batch child workflow node '{node_id}' is not connected to any invocation input\"\n            )\n        group_batch_data = batch_data_by_group.setdefault(batch_group_id, [])\n        for destination_node_id, destination_field in destinations:\n            group_batch_data.append(\n                BatchDatum(\n                    node_path=destination_node_id,\n                    field_name=destination_field,\n                    items=_normalize_batch_item_for_destination(destination_field, batch_items),\n                )\n            )\n\n    if not batch_data_by_group:\n        raise UnsupportedWorkflowNodeError(\"call_saved_workflow batch child workflow contains no supported batch nodes\")\n\n    _reject_unrelated_generator_nodes(mutable_workflow, used_generator_node_ids)\n    sanitized_workflow = _build_child_graph_workflow(mutable_workflow, used_generator_node_ids)\n    child_graph = build_graph_from_workflow(sanitized_workflow)\n    batch_data = [[datum] for datum in batch_data_by_group.pop(\"None\", [])]\n    batch_data.extend(batch_data_by_group.values())\n    batch = Batch(graph=child_graph, data=batch_data)\n    if calc_session_count(batch) > maximum_children:\n        raise TooManySessionsError(\"call_saved_workflow exceeds remaining queue capacity for child workflow executions\")\n\n    child_session_results: list[WorkflowCallChildSessionResult] = []\n    for session_id, session_json, field_values_json in create_session_nfv_tuples(batch, maximum_children):\n        generated_session = GraphExecutionState.model_validate_json(session_json)\n        child_session = parent_session.create_child_workflow_execution_state(generated_session.graph, call_frame)\n        child_session.id = session_id\n        field_values = [NodeFieldValue.model_validate(field_value) for field_value in json.loads(field_values_json)]\n        child_session_results.append(WorkflowCallChildSessionResult(session=child_session, field_values=field_values))\n    return child_session_results","sourceCodeStart":607,"sourceCodeEnd":643,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/services/session_processor/workflow_call_batch.py#L607-L643","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Add a supported batch node (per SUPPORTED_BATCH_TYPES) wired to an invocation input in the saved workflow.","Call the workflow normally (without batch expansion) if you do not intend batching.","Check SUPPORTED_BATCH_TYPES in workflow_call_batch.py and align your workflow's batch node type with a supported value.","Verify the workflow record's node 'data.type' strings after upgrades; re-save the workflow in the current editor version."],"exampleFix":"// before: workflow with only text-to-image nodes\n// after: add a batch node feeding the prompt field\n{\"id\":\"b1\",\"data\":{\"type\":\"batch\",\"collection\":[\"cat\",\"dog\"]}}\nedges: b1 -> prompt_node","handlingStrategy":"validation","validationCode":"def has_supported_batch_node(workflow, supported_types):\n    return any(n.get(\"data\", {}).get(\"type\") in supported_types\n               for n in workflow.get(\"nodes\", []))","typeGuard":"def is_supported_batch_type(node, supported_types) -> bool:\n    return node.get(\"data\", {}).get(\"type\") in supported_types","tryCatchPattern":"try:\n    results = build_batch_child_workflow_session_results(...)\nexcept UnsupportedWorkflowNodeError as e:\n    if \"no supported batch nodes\" in str(e):\n        raise WorkflowConfigError(\"workflow is not batch-enabled\") from e","preventionTips":["Confirm the workflow is designed for batching before calling with batch expansion","Re-check SUPPORTED_BATCH_TYPES after InvokeAI upgrades and re-save old workflows","Validate node data.type strings when importing workflow JSON","Skip batch expansion for workflows without supported batch nodes"],"tags":["invokeai","batch","workflow-call","unsupported-node"],"backgroundTag":"no-supported-batch-nodes","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}