uncloth.app Гайды
Результат, сгенерированный API uncloth.app

Adult-фильтры
для ваших приложений

Одна точка входа. Одиннадцать пресетов. Отправьте фото и получите готовый результат — при любом объёме, на котором работает ваша платформа.

Создан для работы в продакшене

uncloth.app — это API трансформации изображений для платформ, которым генерируемые изображения нужны как надёжная часть продукта, а не как эксперимент. Вы отправляете фото и нужный пресет. Мы возвращаем готовый результат.

Всё, что стоит за точкой входа, эксплуатируем мы — мощности, очередь, доставку и восстановление. Ваша интеграция — это один аутентифицированный HTTP-вызов и, если нужен прогресс в реальном времени, одно WebSocket-соединение.

Ничто в запросе не зависит от того, насколько мы загружены. Один и тот же вызов ведёт себя одинаково в первый день и на пике нагрузки.

Одно фото, все пресеты

Каждый результат ниже получен из одной и той же исходной фотографии — в запросе менялся только id пресета.

Одиннадцать пресетов

Передайте feature=<id> вместе с задачей. Если не передать, запрос по умолчанию использует undress. Неизвестный id отклоняется вместе со списком допустимых значений, поэтому опечатка приводит к явной ошибке, а не к чужому изображению.

01
Бикиниfeature=bikini
02
Размер грудиfeature=breast_size
03
Костюм зайкиfeature=bunny_suit
04
Кружевное бельёfeature=lace_lingerie
05
Шибариfeature=shibari
06
Чулкиfeature=stocking
07
Татуировкаfeature=tattoo
08
РаздетьПо умолчаниюfeature=undress
09
Костюм чирлидершиfeature=cheerleader_outfit
10
Футбольная формаfeature=footy
11
Обнажённая грудьfeature=flash_tits

Четыре вызова от начала до конца

01

Отправьте фото

Multipart-запрос POST с изображением, пресетом и подтверждением согласия. Идентификатор задачи возвращается сразу.

02

Отслеживайте

Опрашивайте эндпоинт задачи или подпишитесь на WebSocket, чтобы получать события о ходе работы в реальном времени.

03

Заберите результат

Завершённая задача содержит идентификатор артефакта. Запросите его с тем же ключом и получите байты изображения.

04

Повтор без оплаты

Повторите вызов с тем же Idempotency-Key — и получите исходную задачу. Повтор никогда не создаёт второй результат.

Вся интеграция целиком

Один заголовок аутентифицирует каждый вызов. Любой ответ ограничен клиентом, которому принадлежит ключ, — включая задачи, события и результаты.

POST/api/v1/jobsСоздать задачу. Multipart: image, feature, consent. Заголовок Idempotency-Key.
GET/api/v1/jobs/:idСтатус задачи, прогресс и идентификатор результата.
GET/api/v1/artifacts/:idСкачать сгенерированное изображение.
GET/api/v1/featuresСписок пресетов. Публичный, ключ не требуется.
WS/api/v1/wsСобытия job.updated в реальном времени после сообщения авторизации.

Базовый URL выдаётся вместе с ключом.

Создать задачу
curl -X POST https://api.uncloth.app/api/v1/jobs \
  -H "X-API-Key: $UNCLOTH_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F feature=bikini \
  -F consent=confirmed \
  -F image=@photo.jpg

# { "data": { "id": "job_...", "status": "queued" } }
Забрать результат
curl -H "X-API-Key: $UNCLOTH_KEY" \
  https://api.uncloth.app/api/v1/jobs/JOB_ID

# { "data": { "status": "succeeded",
#     "outputs": [ { "id": "art_..." } ] } }

curl -H "X-API-Key: $UNCLOTH_KEY" \
  https://api.uncloth.app/api/v1/artifacts/ART_ID \
  -o result.png

Спроектирован, чтобы всегда отвечать

Мы обслуживаем мощности, очередь и путь доставки, чтобы этого не пришлось делать вашей платформе. Это обязательства о том, как сервис построен и эксплуатируется.

Удаляем через 10 минут

Ваше изображение удаляется из наших систем через 10 минут после того, как вы получили результат. Ничего не сохраняется — ни для обучения, ни для проверки, ни для чего-либо ещё.

Целевая доступность 99,9%

Уровень сервиса, на который мы проектируем, работаем и по которому измеряем себя; отслеживается на границе API, а не на отдельном компоненте.

Глобальная инфраструктура

Запросы обслуживаются распределёнными мощностями, поэтому спрос в одном регионе не превращается в очередь для всех остальных.

Автоматическое масштабирование

Мощности следуют за нагрузкой. Всплеск трафика меняет пропускную способность, но не форму API и не то, как ваш код его вызывает.

Отказоустойчивость по умолчанию

Любой отдельный компонент можно вывести из работы или заменить без перерыва, который пришлось бы обрабатывать вам. Работа в процессе восстанавливается, а не теряется.

Изоляция по ключу

Ключ видит только свои задачи, события и результаты. Ответы никогда не раскрывают внутренние идентификаторы или детали инфраструктуры.

Идемпотентность по контракту

Заголовок Idempotency-Key делает повторы безопасными. Повтор возвращает исходную задачу вместо повторного выполнения работы.

Надёжная очередь

Принятая работа фиксируется до начала выполнения и восстанавливается после. Перезапуск в любой точке пути не приводит к потере вашей задачи.

Строгая проверка входных данных

JPEG, PNG и WebP до 20 MiB, проверяются по содержимому, а не только по имени или заявленному типу файла.

Частые вопросы

Как проходит аутентификация?

Заголовок X-API-Key в REST-вызовах. В WebSocket ключ передаётся в первом сообщении после подключения, поэтому он никогда не попадает в URL или лог прокси.

Что будет, если запрос завершится по таймауту?

Повторите его с тем же Idempotency-Key. Вы получите исходную задачу, второй результат не создаётся.

Какие форматы и размеры принимаются?

JPEG, PNG и WebP до 20 MiB. Проверяется фактическое содержимое файла, поэтому переименованный или неверно помеченный файл отклоняется.

Можно ли применить несколько пресетов к одному фото?

Да. Каждый пресет — это отдельная задача, поэтому отправьте по одной задаче на пресет с тем же исходным изображением и отслеживайте их независимо.

Обязательно ли опрашивать статус?

Нет. Подключитесь к WebSocket, пройдите аутентификацию — и вы получите снимок ваших недавних задач, а затем обновления в реальном времени. Опрос остаётся доступен как запасной вариант.

Проверяется ли согласие?

Да. Вызов создания без consent=confirmed отклоняется на границе API. Это обязательное поле и заявление, за которое вы несёте ответственность.

Сколько это стоит?

Цена зависит от объёма и называется вместе с выдачей доступа. Расскажите о своей платформе и ожидаемой нагрузке — мы вернёмся с цифрами.

Храните ли вы мои изображения?

Исходные изображения и результаты хранятся в приватном хранилище и выдаются только тому ключу, который их создал. Условия хранения согласуются при выдаче доступа.

Расскажите, что вы строите

Доступ выдаётся под конкретную интеграцию. Опишите свою платформу, ожидаемый объём и то, как вы собираете согласие людей на изображениях, — и мы вышлем учётные данные и базовый URL.

Публичной регистрации нет. Самостоятельной выдачи ключей нет.