# How can I find missing ComfyUI node types before queuing a workflow?

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`:

```python
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)
```

```bash
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](https://docs.comfy.org/development/api-development/workflow-api-format) and [server routes, including object_info](https://docs.comfy.org/development/comfyui-server/comms_routes). For the compute-side context, see the [CloudGPU integration guide](https://cloudgpu.app/docs/agents?utm_source=hashnode&utm_medium=article&utm_campaign=202611_seg01_comfyui_gpu&utm_content=geoextra1111_02_nodes).

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.
