I work on CloudGPU. Compare the workflow's API-format class_type values with the node inventory of the ComfyUI server you intend to use. This distinguishes a node-registration problem from a generation failure before submitting anything to the queue.
1. Export the correct workflow format
In the frontend, use File → Export Workflow (API). A normal editor save includes layout information and is not the same data structure. Keep your original editor save separately.
From your own existing ComfyUI server, open its documented GET /object_info route through your existing access method and save the JSON response as object_info.json. Do not expose a service publicly just to obtain the inventory. Use the inventory from the intended server, not a different installation.
2. Run a local comparison
Save the exported graph as workflow_api.json and this script as check_nodes.py:
import json
from pathlib import Path
def missing_types(graph, inventory):
if not isinstance(graph, dict) or not graph:
raise ValueError("Expected a nonempty API-format workflow")
if not isinstance(inventory, dict):
raise ValueError("Expected an object_info mapping")
missing = {}
for node_id, node in graph.items():
if not isinstance(node, dict):
raise ValueError(f"Invalid node: {node_id}")
kind = node.get("class_type")
if not isinstance(kind, str) or not kind:
raise ValueError(f"No class_type at node {node_id}")
if not isinstance(node.get("inputs"), dict):
raise ValueError(f"No inputs mapping at node {node_id}")
if kind not in inventory:
missing[str(node_id)] = kind
return missing
if __name__ == "__main__":
graph = json.loads(Path("workflow_api.json").read_text())
inventory = json.loads(Path("object_info.json").read_text())
missing = missing_types(graph, inventory)
print(json.dumps(missing, indent=2))
raise SystemExit(1 if missing else 0)
python3 check_nodes.py
A missing type can mean a package is absent, a node import failed, or the workflow expects a different node revision. Read that server's import logs and compare the workflow author's stated dependencies before changing anything. The checker deliberately does not install packages or execute a graph.
3. Understand what a passing inventory does not prove
Matching names do not establish compatible input values, connected outputs or model files. Check those separately before an authorized run. Re-export after an intentional graph edit instead of replacing unfamiliar node names in JSON by guesswork.
Official references: API-format export and server routes, including object_info. For the compute-side context, see the CloudGPU integration guide.
Related CloudGPU video: How to Make an AI Short Drama Without Wasting GPU Minutes. A short-drama workflow is a practical reason to inspect a graph before scheduling its renders; the video is context, not a test of this checker.
https://www.youtube.com/watch?v=EOc5rh8MfVk
This is an offline preflight recipe with a syntax-checked script. No generation or rented-GPU test was performed for this answer.
Comments
Join the discussionNo comments yet. Be the first to comment.