AutomationFlowsSlack & Telegram › Automatic Media Download From Whatsapp Business Messages with Http Storage

Automatic Media Download From Whatsapp Business Messages with Http Storage

ByUsman Liaqat @usmanliaqat on n8n.io

This workflow listens for incoming WhatsApp messages that contain media (e.g., images) and automatically downloads the media file using WhatsApp's private media URL. The trigger node activates when a WhatsApp message with media is received. The media ID is extracted from the…

Event trigger★★☆☆☆ complexity6 nodesWhatsApp TriggerWhatsAppHTTP Request
Slack & Telegram Trigger: Event Nodes: 6 Complexity: ★★☆☆☆ Added:

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

This workflow follows the HTTP Request → WhatsApp recipe pattern — see all workflows that pair these two integrations.

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": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "a24e0949-dcf6-48d4-8b9e-ce201e8b87d8",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2380,
        -400
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "This note indicates that the workflow triggers when a new WhatsApp message with media is received."
      },
      "typeVersion": 1
    },
    {
      "id": "f513cc8b-89d3-4481-b7fa-ac9d33ba8562",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1980,
        -400
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "This note explains that the media ID is used to retrieve a private URL for downloading the media."
      },
      "typeVersion": 1
    },
    {
      "id": "3bae6af6-8858-4da4-ab2c-846a2c3e0ffe",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1600,
        -400
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "This note highlights that the media file is downloaded using the retrieved private URL."
      },
      "typeVersion": 1
    },
    {
      "id": "f694abd7-dacf-41a7-82aa-157bfcf54f83",
      "name": "Trigger WhatsApp Media",
      "type": "n8n-nodes-base.whatsAppTrigger",
      "position": [
        -2280,
        -320
      ],
      "parameters": {
        "options": {},
        "updates": [
          "messages"
        ]
      },
      "credentials": {
        "whatsAppTriggerApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "33e74a92-4475-470d-8003-7631ea0b706f",
      "name": "Fetch Media Download URL",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        -1880,
        -320
      ],
      "parameters": {
        "resource": "media",
        "operation": "mediaUrlGet",
        "mediaGetId": "={{ $json.messages[0].image.id }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5e9b09e8-b9d2-4571-a897-d49d32a68c3c",
      "name": "Download Media File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1500,
        -320
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {
          "response": {
            "response": {}
          }
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        },
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "connections": {
    "Trigger WhatsApp Media": {
      "main": [
        [
          {
            "node": "Fetch Media Download URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Media Download URL": {
      "main": [
        [
          {
            "node": "Download Media File",
            "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

This workflow listens for incoming WhatsApp messages that contain media (e.g., images) and automatically downloads the media file using WhatsApp's private media URL. The trigger node activates when a WhatsApp message with media is received. The media ID is extracted from the…

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

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

This workflow is designed for **customer support teams, e-commerce founders, and operations managers** who want to handle thousands of customer queries seamlessly. Instead of building a brand-new chat

Telegram Trigger, Supabase, WhatsApp +2
Slack & Telegram

This workflow enables seamless, bidirectional communication between WhatsApp and Slack using n8n. It automates the reception, processing, and forwarding of messages (text, media, and documents) betwee

WhatsApp Trigger, Slack, Slack Trigger +2
Slack & Telegram

Filter Whatsapp. Uses stickyNote, whatsAppTrigger, CUSTOM, whatsApp. Event-driven trigger; 12 nodes.

WhatsApp Trigger, Custom, WhatsApp
Slack & Telegram

Community Node Disclaimer: This workflow uses KlickTipp community nodes.

WhatsApp Trigger, Custom, WhatsApp
Slack & Telegram

This workflow is for service-based businesses and freelancers who want to automate booking appointments via WhatsApp without relying on third-party scheduling tools. It's perfect for small teams who w

WhatsApp Trigger, WhatsApp, Postgres +1