REST API. Gör ansikten och registreringsskyltar suddiga i foton
Watermarkly Blur API identifierar automatiskt och suddiggör ansikten och registreringsskyltar i bilder. Det körs helt på AWS-infrastruktur och prioriterar integritet – dina filer används aldrig för att träna AI-modeller. Vi använder AWS Lambda för att behandla tusentals förfrågningar parallellt, vilket säkerställer pålitlig prestanda och tillgänglighet i flera regioner världen över.
Vi säljer API:t via AWS Marketplace. Kostnad: $0.01 / förfrågan. Det finns ett alternativ för en gratis provperiod på 7 dagar.
Huvudfunktioner
✓ Identifierar och suddiggör automatiskt registreringsskyltar och ansikten i bilder
✓ Kan vid behov ersätta registreringsskyltar med din projekt- eller företagslogotyp.
✓ Kan ändra storlek, beskära eller konvertera bearbetade bilder.
✓ Stödjer upp till 500 förfrågningar per sekund.
✓ Bearbetar bilder parallellt för snabbare prestanda.
✓ Maximal bildstorlek som stöds: 6000 × 6000 pixlar.
✓ API-förfrågningar kräver autentisering via en API-nyckel.
Om du behöver snabbare bearbetning, stöd för större bilder eller en högre förfrågningsnivå, kontakta oss på api-support@watermarkly.com.
Exempel på resultat
Kvinnans ansikte och registreringsskylten är suddiga.

Registreringsskylten ersätts med företagets logotyp och kvinnans ansikte är suddigt.

