{
  "name": "Generate cinematic videos with OpenAI Sora and uploadtourl hosting",
  "nodes": [
    {
      "id": "a05ea6b6-03cd-4915-b716-2dd0b0b54e95",
      "name": "📋 Flow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        -416
      ],
      "parameters": {
        "width": 740,
        "height": 580,
        "content": "## 🎬 OpenAI Sora – Video Generation → Upload to URL\n\n**How it works:**\n1. Webhook receives a POST with `jobType`: **ecommerce** or **remix**\n2. **Route by Job Type** switch sends it down the correct p"
      }
    },
    {
      "id": "d3d90ba8-0ba0-41d0-941b-379b5034f085",
      "name": "Sticky – Entry & Routing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        192
      ],
      "parameters": {
        "width": 560,
        "height": 924,
        "content": "### 1️⃣ Webhook Entry & Job Router\n**Webhook – Receive Video Job** accepts a POST at `/sora-video-job` with `jobType` and generation parameters in the request body.\n**Route by Job Type Switch** reads "
      }
    },
    {
      "id": "e1b88a43-f58c-4dfb-acf0-6355204a40b3",
      "name": "Sticky – E-commerce Pipeline",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        176
      ],
      "parameters": {
        "width": 2480,
        "height": 500,
        "content": "### 2️⃣ Cinematic E-commerce Walkthrough\n**Build E-commerce Prompt** constructs the Sora prompt: cinematic product reveal, 360° rotation, studio lighting, close-ups on key features, premium brand aest"
      }
    },
    {
      "id": "3daf779d-1dd3-430c-b015-b361b60d3fbd",
      "name": "Sticky – Remix Pipeline",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        704
      ],
      "parameters": {
        "width": 2480,
        "height": 480,
        "content": "### 3️⃣ Dynamic Social Media Remix\n**Build Remix Prompt** constructs the Sora prompt: transforms the source image into a `remixStyle` visual (e.g. cyberpunk, anime, golden hour), adds cinematic camera"
      }
    },
    {
      "id": "19282007-01ef-4021-9702-4a6f521ea0da",
      "name": "Webhook – Receive Video Job",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        608
      ]
    },
    {
      "id": "aa7080f8-4aae-4f67-ba08-562f3d7e4180",
      "name": "Route by Job Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        320,
        608
      ]
    },
    {
      "id": "a66d6c39-f952-4303-b966-a7e7627e4a97",
      "name": "Respond – Error",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        336,
        928
      ]
    },
    {
      "id": "d1aaf53c-fa42-4eb4-bb77-42d3612824da",
      "name": "Build E-commerce Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        448
      ]
    },
    {
      "id": "70b20b5c-dd27-44e7-92ae-278c26bd2553",
      "name": "Sora – Submit E-commerce Job",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        448
      ]
    },
    {
      "id": "e305f297-4187-4df1-a6c7-85f8d60e01a5",
      "name": "Store E-commerce Job ID",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        448
      ]
    },
    {
      "id": "a7a3bb94-30d6-4da2-932e-0f7c96f990cc",
      "name": "Wait 20s – E-commerce",
      "type": "n8n-nodes-base.wait",
      "position": [
        1392,
        448
      ]
    },
    {
      "id": "6e696d0f-5dba-4c9d-ba98-7a0bb6ed5eea",
      "name": "Sora – Poll E-commerce Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1632,
        448
      ]
    },
    {
      "id": "e13f76b5-6b3b-4386-b6cc-13c7bebeb947",
      "name": "Check E-commerce Done",
      "type": "n8n-nodes-base.if",
      "position": [
        1872,
        448
      ]
    },
    {
      "id": "afab4d94-8cc3-479c-8ff8-1f3ff6263bf6",
      "name": "Fetch E-commerce Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2112,
        368
      ]
    },
    {
      "id": "1ba3c0f3-a981-4bec-b377-5b4af8a1a192",
      "name": "Build E-commerce Response",
      "type": "n8n-nodes-base.code",
      "position": [
        2608,
        368
      ]
    },
    {
      "id": "ce0c666a-fde5-4e5a-b65f-b3932eb9e564",
      "name": "Respond to Webhook – E-commerce",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2848,
        368
      ]
    },
    {
      "id": "f371d4b1-a647-42b6-a007-756f60c4ca30",
      "name": "Build Remix Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        960
      ]
    },
    {
      "id": "2549243b-f77b-4f20-bc13-8cffa7c586d5",
      "name": "Sora – Submit Remix Job",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        848,
        960
      ]
    },
    {
      "id": "434029b0-9ca9-4081-9760-5929a899632e",
      "name": "Store Remix Job ID",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        960
      ]
    },
    {
      "id": "6cea91b0-5583-4062-8e74-e0de974d57af",
      "name": "Wait 20s – Remix",
      "type": "n8n-nodes-base.wait",
      "position": [
        1376,
        960
      ]
    },
    {
      "id": "ccc8ec96-c821-46e7-a38e-58b2f4585e40",
      "name": "Sora – Poll Remix Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1648,
        960
      ]
    },
    {
      "id": "7665ced7-b14a-4e64-a607-31b48ae3ab92",
      "name": "Check Remix Done",
      "type": "n8n-nodes-base.if",
      "position": [
        1888,
        960
      ]
    },
    {
      "id": "7beeb3d4-c4d7-474f-bfbc-5123c3d66cc7",
      "name": "Fetch Remix Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2128,
        944
      ]
    },
    {
      "id": "9bddd891-bcc3-4321-8f84-43c087f514fc",
      "name": "Build Remix Response",
      "type": "n8n-nodes-base.code",
      "position": [
        2576,
        944
      ]
    },
    {
      "id": "a8fcc0ba-1093-4fe8-8718-98947247d385",
      "name": "Respond to Webhook – Remix",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2832,
        944
      ]
    },
    {
      "id": "23ee271e-8b4f-46a1-875a-81d18e259f21",
      "name": "Upload to URL",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        2368,
        368
      ]
    },
    {
      "id": "41c3168b-2bb4-4e41-a8d2-bb7fce5f45b0",
      "name": "Upload to URL1",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        2352,
        944
      ]
    }
  ],
  "connections": {
    "Upload to URL": {
      "main": [
        [
          {
            "node": "Build E-commerce Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to URL1": {
      "main": [
        [
          {
            "node": "Build Remix Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Remix Done": {
      "main": [
        [
          {
            "node": "Fetch Remix Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 20s – Remix",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Remix Video": {
      "main": [
        [
          {
            "node": "Upload to URL1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Job Type": {
      "main": [
        [
          {
            "node": "Build E-commerce Prompt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Remix Prompt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond – Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Remix Prompt": {
      "main": [
        [
          {
            "node": "Sora – Submit Remix Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store Remix Job ID": {
      "main": [
        [
          {
            "node": "Wait 20s – Remix",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 20s – Remix": {
      "main": [
        [
          {
            "node": "Sora – Poll Remix Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Remix Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook – Remix",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check E-commerce Done": {
      "main": [
        [
          {
            "node": "Fetch E-commerce Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 20s – E-commerce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch E-commerce Video": {
      "main": [
        [
          {
            "node": "Upload to URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build E-commerce Prompt": {
      "main": [
        [
          {
            "node": "Sora – Submit E-commerce Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store E-commerce Job ID": {
      "main": [
        [
          {
            "node": "Wait 20s – E-commerce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 20s – E-commerce": {
      "main": [
        [
          {
            "node": "Sora – Poll E-commerce Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build E-commerce Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook – E-commerce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sora – Submit Remix Job": {
      "main": [
        [
          {
            "node": "Store Remix Job ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sora – Poll Remix Status": {
      "main": [
        [
          {
            "node": "Check Remix Done",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook – Receive Video Job": {
      "main": [
        [
          {
            "node": "Route by Job Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sora – Submit E-commerce Job": {
      "main": [
        [
          {
            "node": "Store E-commerce Job ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sora – Poll E-commerce Status": {
      "main": [
        [
          {
            "node": "Check E-commerce Done",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}