AutomationFlowsWeb Scraping › Generate Images From Text with Ibm Granite Vision 3.3 2b AI Model

Generate Images From Text with Ibm Granite Vision 3.3 2b AI Model

ByYaron Been @yaron-nofluff on n8n.io

This workflow uses the ibm-granite/granite-vision-3.3-2b model (hosted on Replicate) to generate AI images. It starts manually, sends a request to the Replicate API, waits for the result, and finally outputs the generated image link.

Event trigger★★★★☆ complexity14 nodesHTTP Request
Web Scraping Trigger: Event Nodes: 14 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7012 — we link there as the canonical source.

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
{
  "id": "yWCiA40cYIUrujSC",
  "name": "14. Generate Images from Text with IBM Granite Vision 3.3 2B AI Model",
  "tags": [],
  "nodes": [
    {
      "id": "4329b4aa-8904-456b-a382-cdb1eb6831b8",
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        64,
        144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "72600d86-2ff3-46df-ae23-335cb01f0e59",
      "name": "Set API Key",
      "type": "n8n-nodes-base.set",
      "position": [
        288,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "64cd57c7-2224-48a6-88df-c37b310f8eb3",
              "name": "replicate_api_key",
              "type": "string",
              "value": "YOUR_REPLICATE_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "a1310c30-6206-4016-a0c3-e32e6a0524ba",
      "name": "Create Prediction",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        512,
        144
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/predictions",
        "method": "POST",
        "options": {
          "timeout": 60000
        },
        "jsonBody": "{\n  \"version\": \"3339e8453ca94104383f6f085a511d7f26cca2d0cab2f6018986737b6cf7d391\",\n  \"input\": {\n    \"seed\": 1,\n    \"top_k\": 50,\n    \"top_p\": 0.9,\n    \"max_tokens\": 512,\n    \"temperature\": 0.6\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('Set API Key').item.json.replicate_api_key }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c79ea010-0525-4c61-8ca7-bdbcc84b426f",
      "name": "Extract Prediction ID",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        144
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Extract prediction ID and initial status\\nconst prediction = $input.item.json;\\nconst predictionId = prediction.id;\\nconst initialStatus = prediction.status;\\n\\n// Store the prediction ID for polling\\nreturn {\\n  predictionId: predictionId,\\n  status: initialStatus,\\n  predictionUrl: `https://api.replicate.com/v1/predictions/${predictionId}`\\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "d8fc6cb6-f37f-4c45-b005-83407697ca34",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        944,
        144
      ],
      "parameters": {
        "unit": "seconds",
        "amount": 2
      },
      "typeVersion": 1
    },
    {
      "id": "53f39db2-e688-46ce-9a3d-b50c2365d11b",
      "name": "Check Prediction Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1168,
        144
      ],
      "parameters": {
        "url": "={{ $json.predictionUrl }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "={{ 'Bearer ' + $('Set API Key').item.json.replicate_api_key }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "32f0b031-596d-4e32-bc58-a002a46a2c29",
      "name": "Check If Complete",
      "type": "n8n-nodes-base.if",
      "position": [
        1392,
        144
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.status }}",
              "value2": "succeeded"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f9e3961d-ee2f-47e7-9b61-23f694091cca",
      "name": "Process Result",
      "type": "n8n-nodes-base.code",
      "position": [
        1600,
        48
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Process the completed prediction\\nconst result = $input.item.json;\\n\\nreturn {\\n  status: result.status,\\n  output: result.output,\\n  metrics: result.metrics,\\n  created_at: result.created_at,\\n  completed_at: result.completed_at,\\n  model: 'ibm-granite/granite-vision-3.3-2b',\\n  image_url: result.output\\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "776eb5ba-cfc1-4505-9ba9-35fa7b10a6d2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        -288
      ],
      "parameters": {
        "color": 3,
        "width": 406,
        "height": 639,
        "content": "## \ud83d\udfe2 Section 1: Trigger & API Setup\n\n\ud83d\udd17 **Nodes:**\n\n* **Manual Trigger** \u2192 Starts when you click *Execute*.\n* **Set API Key** \u2192 Stores your Replicate API Key safely in the workflow.\n\n\ud83d\udca1 **Beginner takeaway:**\nThis section is like turning the key in the ignition. You start the workflow, and it loads your credentials so you can talk to Replicate\u2019s API.\n\n\ud83d\udcc8 **Advantage:**\nKeeps your API key stored inside the workflow instead of hard-coding it everywhere.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8f6c9ce5-1c0c-4d66-94e3-d4d8e2dfdbb5",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1760,
        -480
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "09a0a691-f7ac-4d4d-b90e-d33e5c8d3f92",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1760,
        -144
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 2286,
        "content": "# Generate Images from Text with IBM Granite Vision 3.3 2B AI Model\n\n### \ud83c\udf0d **Overview**\n\nThis workflow uses the **ibm-granite/granite-vision-3.3-2b** model (hosted on Replicate) to generate AI images. It starts manually, sends a request to the Replicate API, waits for the result, and finally outputs the generated image link.\n\nThink of it as your **AI art assistant** \u2014 you click once, and it handles the full request/response cycle for image generation.\n\n---\n\n## \ud83d\udfe2 Section 1: Trigger & API Setup\n\n\ud83d\udd17 **Nodes:**\n\n* **Manual Trigger** \u2192 Starts when you click *Execute*.\n* **Set API Key** \u2192 Stores your Replicate API Key safely in the workflow.\n\n\ud83d\udca1 **Beginner takeaway:**\nThis section is like turning the key in the ignition. You start the workflow, and it loads your credentials so you can talk to Replicate\u2019s API.\n\n\ud83d\udcc8 **Advantage:**\nKeeps your API key stored inside the workflow instead of hard-coding it everywhere.\n\n---\n\n## \ud83d\udfe6 Section 2: Create Prediction\n\n\ud83d\udd17 **Nodes:**\n\n* **HTTP Request (Create Prediction)** \u2192 Sends a request to Replicate with the chosen model (`granite-vision-3.3-2b`) and input parameters (seed, temperature, max\\_tokens, etc.).\n\n\ud83d\udca1 **Beginner takeaway:**\nThis is where the workflow actually **asks the AI model to generate an image**.\n\n\ud83d\udcc8 **Advantage:**\nYou can tweak parameters like **creativity (temperature)** or **randomness (seed)** to control results.\n\n---\n\n## \ud83d\udfe3 Section 3: Polling & Status Check\n\n\ud83d\udd17 **Nodes:**\n\n* **Extract Prediction ID (Code)** \u2192 Saves the unique job ID.\n* **Wait (2s)** \u2192 Pauses before checking status.\n* **Check Prediction Status (HTTP Request)** \u2192 Calls Replicate to see if the image is ready.\n* **If Condition (Check If Complete)** \u2192\n\n  * \u2705 If `status = succeeded` \u2192 move to result\n  * \ud83d\udd04 Else \u2192 go back to Wait and check again\n\n\ud83d\udca1 **Beginner takeaway:**\nSince image generation takes a few seconds, this section keeps **asking the AI \u201care you done yet?\u201d** until the image is ready.\n\n\ud83d\udcc8 **Advantage:**\nNo need to guess \u2014 the workflow waits automatically and retries until success.\n\n---\n\n## \ud83d\udd35 Section 4: Process Result\n\n\ud83d\udd17 **Nodes:**\n\n* **Process Result (Code)** \u2192 Extracts the final data:\n\n  * \u2705 Status\n  * \u2705 Output image URL\n  * \u2705 Metrics (time taken, etc.)\n  * \u2705 Model info\n\n\ud83d\udca1 **Beginner takeaway:**\nThis section **collects the finished image link** and prepares it neatly for you.\n\n\ud83d\udcc8 **Advantage:**\nYou get structured output that you can **save, display, or use in another workflow** (like auto-sending images to Slack or saving to Google Drive).\n\n---\n\n## \ud83d\udcca Final Overview Table\n\n| Section              | Nodes                              | Purpose                     | Benefit                     |\n| -------------------- | ---------------------------------- | --------------------------- | --------------------------- |\n| \ud83d\udfe2 Trigger & Setup   | Manual Trigger, Set API Key        | Start + load credentials    | Secure API key management   |\n| \ud83d\udfe6 Create Prediction | HTTP Request                       | Ask AI to generate image    | Control creativity & output |\n| \ud83d\udfe3 Polling           | Extract ID, Wait, Check Status, If | Repeatedly check job status | Auto-wait until done        |\n| \ud83d\udd35 Process Result    | Process Result                     | Extract image + details     | Get clean output for reuse  |\n\n---\n\n## \ud83d\ude80 Why This Workflow is Useful\n\n* **Automates full API cycle** \u2192 From request to final image URL\n* **Handles delays automatically** \u2192 Keeps checking until your image is ready\n* **Customizable parameters** \u2192 Adjust creativity, randomness, and token limits\n* **Reusable** \u2192 Connect it to email, Slack, Notion, or storage for instant sharing\n* **Beginner-friendly** \u2192 Just plug in your API key and hit *Execute*\n\n---\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6c367d94-4ec5-44f8-9a90-4e3e2df00608",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -464
      ],
      "parameters": {
        "color": 4,
        "width": 230,
        "height": 815,
        "content": "## \ud83d\udfe6 Section 2: Create Prediction\n\n\ud83d\udd17 **Nodes:**\n\n* **HTTP Request (Create Prediction)** \u2192 Sends a request to Replicate with the chosen model (`granite-vision-3.3-2b`) and input parameters (seed, temperature, max\\_tokens, etc.).\n\n\ud83d\udca1 **Beginner takeaway:**\nThis is where the workflow actually **asks the AI model to generate an image**.\n\n\ud83d\udcc8 **Advantage:**\nYou can tweak parameters like **creativity (temperature)** or **randomness (seed)** to control results.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7b765db4-0283-47d4-8ab9-df75aa64f6ad",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -336
      ],
      "parameters": {
        "color": 6,
        "width": 806,
        "height": 687,
        "content": "## \ud83d\udfe3 Section 3: Polling & Status Check\n\n\ud83d\udd17 **Nodes:**\n\n* **Extract Prediction ID (Code)** \u2192 Saves the unique job ID.\n* **Wait (2s)** \u2192 Pauses before checking status.\n* **Check Prediction Status (HTTP Request)** \u2192 Calls Replicate to see if the image is ready.\n* **If Condition (Check If Complete)** \u2192\n\n  * \u2705 If `status = succeeded` \u2192 move to result\n  * \ud83d\udd04 Else \u2192 go back to Wait and check again\n\n\ud83d\udca1 **Beginner takeaway:**\nSince image generation takes a few seconds, this section keeps **asking the AI \u201care you done yet?\u201d** until the image is ready.\n\n\ud83d\udcc8 **Advantage:**\nNo need to guess \u2014 the workflow waits automatically and retries until success.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8fbd6a2c-dcfb-4723-8d4e-caf5c3a563ca",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        -576
      ],
      "parameters": {
        "color": 5,
        "width": 230,
        "height": 927,
        "content": "## \ud83d\udd35 Section 4: Process Result\n\n\ud83d\udd17 **Nodes:**\n\n* **Process Result (Code)** \u2192 Extracts the final data:\n\n  * \u2705 Status\n  * \u2705 Output image URL\n  * \u2705 Metrics (time taken, etc.)\n  * \u2705 Model info\n\n\ud83d\udca1 **Beginner takeaway:**\nThis section **collects the finished image link** and prepares it neatly for you.\n\n\ud83d\udcc8 **Advantage:**\nYou get structured output that you can **save, display, or use in another workflow** (like auto-sending images to Slack or saving to Google Drive).\n\n---\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0fac2de0-55b2-4dcb-bf9b-d36d42f23ea2",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Check Prediction Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set API Key": {
      "main": [
        [
          {
            "node": "Create Prediction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Complete": {
      "main": [
        [
          {
            "node": "Process Result",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Prediction": {
      "main": [
        [
          {
            "node": "Extract Prediction ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Prediction ID": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Set API Key",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Prediction Status": {
      "main": [
        [
          {
            "node": "Check If Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This workflow uses the ibm-granite/granite-vision-3.3-2b model (hosted on Replicate) to generate AI images. It starts manually, sends a request to the Replicate API, waits for the result, and finally outputs the generated image link.

Source: https://n8n.io/workflows/7012/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. A multi-form setup guides you through the entire process At the beginning you have t

Execute Command, Read Write File, HTTP Request +3
Web Scraping

[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.

HTTP Request, GitHub, Stop And Error +1
Web Scraping

[](https://youtu.be/c7yCZhmMjtI)

HTTP Request, GitHub, Stop And Error +1
Web Scraping

This automation organizes your n8n workflows files into categorizes (Active, Template, Done, Archived) and uploads them directly to a categorized Google Drive folders. It is designed to help users man

Google Drive, HTTP Request, Time Saved
Web Scraping

Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest. Event-driven trigger; 51 nodes.

HTTP Request