{
  "name": "Generate and host AI images on your CDN with Gemini Imagen 3 and Upload to URL",
  "nodes": [
    {
      "id": "a6a8404f-b2cb-4889-b846-ef9019583595",
      "name": "📋 Flow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -368
      ],
      "parameters": {
        "width": 720,
        "height": 556,
        "content": "## 🖼️ Gemini Imagen 3 – Image Generation → Upload to URL\n\n**How it works:**\n1. Webhook receives a POST request with `jobType`: **localize** or **mockup**\n2. **Route by Job Type** switch sends it down "
      }
    },
    {
      "id": "dee009cf-b726-43ab-a744-779843852d31",
      "name": "Sticky – Entry & Routing",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        320
      ],
      "parameters": {
        "width": 560,
        "height": 668,
        "content": "### 1️⃣ Webhook Entry & Job Router\n**Webhook – Receive Image Job** accepts a POST at `/gemini-image-job` with `jobType` and generation parameters in the request body.\n**Route by Job Type Switch** read"
      }
    },
    {
      "id": "8e022129-2430-4209-bed9-9e13de95f776",
      "name": "Sticky – Localize Pipeline",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        240
      ],
      "parameters": {
        "width": 1504,
        "height": 392,
        "content": "### 2️⃣ Localised Marketing Campaign\n**Build Localize Prompt** code node constructs the Imagen 3 prompt: recreate the master image with all embedded text accurately translated into `targetLanguage`, p"
      }
    },
    {
      "id": "639f2425-b883-4a43-a1bd-fe8c03ee8861",
      "name": "Sticky – Mockup Pipeline",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        672
      ],
      "parameters": {
        "width": 1584,
        "height": 332,
        "content": "### 3️⃣ High-Fidelity Product Mockup\n**Build Mockup Prompt** code node constructs the Imagen 3 prompt: photorealistic `productType` with the brand logo/pattern applied using `colorScheme`, studio ligh"
      }
    },
    {
      "id": "b9681a8a-149d-4743-9e30-b1b9ac25c29c",
      "name": "Webhook – Receive Image Job",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -32,
        608
      ]
    },
    {
      "id": "7bdb63c2-e880-4ffd-8e00-010deec889a5",
      "name": "Route by Job Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        320,
        592
      ]
    },
    {
      "id": "5ecbbc02-0a8b-46e8-a2a2-ade5fa4f02f2",
      "name": "Respond – Error",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        320,
        800
      ]
    },
    {
      "id": "25e9153d-88a4-44c0-ac84-13874e46583b",
      "name": "Build Localize Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        432
      ]
    },
    {
      "id": "1ed05274-5d9d-488c-ba1c-3d495533d202",
      "name": "Gemini Imagen 3 – Localize",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        432
      ]
    },
    {
      "id": "1a22bb68-eea1-47eb-8ddc-05af39fd9ebf",
      "name": "Decode Localize Image",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        432
      ]
    },
    {
      "id": "e0281466-27cd-4873-b85e-165c864e41e0",
      "name": "Build Localize Response",
      "type": "n8n-nodes-base.code",
      "position": [
        1648,
        432
      ]
    },
    {
      "id": "cf55d88e-88bc-4c3e-aa11-22017b1cc3f6",
      "name": "Respond to Webhook – Localize",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1888,
        432
      ]
    },
    {
      "id": "71c6deda-bf19-4aff-87bc-be07f734d905",
      "name": "Build Mockup Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        624,
        832
      ]
    },
    {
      "id": "dddf4923-4fc0-453a-91d0-ad5ae7cd4d3e",
      "name": "Gemini Imagen 3 – Mockup",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        832
      ]
    },
    {
      "id": "93482732-f535-4118-89e6-36f0eaa87603",
      "name": "Decode Mockup Image",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        832
      ]
    },
    {
      "id": "d750be8f-048a-44f9-b0e4-26d279ddd93e",
      "name": "Build Mockup Response",
      "type": "n8n-nodes-base.code",
      "position": [
        1648,
        832
      ]
    },
    {
      "id": "4024e030-fe6a-4c63-a89f-5e4b28753eca",
      "name": "Respond to Webhook – Mockup",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1888,
        832
      ]
    },
    {
      "id": "aed7cefc-af66-4a33-97ee-5aab1bd6d580",
      "name": "Upload to URL",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        1392,
        432
      ]
    },
    {
      "id": "15704ba4-1042-46a6-9488-9b1dfd7cb46b",
      "name": "Upload to URL1",
      "type": "n8n-nodes-uploadtourl.uploadToUrl",
      "position": [
        1424,
        832
      ]
    }
  ],
  "connections": {
    "Upload to URL": {
      "main": [
        [
          {
            "node": "Build Localize Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to URL1": {
      "main": [
        [
          {
            "node": "Build Mockup Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Job Type": {
      "main": [
        [
          {
            "node": "Build Localize Prompt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Mockup Prompt",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond – Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Mockup Prompt": {
      "main": [
        [
          {
            "node": "Gemini Imagen 3 – Mockup",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Decode Mockup Image": {
      "main": [
        [
          {
            "node": "Upload to URL1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Localize Prompt": {
      "main": [
        [
          {
            "node": "Gemini Imagen 3 – Localize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Mockup Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook – Mockup",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Decode Localize Image": {
      "main": [
        [
          {
            "node": "Upload to URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Localize Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook – Localize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Imagen 3 – Mockup": {
      "main": [
        [
          {
            "node": "Decode Mockup Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Imagen 3 – Localize": {
      "main": [
        [
          {
            "node": "Decode Localize Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook – Receive Image Job": {
      "main": [
        [
          {
            "node": "Route by Job Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}