# Issue: Specified workflow does not appear to be an API workflow json

**URL:** <https://forum.comfy.org/t/issue-specified-workflow-does-not-appear-to-be-an-api-workflow-json/2567>\
**Category:** Custom Nodes\
**Tags:** issue\
**Created:** [May 11, 2025, 5:27pm UTC](https://forum.comfy.org/t/issue-specified-workflow-does-not-appear-to-be-an-api-workflow-json/2567 "2025-05-11T17:27:41Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![nilayy](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@nilayy](https://forum.comfy.org/u/nilayy)\
**Post date:** [May 11, 2025, 5:27pm UTC](https://forum.comfy.org/t/issue-specified-workflow-does-not-appear-to-be-an-api-workflow-json/2567/1 "2025-05-11T17:27:41Z")

</div>

Hi, I’m getting `Specified workflow does not appear to be an API workflow JSON` when I try to run a workflow. I’m using this workflow [ComfyUI-FramePackWrapper/example\_workflows/framepack\_hv\_example.json at main · kijai/ComfyUI-FramePackWrapper · GitHub](https://github.com/kijai/ComfyUI-FramePackWrapper/blob/main/example_workflows/framepack_hv_example.json) and its correct

```auto
from beam import Image, endpoint, Output, Volume
import subprocess

def setup_comfyui_environment():
    image = (
        Image()
        .add_commands(["apt update && apt install git -y"])
        .add_python_packages(
            [
                "fastapi[standard]==0.115.4",
                "comfy-cli==1.3.5",
                "huggingface_hub[hf_transfer]==0.26.2",
                "opencv-python",
            ]
        )
        .add_commands(
            [
                "apt update && apt install -y libgl1 libglib2.0-0",
            ]
        )
        .add_commands(
            [
                "comfy --skip-prompt install --nvidia --version 0.3.10",
            ]
        )
    )

    # Install ComfyUI-FramePackWrapper custom node
    image = image.add_commands(
        [
            "rm -rf /root/comfy/ComfyUI/custom_nodes/ComfyUI-FramePackWrapper || true",
            "cd /root/comfy/ComfyUI/custom_nodes && "
            "git clone https://github.com/kijai/ComfyUI-FramePackWrapper.git && "
            "cd ComfyUI-FramePackWrapper && "
            "pip install -r requirements.txt",
        ]
    )

    # Install VideoHelperSuite
    image = image.add_commands(
        [
            "cd /root/comfy/ComfyUI/custom_nodes && "
            "git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git && "
            "cd ComfyUI-VideoHelperSuite && "
            "pip install -r requirements.txt"
        ]
    )

    # Install KJNodes
    image = image.add_commands(
        [
            "cd /root/comfy/ComfyUI/custom_nodes && "
            "git clone https://github.com/kijai/ComfyUI-KJNodes.git && "
            "cd ComfyUI-KJNodes && "
            "pip install -r requirements.txt"
        ]
    )

    # Install ComfyUI-essentials
    image = image.add_commands(
        [
            "cd /root/comfy/ComfyUI/custom_nodes && "
            "git clone https://github.com/cubiq/ComfyUI_essentials.git"
        ]
    )

    return image

image = setup_comfyui_environment()

def download_models():
    """Download all necessary models for FramePack workflow"""
    from huggingface_hub import snapshot_download, hf_hub_download
    import os

    os.makedirs("/root/comfy/ComfyUI/models/diffusion_models", exist_ok=True)
    os.makedirs("/root/comfy/ComfyUI/models/text_encoders", exist_ok=True)
    os.makedirs("/root/comfy/ComfyUI/models/clip_vision", exist_ok=True)
    os.makedirs("/root/comfy/ComfyUI/models/vae", exist_ok=True)

    # 1. Diffusion model 
    diffusion_model = hf_hub_download(
        repo_id="Kijai/HunyuanVideo_comfy",
        filename="FramePackI2V_HY_fp8_e4m3fn.safetensors",
        cache_dir="/comfy-cache",
    )
    subprocess.run(
        f"ln -s {diffusion_model} /root/comfy/ComfyUI/models/diffusion_models/FramePackI2V_HY_fp8_e4m3fn.safetensors",
        shell=True,
        check=True,
    )

    # 2. CLIP Vision model
    clip_vision = hf_hub_download(
        repo_id="Comfy-Org/sigclip_vision_384",
        filename="sigclip_vision_patch14_384.safetensors",
        cache_dir="/comfy-cache",
    )
    subprocess.run(
        f"ln -s {clip_vision} /root/comfy/ComfyUI/models/clip_vision/sigclip_vision_patch14_384.safetensors",
        shell=True,
        check=True,
    )

    # 3. Text Encoders
    clip_l = hf_hub_download(
        repo_id="Comfy-Org/HunyuanVideo_repackaged",
        filename="split_files/text_encoders/clip_l.safetensors",
        cache_dir="/comfy-cache",
    )
    subprocess.run(
        f"ln -s {clip_l} /root/comfy/ComfyUI/models/text_encoders/clip_l.safetensors",
        shell=True,
        check=True,
    )

    llava_llama3 = hf_hub_download(
        repo_id="Comfy-Org/HunyuanVideo_repackaged",
        filename="split_files/text_encoders/llava_llama3_fp16.safetensors",
        cache_dir="/comfy-cache",
    )
    subprocess.run(
        f"ln -s {llava_llama3} /root/comfy/ComfyUI/models/text_encoders/llava_llama3_fp16.safetensors",
        shell=True,
        check=True,
    )

    # 4. VAE model
    vae = hf_hub_download(
        repo_id="Comfy-Org/HunyuanVideo_repackaged",
        filename="split_files/vae/hunyuan_video_vae_bf16.safetensors",
        cache_dir="/comfy-cache",
    )
    subprocess.run(
        f"ln -s {vae} /root/comfy/ComfyUI/models/vae/hunyuan_video_vae_bf16.safetensors",
        shell=True,
        check=True,
    )

    return {"status": "Models downloaded and linked successfully"}

@endpoint(
    name="comfy",
    image=image,
    on_start=download_models,
    cpu=12,
    memory="32Gi",
    gpu="A10G",
)
def handler():
    import subprocess
    import json
    from pathlib import Path
    import uuid
    import requests

    WORKFLOW_TEMPLATE = Path( __file__ ).parent / "workflow_api.json"
  

    # Load the workflow template
    workflow_data = json.loads(WORKFLOW_TEMPLATE.read_text())

    nodes = workflow_data.get("nodes", [])

    print("Nodes in workflow:", nodes)

    try:
        cmd = f"comfy run --workflow /mnt/code/workflow_api.json --wait --timeout 1800 --verbose"
        subprocess.run(cmd, shell=True, check=True)
    except subprocess.CalledProcessError as e:
        return "Error during inference: " + str(e)

```
