AutomationFlowsAI & RAG › Load n8n Workflows via HTTP Webhook

Load n8n Workflows via HTTP Webhook

Original n8n title: N8n Workflow Http Loader

N8N Workflow Http Loader. Uses n8n. Webhook trigger; 9 nodes.

Webhook trigger★★★★☆ complexity9 nodesn8n
AI & RAG Trigger: Webhook Nodes: 9 Complexity: ★★★★☆ Added:

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
{
  "meta": {
    "templateCreatedBy": "tiangao88",
    "description": "Example n8n workflow that returns model configurations via webhook for JSON HTTP Loader",
    "repository": "https://github.com/sven-eisenschmidt/n8n-openai-bridge"
  },
  "nodes": [
    {
      "parameters": {
        "content": "## Listing Available Models \n[Read more about the Model Loader Architecture for n8n-openai-bridge](https://github.com/sveneisenschmidt/n8n-openai-bridge/blob/main/docs/MODELLOADER.md)\n\n- Configure List_Workflows with your n8n API Key \n- The filtering **tag** 'n8n-openai-bridge' is a parameter in the Configuration node.\n- Remember to configure **base_url** as well.\n- You can add nodes for your custom filtering logic",
        "height": 612,
        "width": 1464,
        "color": 7
      },
      "id": "edcbe9bb-edb9-4831-b783-0e6c483b8d6b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -48
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "path": "n8n-models",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "41c42480-8caf-4628-a2cd-8c68752ab36b",
      "name": "Models",
      "type": "n8n-nodes-base.webhook",
      "position": [
        16,
        176
      ],
      "typeVersion": 2
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        16,
        368
      ],
      "id": "74d65e08-1a2b-479f-929e-ca85d02abce0",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "2b9d0ffd-1af4-41c5-a6de-270da1423f82",
              "name": "tag",
              "value": "n8n-openai-bridge",
              "type": "string"
            },
            {
              "id": "a1ac1245-bb51-422e-95bb-8f626aaab9fd",
              "name": "base_url",
              "value": "={{ $env.WEBHOOK_URL }}/webhook",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        224,
        176
      ],
      "id": "a6d50484-7131-479d-968c-f98d056a3887",
      "name": "Configuration"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "b03926a4-4ad9-4d87-8188-989fa5158a07",
              "name": "name",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "88bd31bd-005d-4734-bffa-4fd3b8487166",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "7fbabd24-8dea-495e-96fe-da08790f971c",
              "name": "webhook_url",
              "type": "string",
              "value": "={{ $json.nodes.find(node => node.parameters?.path).parameters.path }}"
            },
            {
              "id": "6b538d2a-5612-4db6-a23e-d240e3eb87e0",
              "name": "chat_url",
              "value": "={{ $json.nodes.find(node => node.parameters?.public).webhookId }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "1c40c46c-3c41-497b-b3f6-6792cfcb686a",
      "name": "Select_Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        176
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "jsCode": "// Helper function to safely join URL parts, preventing double slashes\nfunction joinUrlPaths(base, path) {\n  if (!base) return path;\n  if (!path) return base;\n\n  const baseEndsWithSlash = base.endsWith('/');\n  const pathStartsWithSlash = path.startsWith('/');\n\n  if (baseEndsWithSlash && pathStartsWithSlash) {\n    return base + path.substring(1); // Remove leading slash from path\n  } else if (!baseEndsWithSlash && !pathStartsWithSlash) {\n    return base + '/' + path; // Add a slash in between\n  } else {\n    return base + path; // One already has a slash, or neither\n  }\n}\n\nconst items = $input.all(); // Get all input items\n\n// Retrieve the base_url from the 'Configuration' node\n// Ensure the 'Configuration' node exists and has a 'base_url' field in its output\nconst baseUrl = $('Configuration').first().json.base_url;\n\nconst finalOutputObject = {}; // Initialize an empty object to store the combined output\n\n// Iterate over each input item\nitems.forEach(item => {\n  const inputData = item.json; // Access the JSON data of the current item\n\n  const name = inputData.name;\n  const webhook_url = inputData.webhook_url;\n  const chat_url = inputData.chat_url; // Get the chat_url\n\n  let rawUrl; // This will hold the URL part before adding the base_url\n\n  // Conditional logic: Prefer chat_url if it exists and is not empty\n  if (chat_url && chat_url.trim() !== '') {\n    // Assuming chat_url is an ID or path segment that needs '/chat' appended\n    rawUrl = chat_url + '/chat';\n  } else {\n    rawUrl = webhook_url;\n  }\n\n  let finalUrl = null;\n  // If a rawUrl was determined, prepend the baseUrl\n  if (rawUrl) {\n    // Check if rawUrl is already a full URL (starts with http/https)\n    // If it is, we might not want to prepend baseUrl, or we assume baseUrl is the domain\n    // For this example, we'll assume rawUrl is a path/ID that needs the baseUrl\n    if (baseUrl) {\n      finalUrl = joinUrlPaths(baseUrl, rawUrl);\n    } else {\n      finalUrl = rawUrl; // Use rawUrl as is if no baseUrl is available\n    }\n  }\n\n  // Add the name-url pair to the final output object\n  if (name && finalUrl) {\n    finalOutputObject[name] = finalUrl;\n  } else if (name) {\n    // If no URL could be constructed, you might want to log a warning or set a default\n    console.warn(`Could not construct a URL for item: ${name}. Skipping.`);\n  }\n});\n\n// Return the single combined object in the n8n expected format\nreturn [{ json: finalOutputObject }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1088,
        176
      ],
      "id": "fa5a0b6e-bd01-4ab3-8a71-03c4fa68093e",
      "name": "Compile_Answer"
    },
    {
      "parameters": {
        "filters": {
          "activeWorkflows": true,
          "tags": "={{ $json.tag }}",
          "excludePinnedData": true
        },
        "requestOptions": {}
      },
      "id": "da7707e3-d796-4c70-a3b7-e9dbac0c29be",
      "name": "List_Workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        448,
        176
      ],
      "typeVersion": 1,
      "credentials": {
        "n8nApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $json }}",
        "options": {}
      },
      "id": "e68da64a-e842-4791-a1c7-6277817697e8",
      "name": "Models_Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1280,
        176
      ],
      "executeOnce": false,
      "typeVersion": 1.2
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        656,
        176
      ],
      "id": "10067cb8-b006-4ef7-83f7-85e65e3a4ad5",
      "name": "Your_Custom_Logic"
    }
  ],
  "connections": {
    "Models": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "List_Workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select_Fields": {
      "main": [
        [
          {
            "node": "Compile_Answer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compile_Answer": {
      "main": [
        [
          {
            "node": "Models_Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List_Workflows": {
      "main": [
        [
          {
            "node": "Your_Custom_Logic",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Your_Custom_Logic": {
      "main": [
        [
          {
            "node": "Select_Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

N8N Workflow Http Loader. Uses n8n. Webhook trigger; 9 nodes.

Source: https://github.com/sveneisenschmidt/n8n-openai-bridge/blob/98976fe041d5ca6ce4dc01cfc63a60ba3012350e/n8n-examples/n8n_workflow_http_loader.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

This workflow automates end-to-end social media publishing powered by Late API. It generates text content with Google Gemini, creates branded visuals with Kie.ai, uploads media to Late, and publishes

HTTP Request
AI & RAG

This workflow is perfect for app developers, SaaS founders, and mobile growth teams who need constant UGC-style video ads without hiring creators or agencies. If you're spending $500+ per creator and

HTTP Request, Google Drive
AI & RAG

AI Background Generation with Nano Banana (Gemini Image). Uses httpRequest, googleDrive. Webhook trigger; 35 nodes.

HTTP Request, Google Drive
AI & RAG

This template is for developers, teams, and automation enthusiasts who want a private, PIN-protected Telegram chatbot that answers questions from their own documents — without relying on external AI A

Postgres, Telegram, HTTP Request +2
AI & RAG

This workflow creates an RSS feed containing the most recent videos published by your favorite channels. Use it in combination with your favorite RSS reader and don't miss out on any of your favorite

RSS Feed Read, Redis, YouTube