---
name: comfyui_object_info
kind: function
lang: py
domain: ml
version: "1.0.0"
purity: impure
signature: "def comfyui_object_info(server: str = \"127.0.0.1:8188\", node_class: str | None = None, timeout: float = 30.0) -> dict"
description: "Consulta el catalogo de nodos de un servidor ComfyUI via GET /object_info (o un nodo concreto con /object_info/{node_class}). Devuelve specs de inputs y valores enumerados (ej. lista de checkpoints visibles). Impura: HTTP GET, solo stdlib."
tags: [comfyui, ml, image-generation, stable-diffusion, introspection, http]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: server
    desc: "host:port del servidor ComfyUI sin esquema (default '127.0.0.1:8188')."
  - name: node_class
    desc: "Si se pasa, consulta solo ese class_type via /object_info/{node_class} (ej. 'CheckpointLoaderSimple'). None devuelve el catalogo completo."
  - name: timeout
    desc: "Timeout de la peticion HTTP en segundos."
output: "dict del catalogo. Con node_class=None es {class_type: spec, ...} (cientos de nodos). Con node_class set, {class_type: spec} de un solo item. Cada spec tiene input.required/optional con tipos y enums; ej. info['CheckpointLoaderSimple']['input']['required']['ckpt_name'][0] es la lista de checkpoints."
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/ml/comfyui_object_info.py"
---

## Ejemplo

```python
import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_object_info import comfyui_object_info

info = comfyui_object_info()                       # catalogo completo
print(len(info))                                   # ~792 nodos
ckpts = info["CheckpointLoaderSimple"]["input"]["required"]["ckpt_name"][0]
print(ckpts)                                       # ['v1-5-pruned-emaonly-fp16.safetensors']

ks = comfyui_object_info(node_class="KSampler")    # solo un nodo
print(list(ks.keys()))                             # ['KSampler']
```

O lanzable directo con: `./fn run comfyui_object_info` (imprime n nodos + checkpoints visibles).

## Cuando usarla

Antes de construir o enviar un workflow: descubre que checkpoints, samplers,
schedulers y nodos existen en el servidor concreto. Usala para validar que el
`ckpt_name` que vas a poner en `comfyui_build_txt2img_workflow` existe, o para
explorar nodos disponibles (LoRA loaders, upscalers, ControlNet) antes de
componer workflows mas ricos.

## Gotchas

- El catalogo completo es grande (cientos de nodos): preferir `node_class` si
  solo necesitas uno.
- Los valores enumerados (checkpoints, vaes, loras) reflejan lo que el SERVIDOR
  ve en sus carpetas models/, no lo que hay en tu disco local. Si acabas de
  copiar un checkpoint, el servidor puede no haberlo escaneado hasta reiniciar o
  refrescar.
- Lanza RuntimeError si ComfyUI no esta arriba (conexion rechazada) o responde
  con error. El catalogo solo esta disponible con el servidor corriendo.
