invoke-ai/InvokeAI · error · UnsupportedWorkflowNodeError
Unsupported image generator type '{generator_type}'
Error message
Unsupported image generator type '{generator_type}' What it means
_resolve_image_generator validates the 'type' key inside an image_generator node's generator input value. Only 'image_generator_images_from_board' is supported; any other type string raises UnsupportedWorkflowNodeError. This guards the call_saved_workflow batch expansion path, which can only materialize board-based image generators.
Source
Thrown at invokeai/app/services/session_processor/workflow_call_batch.py:366
is_admin=False,
order_by=BoardRecordOrderBy.Name,
direction=SQLiteDirection.Ascending,
include_archived=True,
)
except Exception:
accessible_boards = []
if any(getattr(board, "board_id", None) == board_id for board in accessible_boards):
return
raise UnsupportedWorkflowNodeError(
f"call_saved_workflow caller does not have access to board '{board_id}' for image generator expansion"
)
def _resolve_image_generator(value: Mapping[str, Any], services: Any, user_id: str | None) -> list[ImageField]:
generator_type = value.get("type")
if generator_type != "image_generator_images_from_board":
raise UnsupportedWorkflowNodeError(f"Unsupported image generator type '{generator_type}'")
board_id = value.get("board_id")
if not isinstance(board_id, str) or not board_id:
return []
_assert_user_can_access_board(board_id, services, user_id)
category = value.get("category", "images")
categories = IMAGE_CATEGORIES if category == "images" else ASSETS_CATEGORIES
image_names = services.board_images.get_all_board_image_names_for_board(
board_id=board_id,
categories=categories,
is_intermediate=False,
)
return [ImageField(image_name=image_name) for image_name in image_names]
def _get_declared_generator_item_count(value: Mapping[str, Any]) -> int | None:
explicit_values = value.get("values")
if isinstance(explicit_values, list):
return len(explicit_values)View on GitHub (pinned to 0b6a024f2f)
Solutions
- Set the image_generator node's inputs.generator.value.type to 'image_generator_images_from_board' and provide a valid board_id
- Regenerate or re-export the workflow from the InvokeAI canvas UI so it uses a supported generator type
- Upgrade/downgrade InvokeAI so the workflow's generator type matches the version's supported set
Example fix
// before: generator value from an old export
{"id": "gen-1", "type": "image_generator", "data": {"inputs": {"generator": {"value": {"type": "images_from_board_v2"}}}}}
// after
{"id": "gen-1", "type": "image_generator", "data": {"inputs": {"generator": {"value": {"type": "image_generator_images_from_board", "board_id": "b-abc123"}}}}} Defensive patterns
Strategy: validation
Validate before calling
gen = node.get("data", {}).get("inputs", {}).get("generator", {}).get("value", {})
if gen.get("type") != "image_generator_images_from_board":
raise ValueError(f"unsupported generator type: {gen.get('type')!r}")
if not gen.get("board_id"):
raise ValueError("board_id missing for image_generator_images_from_board") Type guard
def is_board_image_generator(value: object) -> TypeGuard[dict]:
return isinstance(value, Mapping) and value.get("type") == "image_generator_images_from_board" and isinstance(value.get("board_id"), str) Try / catch
from invokeai.app.services.shared.workflow_graph_builder import UnsupportedWorkflowNodeError
try:
results = build_batch_child_workflow_session_results(...)
except UnsupportedWorkflowNodeError as e:
log.warning("workflow rejected: %s", e) Prevention
- Only use generator types shipped by your InvokeAI version
- Re-export workflows from the UI instead of hand-editing JSON
- Pin client and server versions so workflow formats match
When it happens
Trigger: Saving a workflow whose image_generator node has a generator value with type set to something other than 'image_generator_images_from_board' (e.g. an older or newer generator type), then running it through build_batch_child_workflow_session_results.
Common situations: Workflows created by newer InvokeAI versions carrying generator types this code path doesn't know; hand-edited workflow JSON with a wrong type string; plugin-provided generator types.
Related errors
- A saved workflow must be selected before executing call_save
- The selected saved workflow '${self.workflow_id}' could not
- Workflow return key must not be empty.
- Duplicate workflow return key '{key}'.
- Workflow return key '{key}' was not found.
AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29).
Data as JSON: /api/errors/526e1d22ccece897.
Report an issue: GitHub.