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

  1. Set the image_generator node's inputs.generator.value.type to 'image_generator_images_from_board' and provide a valid board_id
  2. Regenerate or re-export the workflow from the InvokeAI canvas UI so it uses a supported generator type
  3. 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

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


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