invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError
call_saved_workflow generator node is malformed
Error message
call_saved_workflow generator node is malformed
What it means
_resolve_generator_items requires each generator node to have data.type as a string and data.inputs as a mapping. If either is missing or wrong-typed, the node is structurally malformed and UnsupportedWorkflowNodeError is raised before any generator is resolved.
Source
Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:407
"float_generator_linear_distribution",
"float_generator_random_distribution_uniform",
"integer_generator_arithmetic_sequence",
"integer_generator_linear_distribution",
"integer_generator_random_distribution_uniform",
"string_generator_dynamic_prompts_random",
}:
return int(value.get("count", 10))
return None
def _resolve_generator_items(
generator_node: Mapping[str, Any], services: Any, user_id: str | None, maximum_items: int
) -> list[Any]:
generator_node_data = generator_node["data"]
node_type = generator_node_data.get("type")
inputs = generator_node_data.get("inputs")
if not isinstance(node_type, str) or not _is_mapping(inputs):
raise UnsupportedWorkflowNodeError("call_saved_workflow generator node is malformed")
generator_input = inputs.get("generator")
if not _is_mapping(generator_input):
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow generator node '{generator_node_data.get('id')}' is missing generator input"
)
generator_value = generator_input.get("value")
if not _is_mapping(generator_value):
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow generator node '{generator_node_data.get('id')}' has invalid generator value"
)
declared_item_count = _get_declared_generator_item_count(generator_value)
if declared_item_count is not None and declared_item_count > maximum_items:
raise TooManySessionsError("call_saved_workflow exceeds remaining queue capacity for child workflow executions")
if node_type == "integer_generator":
return _resolve_integer_generator(generator_value)
if node_type == "float_generator":
return _resolve_float_generator(generator_value)
if node_type == "string_generator":View on GitHub (pinned to 0b6a024f2f)
Solutions
- Open the workflow in the InvokeAI editor and re-save so the node's data.type and data.inputs are populated
- Inspect the workflow JSON and restore the missing data.type / data.inputs fields on the generator node
- Re-create the generator node and reconnect its edges
Example fix
// before
{"id": "gen-1", "type": "invocation", "data": {"type": "integer_generator"}}
// after
{"id": "gen-1", "type": "invocation", "data": {"type": "integer_generator", "inputs": {"generator": {...}}}} Defensive patterns
Strategy: validation
Validate before calling
for node in workflow.get("nodes", []):
data = node.get("data", {})
if not isinstance(data.get("type"), str) or not isinstance(data.get("inputs"), dict):
raise ValueError(f"malformed node {node.get('id')}: need data.type str and data.inputs dict") Type guard
def is_well_formed_node(node: object) -> TypeGuard[dict]:
return (isinstance(node, Mapping) and isinstance(node.get("data"), Mapping)
and isinstance(node["data"].get("type"), str) and isinstance(node["data"].get("inputs"), Mapping)) Try / catch
try:
results = build_batch_child_workflow_session_results(...)
except UnsupportedWorkflowNodeError as e:
raise WorkflowValidationError(f"fix node structure before queueing: {e}") from e Prevention
- Validate workflow JSON schema before enqueueing
- Avoid manual edits to nodes[].data
- Re-save workflows in the UI after version upgrades
When it happens
Trigger: build_batch_child_workflow_session_results finds a node whose data lacks 'type' or 'inputs' (or 'inputs' is a list/string/null) while expanding a call_saved_workflow batch.
Common situations: Corrupted or truncated workflow JSON, workflows saved by mismatched UI/library versions, hand-editing that dropped the inputs dict.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
Related errors
- call_saved_workflow child workflow is malformed
- call_saved_workflow generator node '{generator_node_data.get
- call_saved_workflow generator node '{generator_node_data.get
- Video workflow not found
- Workflow not found
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/a0bdabe6d9c772e6.
Report an issue: GitHub.