REST API. Размытие лиц и номерных знаков на фотографиях

Watermarkly Blur API автоматически распознаёт и размывает лица и номерные знаки на изображениях. API полностью работает на инфраструктуре AWS и ориентирован на конфиденциальность — ваши файлы никогда не используются для обучения ИИ-моделей.
Мы используем AWS Lambda для параллельной обработки тысяч запросов, обеспечивая надёжную производительность и доступность в разных регионах мира.

Попробовать бесплатно

Мы распространяем API через AWS Marketplace. Стоимость: $0.01 за запрос. Доступна бесплатная пробная версия на 7 дней.


Основные функции

Автоматическое распознавание и размытие лиц и номерных знаков на изображениях

Возможность заменить номерные знаки логотипом вашей компании или проекта

Можно изменить размер, обрезать или конвертировать обработанные изображения

Поддержка до 500 запросов в секунду

Параллельная обработка изображений для повышения скорости

Максимальный поддерживаемый размер изображения: 6000 × 6000 пикселей

Для работы с API требуется аутентификация через API-ключ

Если вам нужно более быстрое выполнение, поддержка изображений большего размера или повышенный лимит запросов, свяжитесь с нами по адресу api-support@watermarkly.com.


Примеры вывода

Лицо женщины и номерной знак размыты.

API для размытия лиц и номерных знаков на изображениях

Номерной знак заменён логотипом компании, лицо женщины размыто.

API для размытия лиц и номерных знаков на изображениях

Получить API

Мы распространяем API через AWS Marketplace. Стоимость: $0.01 за запрос. Доступна бесплатная пробная версия на 7 дней.


Подробности обработки

  • Обработанные изображения не сохраняются на наших серверах.
  • Сервис принимает изображения в форматах JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
  • Изображения в форматах AVIF и HEIF будут преобразованы в JPEG, если не указан другой формат.
  • Максимальный размер входного изображения:
    • GET-запросы: 20MB или 6000x6000 пикселей
    • POST-запросы: 6MB или 6000x6000 пикселей
  • Лимиты API:
    • 500 параллельных запросов
    • 500 запросов в секунду
    • 100,000 запросов в день

Конечные точки API

Регионы

В настоящее время API доступен в двух регионах:

Вы можете использовать любой из этих конечных точек. Вторую точку можно использовать в качестве резервной в случае сбоя региона AWS.
Если вам нужен API в другом регионе, пожалуйста, свяжитесь с нами.

Методы запросов

Вы можете отправлять изображения на обработку с помощью GET или POST запросов.
Если ваши изображения находятся в открытом доступе, мы рекомендуем GET запросы, так как они немного быстрее, чем POST.

Размытие изображения с использованием GET-запроса (рекомендуется)

GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}

или

GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}

Сервис загружает изображение по image_url и обрабатывает его.

Запрос

  • Метод: GET
  • Параметры URL:
    • url (Обязательно): Полный URL изображения для обработки.
    • blur_intensity (Необязательно): Число от 0.0 до 20.0, определяющее степень размытия. По умолчанию: 1.0. Значение 0.0 отключает размытие.
    • file_size (Необязательно): Указывает желаемый размер выходного файла в байтах.
    • width (Необязательно): Указывает желаемую ширину выходного изображения.
    • height (Необязательно): Указывает желаемую высоту выходного изображения.
    • format (Необязательно): Указывает формат выходного изображения (JPEG, PNG, WEBP).
    • logo_url (Необязательно): URL-адрес логотипа для замены автомобильных номеров.
    • logo_size (Необязательно): Указывает размер логотипа (от 0.1 до 1.0).
    • plate_screws (Необязательно): Добавляет болты к номерным знакам (работает только с logo_url).

Ответ

Успешный ответ: (HTTP Status: 200) Возвращает обработанное изображение в формате JPEG, PNG, WEBP.

Ошибка: (HTTP Status: 500, 403)

{
  "message": "Ошибка обработки"
}

Размытие изображения с использованием POST-запроса

POST https://blur-api-eu1.watermarkly.com/blur/

или

POST https://blur-api-us1.watermarkly.com/blur/

Отправляет изображение на обработку.

Запрос

  • Метод: POST
  • Content-Type: application/octet-stream
  • Заголовки:
    • x-api-key: Ваш API-ключ.
  • Параметры запроса:
    • blur_intensity, file_size, width, height, format, logo_url, logo_size, plate_screws — такие же, как в GET.

Ответ

Успешный ответ: (HTTP Status: 200) Возвращает обработанное изображение в формате JPEG, PNG, WEBP.

Ошибка: (HTTP Status: 500, 403)

{
  "message": "Ошибка обработки"
}

Детали обработки

  • Обработанные изображения не сохраняются на серверах.
  • Поддерживаемые форматы: JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
  • AVIF и HEIF автоматически конвертируются в JPEG, если не указан другой формат.
  • Максимальный размер входного изображения:
    • GET-запросы: 20MB или 6000x6000 пикселей.
    • POST-запросы: 6MB или 6000x6000 пикселей.
  • Ограничения API:
    • 500 параллельных запросов
    • 500 запросов в секунду
    • 100 000 запросов в день
  • Для увеличения лимитов свяжитесь с api-support@watermarkly.com.

Безопасность и конфиденциальность

  • API-запросы требуют аутентификации с использованием API-ключа.
  • Файлы клиентов не используются для обучения ИИ.
  • Вся обработка выполняется в инфраструктуре AWS. Мы можем развернуть API в любом регионе по вашему запросу.

Примеры использования

Python

import requests
import urllib.parse
import time

API_KEY = 'your_api_key'
API_URL = 'https://blur-api-eu1.watermarkly.com/blur/'

input_path = 'input.jpg'
output_path = 'output.jpg'

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:
        time.sleep(0.1)
        response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)

with open(output_path, 'wb') as f:
    f.write(response.content)

Node.js

import { promises as fs } from "fs";

const API_KEY = 'your_api_key';
const API_URL = 'https://blur-api-eu1.watermarkly.com/blur/';

(async () => {
  const inputPath = 'input.jpg';
  const outputPath = 'output.jpg';
  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
  });

  await fs.writeFile(outputPath, Buffer.from(await response.arrayBuffer()));
})();