{
  "name": "Generate videos from text or images with Sora 2 AI - no watermark",
  "nodes": [
    {
      "id": "b9d07b90-8a2a-4694-9840-5f2eec29622f",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        1760,
        720
      ]
    },
    {
      "id": "934a8f9b-7453-4330-a1b3-767740796e50",
      "name": "Check: Has Image?",
      "type": "n8n-nodes-base.switch",
      "position": [
        2352,
        720
      ]
    },
    {
      "id": "16d896e9-8a31-4a37-93f3-473abffe1cce",
      "name": "Upload to ImgBB",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2592,
        1280
      ]
    },
    {
      "id": "6f28634f-ab74-4672-98b9-1fc1a9fb79a4",
      "name": "Download Video (Text)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3840,
        240
      ]
    },
    {
      "id": "d95cdf5b-169b-4639-8d3e-87d14a80c7b9",
      "name": "Download Video (Image)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3856,
        1264
      ]
    },
    {
      "id": "b9280f6d-b5ad-4abc-8fee-3c9c12914a29",
      "name": "Check Status (Text)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3312,
        256
      ]
    },
    {
      "id": "17299f12-9888-4ca7-9951-0f2de1d44a1f",
      "name": "Wait (Text)",
      "type": "n8n-nodes-base.wait",
      "position": [
        3088,
        256
      ]
    },
    {
      "id": "6c24bb65-9d0b-4d3b-824a-77f8f2836ca9",
      "name": "Is Ready? (Text)",
      "type": "n8n-nodes-base.if",
      "position": [
        3520,
        256
      ]
    },
    {
      "id": "ea9b3e2e-2d80-4468-bcc2-a823b5242a15",
      "name": "TEXT TO VIDEO",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2672,
        256
      ]
    },
    {
      "id": "4052e25f-b77d-4fd2-badd-10b032fc7688",
      "name": "Check Status (Image)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3376,
        1280
      ]
    },
    {
      "id": "b5da9b07-0eb6-469e-9a9b-a40a476ee563",
      "name": "Wait (Image)",
      "type": "n8n-nodes-base.wait",
      "position": [
        3152,
        1280
      ]
    },
    {
      "id": "7967ee62-47b9-48ab-8172-582fad8d55a0",
      "name": "Is Ready? (Image)",
      "type": "n8n-nodes-base.if",
      "position": [
        3584,
        1280
      ]
    },
    {
      "id": "6e9e77ad-02cb-486d-9428-b6522731cf78",
      "name": "IMAGE TO VIDEO",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2880,
        1280
      ]
    },
    {
      "id": "406e2a92-58d7-4672-a320-82637952211e",
      "name": "📖 Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1152,
        112
      ],
      "parameters": {
        "width": 484,
        "height": 1368,
        "content": "# 🎬 Sora 2 Video Generator - Setup Instructions\n\n***Generate professional AI videos without watermarks in minutes!***\n\n### 🎯 What You Can Do:\n✨ **Text-to-Video** - Type a description, get a video\n✨ **"
      }
    },
    {
      "id": "73aee6d6-ce0d-4adb-b0a3-9db9696f7b32",
      "name": "💬 Text-to-Video Path",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        128
      ],
      "parameters": {
        "width": 444,
        "height": 600,
        "content": "## �📝 TEXT-TO-VIDEO PATH\n\n**This section handles video generation from text descriptions only.**\n\n### 🔄 Flow:\n1️⃣ **TEXT TO VIDEO** node sends your prompt to Sora 2 API\n2️⃣ **Wait (Text)** pauses for "
      }
    },
    {
      "id": "7891cc94-231a-48f8-a4c3-ffe4b7e00b05",
      "name": "🎨 Image-to-Video Path",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        880
      ],
      "parameters": {
        "width": 428,
        "height": 624,
        "content": "## 🖼️ IMAGE-TO-VIDEO PATH\n\n**This section handles animating uploaded images.**\n\n### 🔄 Flow:\n1️⃣ **Upload to ImgBB** hosts the image and gets a URL\n2️⃣ **IMAGE TO VIDEO** sends image URL + prompt to So"
      }
    },
    {
      "id": "0fb99a43-113e-4a41-9e90-9c82e6ea36d6",
      "name": "🚦 Router Logic",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2592,
        480
      ],
      "parameters": {
        "width": 380,
        "height": 772,
        "content": "## 🔄 WORKFLOW ROUTER\n\n**This Switch node determines which path to take**\n\n### 🚦 Decision Logic:\nChecks if user uploaded an image:\n- **NO IMAGE** → Routes to TEXT TO VIDEO (upper path)\n- **HAS IMAGE** "
      }
    },
    {
      "id": "803cd5aa-ec81-4c60-b74f-22517131ce32",
      "name": "📬 Delivery Options",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3840,
        480
      ],
      "parameters": {
        "width": 532,
        "height": 768,
        "content": "## 📤 OUTPUT & DELIVERY\n\n**Final step: Get your video**\n\n### 📱 Telegram Delivery (Optional):\n**Setup:**\n1. Replace `YOUR_CHAT_ID` with your actual Telegram Chat ID\n2. Get it from @get_id_bot on Telegra"
      }
    },
    {
      "id": "e76db2ef-b37c-43d1-9058-58da2ff8bd6f",
      "name": "⏱️ Polling Explained",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3072,
        480
      ],
      "parameters": {
        "width": 608,
        "height": 768,
        "content": "## ⚙️ POLLING MECHANISM\n\n**Why the Wait → Check → Loop pattern?**\n\nSora 2 video generation isn't instant:\n- ⏱️ Standard quality: 30-60 seconds\n- 🎬 HD quality: 60-120 seconds\n\n### 🔄 How it works:\n\n1️⃣ "
      }
    },
    {
      "id": "8bcd406e-7e7c-441c-b75d-7be38cc4e36c",
      "name": "💡 Best Practices",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4432,
        144
      ],
      "parameters": {
        "width": 636,
        "height": 1296,
        "content": "# 💡 BEST PRACTICES & TIPS\n\n### 📝 Writing Great Prompts:\n\n**Be Specific:**\n❌ Bad: \"A cat\"\n✅ Good: \"A fluffy orange cat playing with yarn, slow motion, warm lighting\"\n\n**Include Details:**\n- Camera move"
      }
    },
    {
      "id": "2d5af1c1-d784-4a06-97a8-34548f365164",
      "name": "Send  Text to Video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        4176,
        240
      ]
    },
    {
      "id": "52608b31-843b-441b-9402-c5e45b4e8c07",
      "name": "Send Image to Video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        4192,
        1264
      ]
    }
  ],
  "connections": {
    "Wait (Text)": {
      "main": [
        [
          {
            "node": "Check Status (Text)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (Image)": {
      "main": [
        [
          {
            "node": "Check Status (Image)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TEXT TO VIDEO": {
      "main": [
        [
          {
            "node": "Wait (Text)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IMAGE TO VIDEO": {
      "main": [
        [
          {
            "node": "Wait (Image)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to ImgBB": {
      "main": [
        [
          {
            "node": "IMAGE TO VIDEO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Ready? (Text)": {
      "main": [
        [
          {
            "node": "Download Video (Text)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait (Text)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check: Has Image?": {
      "main": [
        [
          {
            "node": "TEXT TO VIDEO",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Upload to ImgBB",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Ready? (Image)": {
      "main": [
        [
          {
            "node": "Download Video (Image)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait (Image)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Check: Has Image?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Status (Text)": {
      "main": [
        [
          {
            "node": "Is Ready? (Text)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Status (Image)": {
      "main": [
        [
          {
            "node": "Is Ready? (Image)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Video (Text)": {
      "main": [
        [
          {
            "node": "Send  Text to Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Video (Image)": {
      "main": [
        [
          {
            "node": "Send Image to Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}