AutomationFlowsWeb Scraping › Anonymize Faces and License Plates in Media with Blurit

Anonymize Faces and License Plates in Media with Blurit

ByBlurit @blurit on n8n.io

Use cases include: automatically anonymizing dashcam videos, securing photos before sharing them publicly, or ensuring compliance with privacy regulations like GDPR.

Event trigger★★★★☆ complexity16 nodesHTTP RequestForm Trigger
Web Scraping Trigger: Event Nodes: 16 Complexity: ★★★★☆ Added:

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

This workflow follows the Form Trigger → HTTP Request 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
{
  "id": "bQJuF8cpe6EMZX7U",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "create-anonymization-task",
  "tags": [],
  "nodes": [
    {
      "id": "ae467417-1a90-450a-b282-e5cd05ef19e9",
      "name": "Set Auth Config",
      "type": "n8n-nodes-base.set",
      "position": [
        816,
        288
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "BASE_URL",
              "value": "https://api.services.wassa.io"
            },
            {
              "name": "CLIENT_ID",
              "value": "[REPLACE_BY_YOUR_CLIENT_ID]"
            },
            {
              "name": "SECRET_ID",
              "value": "[REPLACE_BY_YOUR_SECRET_ID]"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "32e7df45-69a9-4998-9713-a26d8522bd96",
      "name": "Auth Get Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        960,
        288
      ],
      "parameters": {
        "url": "={{$json.BASE_URL}}/login",
        "options": {},
        "requestMethod": "POST",
        "jsonParameters": true,
        "bodyParametersJson": "={\"clientId\": \"{{$json.CLIENT_ID}}\",\"secretId\": \"{{$json.SECRET_ID}}\"}"
      },
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "fed4c630-601e-4619-b9cc-f9bd65b22971",
      "name": "Upload Input File",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        624,
        448
      ],
      "parameters": {
        "path": "6afa917a-f6c6-459c-907c-ec8cfa950703",
        "options": {},
        "formTitle": "Media Upload Form",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "input_media",
              "multipleFiles": false,
              "requiredField": true
            }
          ]
        },
        "formDescription": "Upload an image or video for anonymization"
      },
      "typeVersion": 1
    },
    {
      "id": "cf4538de-73ed-4fb2-b0b5-c046c6b628e4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        192
      ],
      "parameters": {
        "color": 4,
        "width": 384,
        "height": 384,
        "content": "### File Upload  \n\nAfter launching **\u26a1\ufe0fExecute Workflow**, click one of the form links below to upload your input file, then return to the console (refesh page if needed).  \n\n- [Test Form](https://smowassa.app.n8n.cloud/webhook-test/6afa917a-f6c6-459c-907c-ec8cfa950703/n8n-form)  \n- [Production Form](https://smowassa.app.n8n.cloud/webhook/6afa917a-f6c6-459c-907c-ec8cfa950703/n8n-form)  \n\n*You can find these form URLs by **double-clicking** the **Upload Input File** node.*  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "43e5c518-b3ba-4839-acb1-bc69d6a790b0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        80
      ],
      "parameters": {
        "color": 4,
        "width": 304,
        "height": 352,
        "content": "### Blurit Credentials  \n\nReplace the placeholders with your own **Client ID** and **Secret ID** by *double-clicking* the **Set Auth Config** node.  \n\nYou can find these credentials in the [BlurIt Developer](https://app.blurit.io/account/developer) section of your account.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "c56a0ec8-ad6a-4d33-998e-d59490a8486c",
      "name": "Create Blurit Task",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1344,
        288
      ],
      "parameters": {
        "url": "={{$(\"Set Auth Config\").item.json.BASE_URL}}/innovation-service/anonymization",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "input_media",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "input_media"
            },
            {
              "name": "activation_plates_blur",
              "value": "true"
            },
            {
              "name": "activation_faces_blur",
              "value": "true"
            },
            {
              "name": "blur_type",
              "value": "{         \"anonymization_type\": \"blur\"     }"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$json.token}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3cc4b2ec-14dd-4b20-8ffe-a208839e2638",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1152,
        432
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3
    },
    {
      "id": "7ad08d82-bc1a-4c93-9ed4-ad463187b59b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        160
      ],
      "parameters": {
        "color": 4,
        "width": 208,
        "height": 272,
        "content": "### Create Task\nEdit blur configration by *double-clicking* the **Create Task** node and editing the *blur_type* field.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c003f5a7-a250-4271-ab8e-a2b0f6d3c830",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        1552,
        432
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "4eea7063-81e5-4f63-ba6c-72dc5e31de6d",
      "name": "Get Task Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1696,
        432
      ],
      "parameters": {
        "url": "={{$(\"Set Auth Config\").item.json.BASE_URL}}/innovation-service/anonymization",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "anonymization_job_id",
              "value": "={{$('Create Blurit Task').item.json.anonymization_job_id }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$('Auth Get Token').item.json.token}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c67633b9-bfca-42f1-adad-24d87e645eb4",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        1840,
        416
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Task Succeeded",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "2cbc0844-dc59-439a-b90e-fef51c413faa",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "Succeeded"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Task Failed",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "54f82732-ed63-4478-aa35-9451382a1d0d",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "Failed"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Pending...",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0eea9e63-2399-4c79-aadb-96aa72cbd0ce",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "e4ef17e2-bc23-4154-8b48-e23850ff372a",
      "name": "Get Result File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2048,
        304
      ],
      "parameters": {
        "url": "={{$(\"Get Task Status\").item.json.output_media}}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{$('Auth Get Token').item.json.token}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2fa91dfb-3efe-4ede-b8e0-c4e685432700",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        160
      ],
      "parameters": {
        "color": 4,
        "height": 272,
        "content": "### Get Result\nIf succeed, file result is present in Output *data* of this **Get Result File** Node.\nClick *View* or *Download* in Output Section.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5e7383c0-60b4-47d0-bb1a-249aa8c01782",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -80
      ],
      "parameters": {
        "width": 480,
        "height": 960,
        "content": "![](https://res.cloudinary.com/dhtpkobg1/image/upload/v1757689724/logo_blurit_vxo83w.png)\n## Try It Out!\n### This n8n template demonstrates how to use [BlurIt](https://blurit.io) to anonymize faces and/or license plates in images or videos directly within your workflow.\n\nUse cases include: automatically anonymizing dashcam videos, securing photos before sharing them publicly, or ensuring compliance with privacy regulations like GDPR.\n\n### How it works\n* The workflow starts with a **Form Trigger** where you can upload your image or video file.\n* An **HTTP Request** node authenticates with the BlurIt API using your Client ID and Secret.\n* The file is then uploaded to BlurIt via an **HTTP Request** to create a new anonymization task.\n* A polling loop checks the task status until it succeeds.\n* Once complete, the anonymized media is retrieved and saved using a **Write Binary File** node.\n\n### How to use\n* Replace the placeholder credentials in the **Set Auth Config** node with your BlurIt Client ID and Secret (found in your [BlurIt Developer Dashboard](https://app.blurit.io/account/developer)).\n* Execute the workflow, open the provided form link, and upload an image or video.\n* The anonymized file will be written to your chosen output directory (or you can adapt the workflow to upload to cloud storage).\n\n### Requirements\n* A [BlurIt](https://blurit.io) account and valid API credentials (Client ID & Secret).\n* A running instance of n8n (cloud or self-hosted).\n* (Optional) Access to a shared folder or cloud storage service if you want to automate file delivery.\n\n### Need Help?\nContact us at support@blurit.io,  \nor visit the [BlurIt Documentation](https://doc-api.blurit.io/n8n-integration).\n\nHappy Coding!\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9033e9f1-c41a-4f22-9f02-e5b0099c14cb",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        624
      ],
      "parameters": {
        "width": 288,
        "height": 256,
        "content": "## Image Input\n![](https://res.cloudinary.com/dhtpkobg1/image/upload/v1757689496/blurit-input_xm7ha8.jpg)"
      },
      "typeVersion": 1
    },
    {
      "id": "51f28f7b-52d8-4cb1-ba42-243d81172659",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        624
      ],
      "parameters": {
        "width": 288,
        "height": 256,
        "content": "## Image Output\n![](https://res.cloudinary.com/dhtpkobg1/image/upload/v1757689502/blurit-output_zhwqxz.jpg)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a62b04be-8942-4dc7-8252-850b3ff0df01",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Task Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Create Blurit Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Get Result File",
            "type": "main",
            "index": 0
          }
        ],
        [],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auth Get Token": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Task Status": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Auth Config": {
      "main": [
        [
          {
            "node": "Auth Get Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Input File": {
      "main": [
        [
          {
            "node": "Set Auth Config",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Create Blurit Task": {
      "main": [
        [
          {
            "node": "Wait",
            "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

Use cases include: automatically anonymizing dashcam videos, securing photos before sharing them publicly, or ensuring compliance with privacy regulations like GDPR.

Source: https://n8n.io/workflows/8535/ — 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

N8n recently introduced folders and it has been a big improvement on workflow management on top of the tags.

HTTP Request, n8n, Form Trigger +1
Web Scraping

This workflow automates the creation of press releases for music artists releasing a new single. Upload your MP3, fill in basic info, and receive a publication-ready press release saved as a Google Do

Form Trigger, HTTP Request, Google Docs