Vi säljer API:t via AWS Marketplace. Kostnad: $0.01 / förfrågan. Det finns ett alternativ för en gratis provperiod på 7 dagar.
Bearbetningsdetaljer
- Bearbetade bilder lagras inte på våra servrar.
- Tjänsten tar emot bilder i formaten JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
- AVIF- och HEIF-bilder konverteras till JPEG om inget annat format anges.
- Maximal storlek för indata:
- GET-förfrågningar: 20 MB eller 6000 × 6000 pixlar.
- POST-förfrågningar: 6 MB eller 6000 × 6000 pixlar.
- Begränsningar för API:t:
- 500 parallella förfrågningar
- 500 förfrågningar per sekund
- 100 000 förfrågningar per dag
API-endpoints
Regioner
För närvarande erbjuder vi API:t i två regioner:
- Europa: https://blur-api-eu1.watermarkly.com/ (eu-north-1)
- USA: https://blur-api-us1.watermarkly.com/ (us-east-2)
Du kan använda den endpoint som är mest praktisk. Du kan även använda den andra endpointen som reserv om en enskild AWS-region skulle gå ner. Om du behöver API:t i en annan region, hör av dig.
Förfrågningsmetoder
Du kan skicka in bilder för bearbetning med antingen GET- eller POST-förfrågningar.
Om dina bilder är offentligt tillgängliga rekommenderar vi GET-förfrågningar eftersom de är något snabbare än POST-förfrågningar.
Suddiggör bild med GET-förfrågan (rekommenderas)
GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}
eller
GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}
Tjänsten laddar ner bilden från image_url och bearbetar den.
Förfrågan
- Metod: GET
- Headers:
x-api-key: Din API-nyckel
- URL query parameters:
url(Obligatorisk): Den fullständiga URL:en till bilden som ska bearbetas.blur_intensity(Valfri): Ett flyttal mellan 0.0 och 20.0 som justerar suddighetsstyrkan. Standard: 1.0. Värdet 0.0 stänger av suddiggörning.file_size(Valfri): Anger önskad filstorlek för utdata i byte. Tjänsten försöker returnera en bild som inte överskrider denna storlek.width(Valfri): Anger önskad bredd på utdatabilden.height(Valfri): Anger önskad höjd på utdatabilden.format(Valfri): Anger önskat bildformat för utdata. Möjliga värden: JPEG, PNG, WEBP.logo_url(Valfri): URL till en logotypfil som ska placeras på registreringsskyltar. Kan vara en HTTP-URL eller en data-URL. Se till att URL:en är korrekt URL-kodad innan du skickar den som en query-parameter.logo_size(Valfri): Anger logotypstorleken som ett tal från 0.1 till 1.0.plate_screws(Valfri): Lägger till skruvar på registreringsskyltar. Fungerar endast tillsammans med parametern logo_url.
Svar
Lyckat svar: (HTTP Status: 200) Tjänsten returnerar den bearbetade bilden i något av följande format: JPEG, PNG, WEBP.
Felsvar: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Suddiggör bild med POST-förfrågan
POST https://blur-api-eu1.watermarkly.com/blur/
eller
POST https://blur-api-us1.watermarkly.com/blur/
Skickar in en bild för bearbetning.
Förfrågan
- Metod:
POST - Content-Type:
application/octet-stream - Headers:
x-api-key: Din API-nyckel
- Query parameters:
blur_intensity(Valfri): Ett flyttal mellan 0.0 och 20.0 som justerar suddighetsstyrkan. Standard: 1.0. Värdet 0.0 stänger av suddiggörning.file_size(Valfri): Anger önskad filstorlek för utdata i byte. Tjänsten försöker returnera en bild som inte överskrider denna storlek.width(Valfri): Anger önskad bredd på utdatabilden.height(Valfri): Anger önskad höjd på utdatabilden.format(Valfri): Anger önskat bildformat för utdata. Möjliga värden: JPEG, PNG, WEBP.logo_url(Valfri): URL till en logotypfil som ska placeras på registreringsskyltar. Kan vara en HTTP-URL eller en data-URL. Se till att URL:en är korrekt URL-kodad innan du skickar den som en query-parameter.logo_size(Valfri): Anger logotypstorleken som ett tal från 0.1 till 1.0.plate_screws(Valfri): Lägger till skruvar på registreringsskyltar. Fungerar endast tillsammans med parametern logo_url.
Svar
Lyckat svar: (HTTP Status: 200) Tjänsten returnerar den bearbetade bilden i något av följande format: JPEG, PNG, WEBP.
Felsvar: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Användningsexempel
Python
import requests
import urllib.parse
API_KEY = 'your_api_key'
API_URL = 'https://blur-api-eu1.watermarkly.com/blur/'
input_path = '' # Local image path
output_path = '' # Local output path
# Blur image using POST request
with open(input_path, 'rb') as image_file:
response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
if response.status_code == 429:
# API rate limit exceeded, wait a little
time.sleep(0.1)
response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
# Save the processed image locally
with open(output_path, 'wb') as f:
f.write(response.content)
# Blur image using GET request
encoded_url = urllib.parse.quote("https://nikitin.io/eqe.jpg", safe='')
response = requests.get(API_URL + "?url=" + encoded_url, headers={'x-api-key': API_KEY})
# Save the response locally
with open(output_path, 'wb') as f:
f.write(response.content)
NodeJS
import { promises as fs } from "node:fs";
const API_KEY = 'your_api_key';
const API_URL = 'https://blur-api-eu1.watermarkly.com/blur/';
// Helper function to pause execution for the given number of milliseconds
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
(async () => {
// Blur image using POST request
try {
const inputPath = 'input_path_here'; // Replace with your actual input path
const outputPath = 'output_path_here'; // Replace with your actual output path
// Read image file as binary data asynchronously
const imageData = await fs.readFile(inputPath);
let response = await fetch(API_URL, {
method: 'POST',
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/octet-stream'
},
body: imageData
});
if (response.status === 429) {
// API rate limit exceeded, wait a little
await sleep(100); // sleep for 0.1 seconds
response = await fetch(API_URL, {
method: 'POST',
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/octet-stream'
},
body: imageData
});
}
// Save the processed image locally asynchronously
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
await fs.writeFile(outputPath, buffer);
} catch (error) {
console.error('Error during POST request:', error);
}
// Blur image using GET request
try {
const outputPath = 'output_path_here'; // Replace with your actual output path
const encodedUrl = encodeURIComponent("https://nikitin.io/eqe.jpg"); // Encode URL
const response = await fetch(`${API_URL}?url=${encodedUrl}`, {
method: 'GET',
headers: {
'x-api-key': API_KEY
}
});
// Save the response locally asynchronously
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
await fs.writeFile(outputPath, buffer);
} catch (error) {
console.error('Error during GET request:', error);
}
})();