AutomationFlowsAI & RAG › Comfyui: Wan 2.2 14b - Text 2 Video

Comfyui: Wan 2.2 14b - Text 2 Video

ComfyUI: wan 2.2 14b - text 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 12 nodes.

Event trigger★★★★☆ complexity12 nodesForm TriggerHTTP RequestStop And Error
AI & RAG Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:
Comfyui: Wan 2.2 14b - Text 2 Video — n8n workflow card showing Form Trigger, HTTP Request, Stop And Error integration

This workflow follows the Form Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "ComfyUI: wan 2.2 14b - text 2 video",
  "nodes": [
    {
      "parameters": {
        "formTitle": "Upload reference images",
        "formFields": {
          "values": [
            {
              "fieldLabel": "prompt",
              "fieldType": "textarea",
              "placeholder": "what should happen on the video",
              "requiredField": true
            },
            {
              "fieldLabel": "Negative prompt",
              "placeholder": "optional"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.2,
      "position": [
        -640,
        -60
      ],
      "id": "0d1fcd46-f8f4-427c-9907-71b8b64d77b3",
      "name": "On form submission"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "7d55d6da-a78c-4a28-9343-0ea9035a0aa3",
              "name": "COMFY_URL",
              "value": "={{   ((u) => {   let s = u.trim();   if (!/^https?:\\/\\//i.test(s)) s = 'https://' + s;   const parts = s.split('/');   return parts[0] + '//' + parts[2]; })($json.comfyui_url)  }}",
              "type": "string"
            },
            {
              "id": "c491a696-6081-4e42-98f5-0c3b75c16edc",
              "name": "NEGATIVE_PROMPT",
              "value": "={{ $('On form submission').item.json['Negative prompt'] || $json.negative_prompt }}",
              "type": "string"
            },
            {
              "id": "e179a11b-ab0b-4772-b151-10b0b7d49a8c",
              "name": "PROMPT",
              "value": "={{ $('On form submission').item.json.prompt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -140,
        -60
      ],
      "id": "bf6f0f6b-1c91-4d15-b628-682dc8fa5e8a",
      "name": "Setup defaults"
    },
    {
      "parameters": {
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/history/{{ $('Start the workflow with ComfyUI').first().json.prompt_id }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        480,
        -60
      ],
      "id": "6852c01c-1b88-44ef-9668-01ab6e3bea05",
      "name": "Get video generation status",
      "retryOnFail": true
    },
    {
      "parameters": {
        "amount": 10
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        280,
        -60
      ],
      "id": "ef85797e-33d5-4df8-9839-a391b59d5b38",
      "name": "Wait until the video gets generated"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "5e89df7d-4c0e-4bd4-8a84-b1e28bdb1f7e",
              "leftValue": "={{ $json.keys().length > 0 && $json[$('Start the workflow with ComfyUI').item.json.prompt_id] && $json[$('Start the workflow with ComfyUI').item.json.prompt_id].status.completed }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            },
            {
              "id": "354e3206-bbe3-481d-876b-255eed39f7cf",
              "leftValue": "",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        700,
        -60
      ],
      "id": "a3e3063e-be10-4a04-9485-f8d2138304b2",
      "name": "Completed?"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "9bfcdffd-8c7c-407d-b95c-83f8aa104845",
              "leftValue": "={{ $json[$('Start the workflow with ComfyUI').item.json.prompt_id].status.status_str === 'success' }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        980,
        -80
      ],
      "id": "41f90dd6-3849-4bdc-b6e5-d9d653eda93a",
      "name": "Success?"
    },
    {
      "parameters": {
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/view",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "type",
              "value": "output"
            },
            {
              "name": "filename",
              "value": "={{ $('Get video generation status').last().json[$('Start the workflow with ComfyUI').item.json.prompt_id].outputs.values().map(item => item.images).flat(Infinity).find(item => item.type === 'output').filename }}"
            },
            {
              "name": "subfolder",
              "value": "={{ $('Get video generation status').last().json[$('Start the workflow with ComfyUI').item.json.prompt_id].outputs.values().map(item => item.images).flat(Infinity).find(item => item.type === 'output').subfolder }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {}
          ]
        },
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1220,
        -240
      ],
      "id": "29bbb40d-bee6-4125-9483-8aee0d75cc08",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "errorMessage": "An error occoured while generating the image"
      },
      "type": "n8n-nodes-base.stopAndError",
      "typeVersion": 1,
      "position": [
        1220,
        20
      ],
      "id": "07743972-4f0e-407e-a6c2-0273578c80a3",
      "name": "Stop and Error"
    },
    {
      "parameters": {
        "content": "# Configure me",
        "height": 420,
        "width": 260,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -460,
        -240
      ],
      "id": "1ea93eb9-a495-4b5f-8423-04d7cd406abe",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "1ece166a-0536-4c3e-bf1f-e0d4ff300169",
              "name": "workflow",
              "value": "={\n  \"6\": {\n    \"inputs\": {\n      \"text\": \"${PROMPT}\",\n      \"clip\": [\n        \"38\",\n        0\n      ]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"CLIP Text Encode (Positive Prompt)\"\n    }\n  },\n  \"7\": {\n    \"inputs\": {\n      \"text\": \"${NEGATIVE_PROMPT}\",\n      \"clip\": [\n        \"38\",\n        0\n      ]\n    },\n    \"class_type\": \"CLIPTextEncode\",\n    \"_meta\": {\n      \"title\": \"CLIP Text Encode (Negative Prompt)\"\n    }\n  },\n  \"8\": {\n    \"inputs\": {\n      \"samples\": [\n        \"58\",\n        0\n      ],\n      \"vae\": [\n        \"39\",\n        0\n      ]\n    },\n    \"class_type\": \"VAEDecode\",\n    \"_meta\": {\n      \"title\": \"VAE Decode\"\n    }\n  },\n  \"37\": {\n    \"inputs\": {\n      \"unet_name\": \"wan2.2_t2v_high_noise_14B_fp16.safetensors\",\n      \"weight_dtype\": \"default\"\n    },\n    \"class_type\": \"UNETLoader\",\n    \"_meta\": {\n      \"title\": \"Load Diffusion Model\"\n    }\n  },\n  \"38\": {\n    \"inputs\": {\n      \"clip_name\": \"umt5_xxl_fp8_e4m3fn_scaled.safetensors\",\n      \"type\": \"wan\",\n      \"device\": \"default\"\n    },\n    \"class_type\": \"CLIPLoader\",\n    \"_meta\": {\n      \"title\": \"Load CLIP\"\n    }\n  },\n  \"39\": {\n    \"inputs\": {\n      \"vae_name\": \"wan_2.1_vae.safetensors\"\n    },\n    \"class_type\": \"VAELoader\",\n    \"_meta\": {\n      \"title\": \"Load VAE\"\n    }\n  },\n  \"54\": {\n    \"inputs\": {\n      \"shift\": 8.000000000000002,\n      \"model\": [\n        \"37\",\n        0\n      ]\n    },\n    \"class_type\": \"ModelSamplingSD3\",\n    \"_meta\": {\n      \"title\": \"ModelSamplingSD3\"\n    }\n  },\n  \"55\": {\n    \"inputs\": {\n      \"shift\": 8,\n      \"model\": [\n        \"56\",\n        0\n      ]\n    },\n    \"class_type\": \"ModelSamplingSD3\",\n    \"_meta\": {\n      \"title\": \"ModelSamplingSD3\"\n    }\n  },\n  \"56\": {\n    \"inputs\": {\n      \"unet_name\": \"wan2.2_t2v_low_noise_14B_fp16.safetensors\",\n      \"weight_dtype\": \"default\"\n    },\n    \"class_type\": \"UNETLoader\",\n    \"_meta\": {\n      \"title\": \"Load Diffusion Model\"\n    }\n  },\n  \"57\": {\n    \"inputs\": {\n      \"add_noise\": \"enable\",\n      \"noise_seed\": {{ (() => {\n  const max = 0xFFFFFFFF - 1;\n  const seed = Math.floor(Math.random() * max) + 1;\n  return seed;\n})() }},\n      \"steps\": 20,\n      \"cfg\": 3.5,\n      \"sampler_name\": \"euler\",\n      \"scheduler\": \"simple\",\n      \"start_at_step\": 0,\n      \"end_at_step\": 10,\n      \"return_with_leftover_noise\": \"enable\",\n      \"model\": [\n        \"54\",\n        0\n      ],\n      \"positive\": [\n        \"6\",\n        0\n      ],\n      \"negative\": [\n        \"7\",\n        0\n      ],\n      \"latent_image\": [\n        \"59\",\n        0\n      ]\n    },\n    \"class_type\": \"KSamplerAdvanced\",\n    \"_meta\": {\n      \"title\": \"KSampler (Advanced)\"\n    }\n  },\n  \"58\": {\n    \"inputs\": {\n      \"add_noise\": \"disable\",\n      \"noise_seed\": 0,\n      \"steps\": 20,\n      \"cfg\": 3.5,\n      \"sampler_name\": \"euler\",\n      \"scheduler\": \"simple\",\n      \"start_at_step\": 10,\n      \"end_at_step\": 10000,\n      \"return_with_leftover_noise\": \"disable\",\n      \"model\": [\n        \"55\",\n        0\n      ],\n      \"positive\": [\n        \"6\",\n        0\n      ],\n      \"negative\": [\n        \"7\",\n        0\n      ],\n      \"latent_image\": [\n        \"57\",\n        0\n      ]\n    },\n    \"class_type\": \"KSamplerAdvanced\",\n    \"_meta\": {\n      \"title\": \"KSampler (Advanced)\"\n    }\n  },\n  \"59\": {\n    \"inputs\": {\n      \"width\": 1280,\n      \"height\": 704,\n      \"length\": 81,\n      \"batch_size\": 1\n    },\n    \"class_type\": \"EmptyHunyuanLatentVideo\",\n    \"_meta\": {\n      \"title\": \"EmptyHunyuanLatentVideo\"\n    }\n  },\n  \"60\": {\n    \"inputs\": {\n      \"fps\": 16,\n      \"images\": [\n        \"8\",\n        0\n      ]\n    },\n    \"class_type\": \"CreateVideo\",\n    \"_meta\": {\n      \"title\": \"Create Video\"\n    }\n  },\n  \"61\": {\n    \"inputs\": {\n      \"filename_prefix\": \"video/ComfyUI\",\n      \"format\": \"auto\",\n      \"codec\": \"auto\",\n      \"video\": [\n        \"60\",\n        0\n      ]\n    },\n    \"class_type\": \"SaveVideo\",\n    \"_meta\": {\n      \"title\": \"Save Video\"\n    }\n  }\n}",
              "type": "string"
            },
            {
              "id": "92df0709-c03c-400e-b2ac-1a8e3aff7416",
              "name": "comfyui_url",
              "value": "YOUR_COMFYUI_URL",
              "type": "string"
            },
            {
              "id": "fb621130-6eac-41ab-b514-576a0275f6b1",
              "name": "negative_prompt",
              "value": "\u8272\u8c03\u8273\u4e3d\uff0c\u8fc7\u66dd\uff0c\u9759\u6001\uff0c\u7ec6\u8282\u6a21\u7cca\u4e0d\u6e05\uff0c\u5b57\u5e55\uff0c\u98ce\u683c\uff0c\u4f5c\u54c1\uff0c\u753b\u4f5c\uff0c\u753b\u9762\uff0c\u9759\u6b62\uff0c\u6574\u4f53\u53d1\u7070\uff0c\u6700\u5dee\u8d28\u91cf\uff0c\u4f4e\u8d28\u91cf\uff0cJPEG\u538b\u7f29\u6b8b\u7559\uff0c\u4e11\u964b\u7684\uff0c\u6b8b\u7f3a\u7684\uff0c\u591a\u4f59\u7684\u624b\u6307\uff0c\u753b\u5f97\u4e0d\u597d\u7684\u624b\u90e8\uff0c\u753b\u5f97\u4e0d\u597d\u7684\u8138\u90e8\uff0c\u7578\u5f62\u7684\uff0c\u6bc1\u5bb9\u7684\uff0c\u5f62\u6001\u7578\u5f62\u7684\u80a2\u4f53\uff0c\u624b\u6307\u878d\u5408\uff0c\u9759\u6b62\u4e0d\u52a8\u7684\u753b\u9762\uff0c\u6742\u4e71\u7684\u80cc\u666f\uff0c\u4e09\u6761\u817f\uff0c\u80cc\u666f\u4eba\u5f88\u591a\uff0c\u5012\u7740\u8d70",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -380,
        -60
      ],
      "id": "0d28019c-dab7-4b1c-96e7-e770e044bf98",
      "name": "Configure me"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Setup defaults').first().json.COMFY_URL }}/prompt",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"client_id\": \"n8n\",\n  \"prompt\": {{ \n\n    $('Configure me').item.json.workflow\n      .replace('${PROMPT}', $('Setup defaults').first().json.PROMPT)\n      .replace('${NEGATIVE_PROMPT}', $('Setup defaults').first().json.NEGATIVE_PROMPT) \n\n}}\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        40,
        -60
      ],
      "id": "f03fab10-b7b1-4d08-8ef4-f109286f130f",
      "name": "Start the workflow with ComfyUI"
    },
    {
      "parameters": {
        "content": "# \ud83d\udcda [Join our Skool community for support, premium content and more!](https://www.skool.com/ai-agents-az/about?w9)\n\n## Get premium variations of this workflow!\n\n## Be part of a growing community and help us create more content like this",
        "height": 300,
        "width": 700,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -460,
        -580
      ],
      "id": "e69bfaf9-6ebd-4939-aedb-fef81baa534a",
      "name": "Sticky Note16"
    }
  ],
  "connections": {
    "On form submission": {
      "main": [
        [
          {
            "node": "Configure me",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup defaults": {
      "main": [
        [
          {
            "node": "Start the workflow with ComfyUI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video generation status": {
      "main": [
        [
          {
            "node": "Completed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait until the video gets generated": {
      "main": [
        [
          {
            "node": "Get video generation status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Completed?": {
      "main": [
        [
          {
            "node": "Success?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait until the video gets generated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success?": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configure me": {
      "main": [
        [
          {
            "node": "Setup defaults",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start the workflow with ComfyUI": {
      "main": [
        [
          {
            "node": "Wait until the video gets generated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "bc644c06-4d2c-480a-b2d5-246f136837b7",
  "id": "kQz7bt4LsJxe0z4A",
  "tags": []
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

ComfyUI: wan 2.2 14b - text 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 12 nodes.

Source: https://github.com/gyoridavid/ai_agents_az/blob/main/episode_20/n8n_wan_2.2_14b_t2v.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

ComfyUI: wan 2.2 14b - image 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 14 nodes.

Form Trigger, HTTP Request, Stop And Error
AI & RAG

ComfyUI: wan 2.2 5b - image 2 video. Uses formTrigger, httpRequest, stopAndError. Event-driven trigger; 14 nodes.

Form Trigger, HTTP Request, Stop And Error
AI & RAG

This n8n template demonstrates how to automatically process PDF purchase orders received via email and convert them into sales orders in Adobe Commerce (Magento 2) using Company Credit as the payment

HTTP Request, Form Trigger, Chat Trigger +5
AI & RAG

Episode 11: AI shorts factory app. Uses httpRequest, googleSheets, lmChatOpenAi, lmChatOllama. Event-driven trigger; 96 nodes.

HTTP Request, Google Sheets, OpenAI Chat +15
AI & RAG

This template attempts to replicate OpenAI's DeepResearch feature which, at time of writing, is only available to their pro subscribers.

Output Parser Structured, OpenAI Chat, Form Trigger +8