Документация API

Интегрируйте возможности раздевания, замены лиц и анимации в ваше приложение.

API-ключи

Войдите, чтобы создавать и управлять вашими API-ключами.

Войти

Авторизация

Передавайте ваш API-ключ в заголовке Authorization каждого запроса.

Authorization: Bearer <your_api_key>

Undress API

Undress API генерирует раздетое изображение — или анимированное видео — по исходной фотографии. Каждый запрос требует заголовок Authorization: Bearer <your_api_key> и тело в формате JSON.

Четыре стиля, сгруппированные здесь как подразделы:

Стиль Результат Кредиты Эндпоинт
Standard Статичное изображение 1 POST /api/v1/undress
Premium v2 Статичное изображение 3 POST /api/v1/undress
Premium v3 Статика высочайшего качества 5 POST /api/v3/undress
Видео Анимированный mp4 7 начальный · 5 при продолжении POST /api/v1/undress

standard, premium_v2 и video используют общий POST /api/v1/undress — выбирайте стиль через поле style, затем опрашивайте GET /api/v1/undress/:id. source_image всегда — изображение в формате jpeg, png или webp, закодированное в base64, размером до 12 МБ. premium_v2 — единственный стиль, где параметры mask/automask действительно влияют на поведение; для остальных v1-стилей сервер всегда автоматически генерирует маску.

Premium v3 расположен на отдельном эндпоинте (POST /api/v3/undress) и всегда работает с одной явно выбранной персоной, поэтому требует предварительного вызова API анализа персон для выбора персоны. См. раздел Premium v3 ниже.

Standard

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

Создание Undress

POST /api/v1/undress

Параметр Тип Обязательно Описание
source_image string (base64) да base64-кодированное изображение jpeg/png/webp, до 12 МБ.
style string да Должно быть "standard".
curl -X POST https://deepstrip.com/api/v1/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "style": "standard"}'

Ответы:

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "no_credits"} — на счёте нет кредитов.

400 {"error": "invalid_params", "errors": ["Image is invalid"]} — ошибка валидации; errors содержит список причин.

400 {"error": "internal_server_error"} — запрос отклонён как аномальный.

Получение результата Undress

GET /api/v1/undress/:id

Опрашивайте до тех пор, пока status не станет completed или failed. result — URL изображения.

curl https://deepstrip.com/api/v1/undress/<identifier> \
  -H "Authorization: Bearer <your_api_key>"

200 {"status": "pending"}

200 {"status": "completed", "result": "<result url>", "image": "<result url>"}image — устаревший алиас для result, сохранён для обратной совместимости.

200 {"status": "failed", "details": "analysis_failed"} — входные данные отклонены (например, человек не обнаружен, несовершеннолетний субъект). Не повторяйте с тем же входом.

200 {"status": "failed", "details": "system_error"} — сама генерация завершилась ошибкой. Безопасно повторить.

404 {"error": "NOT_FOUND"}

Premium v2

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

Создание Undress

POST /api/v1/undress

Параметр Тип Обязательно Описание
source_image string (base64) да base64-кодированное изображение jpeg/png/webp, до 12 МБ.
style string да Должно быть "premium_v2".
mask string (base64) когда automask не true base64-кодированный png, до 1 МБ. Белый = область для раздевания, чёрный = сохранить.
automask boolean опционально true сообщает серверу сгенерировать маску самостоятельно.
body_shape string опционально fat, skinny, athletic или old. Опустите для обычной формы.
boobs string опционально small или large. Опустите для обычных.
hair string опционально hairy или shaved. Опустите для обычных.

С автомаской и настройкой тела:

curl -X POST https://deepstrip.com/api/v1/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "style": "premium_v2", "automask": true, "body_shape": "athletic", "boobs": "large", "hair": "shaved"}'

С маской, предоставленной пользователем:

curl -X POST https://deepstrip.com/api/v1/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "mask": "<base64_encoded_mask_png>", "style": "premium_v2"}'

Ответы:

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "no_credits"}

400 {"error": "invalid_params", "errors": ["Image is invalid"]}

400 {"error": "internal_server_error"} — запрос отклонён как аномальный.

Получение результата Undress

GET /api/v1/undress/:id — та же структура ответа, что и у Standard.

Premium v3

Статичное изображение высочайшего качества — 5 кредитов. В отличие от других стилей, Premium v3 расположен на отдельном эндпоинте (POST /api/v3/undress) и требует предварительного шага обнаружения персоны.

Предварительное условие: сначала вызовите API анализа персон, чтобы получить person_id. Premium v3 всегда работает с одной явно выбранной персоной — отправить фотографию, не выбрав, кого раздевать, нельзя.

Полный поток:

  1. POST /api/v1/persons/analyze с {image_url} → получить id анализа.
  2. Опросить GET /api/v1/persons/analyze/:id до completed → получить список персон с id.
  3. POST /api/v3/undress с тем же image_url и выбранным person_id → получить id undress.
  4. Опросить GET /api/v3/undress/:id до completed или failed.

Никаких mask / automask / тело-параметров — всё определяется по выбранной персоне.

Создать undress

POST /api/v3/undress

Параметр Тип Обязательно Описание
image_url string да HTTPS-URL изображения в формате jpeg, png или webp, до 12 МБ. Должен побайтно совпадать с URL, использованным в анализе персон.
person_id string да id персоны для раздевания из массива persons[] завершённого анализа, принадлежащего тому же API-ключу.
person_gender string опционально Переопределяет определённый детектором пол для этой персоны. Принимает "male" или "female" (регистронезависимо). Используйте, когда детектор ошибся и нужно принудительно выбрать противоположный воркфлоу.
body_shape string опционально, только для женщин Задаёт форму тела. Одно из значений: "as_in_photo" (ИИ сохраняет исходную форму, по умолчанию), "fat", "skinny", "athletic".
boobs string опционально, только для женщин Задаёт размер груди. Одно из значений: "as_in_photo" (ИИ решает сам, по умолчанию), "small", "large", "huge".
curl -X POST https://deepstrip.com/api/v3/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://example.com/photo.jpg", "person_id": "6f2a13e4-5b52-4c39-9a7d-29e80a9c1a62"}'

Ответы:

201 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "invalid_params", "errors": ["image_url is required"]} — отсутствует image_url / person_id, некорректный person_gender, или запись не прошла валидацию модели.

400 {"error": "invalid_person_id"}person_id неизвестен, истёк (> 3 часов), принадлежит другому API-ключу, или переданный image_url не совпадает с проанализированным для этой персоны.

400 {"error": "image_fetch_failed"} — сервер не смог скачать изображение по image_url (не HTTPS, не 2xx, запрещённый content-type, > 12 МБ, таймаут или слишком много редиректов).

400 {"error": "under_age"} — оценённый возраст выбранной персоны меньше 18. Не повторяйте с этой персоной.

400 {"error": "no_credits"} — у аккаунта закончились кредиты.

Перегенерировать (бесплатно, один раз на undress)

POST /api/v3/undress/:id/regenerate

Если результат не устроил, можно бесплатно перегенерировать его с другим случайным сидом. То же исходное изображение, тот же человек, кредиты не списываются. Одна бесплатная перегенерация на родительский undress, только в течение 24 часов после его создания. Переопределение person_gender у родителя (если было) наследуется.

curl -X POST https://deepstrip.com/api/v3/undress/<parent_id>/regenerate \
  -H "Authorization: Bearer <your_api_key>"

Ответы:

201 {"id": "<new_undress_id>"} — опрашивайте GET /api/v3/undress/:id с новым id.

400 {"error": "already_regenerated"} — бесплатная перегенерация уже использована для этого родителя.

400 {"error": "parent_expired"} — родительский undress старше 24 часов.

400 {"error": "parent_not_completed"} — родительский undress ещё не завершён; дождитесь completed перед перегенерацией.

400 {"error": "not_v3"} — через этот эндпоинт можно перегенерировать только premium v3 undress.

404 {"error": "NOT_FOUND"} — родительский id неизвестен или был создан другим API-ключом.

Получить результат undress

GET /api/v3/undress/:id

Та же структура ответа, что и у GET /api/v1/undress/:id.

curl https://deepstrip.com/api/v3/undress/<id> \
  -H "Authorization: Bearer <your_api_key>"

200 {"status": "pending"}

200 {"status": "completed", "result": "<result url>", "image": "<result url>"}image это устаревший алиас для result.

200 {"status": "failed", "details": "analysis_failed"} — ввод отклонён. Не повторяйте с тем же вводом.

200 {"status": "failed", "details": "system_error"} — сама генерация не удалась. Безопасно повторить.

404 {"error": "NOT_FOUND"}

Видео

Анимированный mp4 на выходе — 7 кредитов за начальное видео, 5 кредитов для продолжения со следующим слоем одежды. Всегда автомаска, параметров настройки нет.

Создание Undress

POST /api/v1/undress

Параметр Тип Обязательно Описание
source_image string (base64) да — кроме случаев с parent base64-кодированное изображение jpeg/png/webp, до 12 МБ.
style string да — кроме случаев с parent Должно быть "video".
parent string (uuid) опционально Id предыдущего video-undress для продолжения со следующим предметом одежды. Стиль и источник наследуются; родитель должен быть младше 24 часов. Стоит 5 кредитов.

Начальный анимированный undress — 7 кредитов:

curl -X POST https://deepstrip.com/api/v1/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "style": "video"}'

Продолжить предыдущее видео — 5 кредитов (стиль и источник наследуются от parent):

curl -X POST https://deepstrip.com/api/v1/undress \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"parent": "<id-of-previous-video-undress>"}'

Ответы:

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "no_credits"}

400 {"error": "invalid_params", "errors": ["Image is invalid"]}

400 {"error": "parent_expired"} — родительский undress старше 24 часов.

400 {"error": "too_many_retries"} — бесплатные регенерации для этого parent исчерпаны.

400 {"error": "internal_server_error"} — запрос отклонён как аномальный.

Получение результата Undress

GET /api/v1/undress/:id — та же структура ответа, что и у Standard; result — URL mp4, а не URL изображения.

Замена лица на видео-результате

Применимо только к завершённым undress’ам со стилем video. Выполняет бесплатную замену лица на анимированном результате для улучшения консистентности лица; обычно занимает 60–120 секунд.

POST /api/v1/undress_face_swap_videos

curl -X POST https://deepstrip.com/api/v1/undress_face_swap_videos \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"undress_id": "<id-of-the-video-undress>"}'

200

{
  "id": "69d280ab-42c5-4f49-9881-51076afb1747",
  "face_swap_video_id": "35b4a4a8-e5e6-4613-b1a3-d538b8698d06",
  "undress_id": "69968efe-556d-4805-87bd-1556a49f4e37",
  "undress_result_id": null
}

404 {"error": "NOT_FOUND"} — undress не найден, не принадлежит вызывающему, либо имеет стиль, отличный от video.

GET /api/v1/undress_face_swap_videos/:id

curl https://deepstrip.com/api/v1/undress_face_swap_videos/<identifier> \
  -H "Authorization: Bearer <your_api_key>"

200 Во время обработки undress_result_id равен null. По завершении undress_result_id указывает на новый undress — получите его видео через GET /api/v1/undress/:id:

{
  "id": "69d280ab-42c5-4f49-9881-51076afb1747",
  "face_swap_video_id": "35b4a4a8-e5e6-4613-b1a3-d538b8698d06",
  "undress_id": "69968efe-556d-4805-87bd-1556a49f4e37",
  "undress_result_id": "616c2b43-c432-416d-8ecb-470a670fbdee"
}

404 {"error": "NOT_FOUND"}

API анализа персон

Определяет людей на изображении, чтобы вы могли выбрать конкретную персону для раздевания через Premium v3. Анализы создаются асинхронно и хранятся в кэше 3 часа. Создание ограничено 15 запросами в минуту на один API-ключ.

Байты изображения не загружаются — передайте HTTPS-URL, и детектор сам его скачает.

Создать анализ

POST /api/v1/persons/analyze

Тело запроса

Параметр Тип Обязательно Описание
image_url string да HTTPS-URL изображения в формате jpeg, png или webp. Должен совпадать с URL, который вы позже передадите в POST /api/v3/undress — он участвует в проверке person_id.
curl -X POST https://deepstrip.com/api/v1/persons/analyze \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://example.com/photo.jpg"}'

Ответы

201 {"id": "a1e0b0c8-..."} — опрашивайте GET /api/v1/persons/analyze/:id для получения результата.

400 {"error": "invalid_params", "errors": ["image_url must use HTTPS"]} — отсутствующий, не HTTPS или некорректный URL.

429 {"error": "rate_limited", "retry_after": 37} — более 15 анализов в текущую минуту для этого API-ключа. retry_after — секунды до следующего окна.


Получить результат анализа

GET /api/v1/persons/analyze/:id

Опрашивайте, пока status не станет completed или failed. Запись кэша истекает через 3 часа после создания; далее GET возвращает 404.

curl https://deepstrip.com/api/v1/persons/analyze/<id> \
  -H "Authorization: Bearer <your_api_key>"

Ответы

200 {"status": "pending"} — детектор ещё работает.

200 Завершено, с персонами:

{
  "status": "completed",
  "persons": [
    {
      "id": "6f2a13e4-5b52-4c39-9a7d-29e80a9c1a62",
      "bbox": [112.0, 80.0, 430.0, 920.0],
      "age": 27.3,
      "gender": "female",
      "score": 0.94
    }
  ]
}

Персоны, возраст или пол которых не удалось распознать, отфильтровываются. Передавайте persons[].id как person_id в POST /api/v3/undress.

200 {"status": "completed", "persons": []} — детектор отработал успешно, но не нашёл распознаваемых персон. Это не ошибка; выберите другое изображение.

200 {"status": "failed", "details": "detector_failed"} — детектор не смог обработать URL (недоступно, некорректное изображение, сбой сервиса). Попробуйте позже или с другим URL.

404 {"error": "NOT_FOUND"} — неизвестный id, кэш истёк (> 3 часов) или анализ принадлежит другому API-ключу.


Head & Face Swap API

Создание Head & Face Swap

POST /api/v1/face_swaps

Принимает изображение лица и целевое изображение.

Изображения лица и цели должны быть в формате base64 в форматах jpeg, webp или png.

Чтобы выполнить head swap вместо face swap, добавьте "mode": "head_swap" в тело запроса. По умолчанию mode равен face_swap (3 кредита, заменяет только лицо); head_swap (5 кредитов) заменяет голову целиком.

curl -X POST https://deepstrip.com/api/v1/face_swaps \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"image": "<base64_encoded_image>", "face": "<base64_encoded_face>"}'

Ответы:

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "no_credits"}

400 {"error": "invalid_params", "errors": ["Image is invalid"]}


Получение результата FaceSwap

GET /api/v1/face_swaps/:id

Возвращает сгенерированное изображение или статус генерации.

curl https://deepstrip.com/api/v1/face_swaps/<identifier> \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json"

Ответы:

200 {"status": "completed", "image": "<result image url>"}

200 {"status": "pending"}

200 {"status": "failed"}

404 {"error": "NOT_FOUND"}

Face Swap Videos API


Анализ видео

POST /api/v1/face_swap_videos/analyze

Рассчитать стоимость обработки видео на основе его длительности.

curl -X POST https://deepstrip.com/api/v1/face_swap_videos/analyze \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://example.com/video.mp4", "preview": false, "version": "v2"}'

Ответы:

200 {"price": 4.0, "duration": 20}

400 {"error": "INVALID_VIDEO_URL", "details": ["must be a valid URL", "must use HTTPS"]}

422 размеры видео не должны превышать 1920x1080 — {"error": "ANALYSIS_FAILED", "details": "too_large"}


Создание Face Swap Video

POST /api/v1/face_swap_videos

Создать новую задачу замены лица на видео по URL.

curl -X POST https://deepstrip.com/api/v1/face_swap_videos \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://example.com/video.mp4", "face_url": "https://example.com/face.jpg", "preview": false, "version": "v2"}'

Ответы:

201 {"id": "69d280ab-42c5-4f49-9881-51076afb1747", "status": "created", "message": "Face swap video creation started"}

400 {"error": "VALIDATION_ERROR", "details": ["Video is required"]}


Получение статуса Face Swap Video

GET /api/v1/face_swap_videos/:id

Проверить статус задачи замены лица на видео и получить URL результата после завершения.

curl https://deepstrip.com/api/v1/face_swap_videos/<identifier> \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json"

Ответы:

200 Обработка

{
  "id": "69d280ab-42c5-4f49-9881-51076afb1747",
  "status": "processing",
  "progress": 45.5,
  "step": "working",
  "result_url": null,
  "error_details": null
}

200 Завершено

{
  "id": "69d280ab-42c5-4f49-9881-51076afb1747",
  "status": "completed",
  "progress": 100.0,
  "step": "uploading",
  "result_url": "https://assets.nodress.ai/videos/result.mp4",
  "error_details": null
}

404 {"error": "NOT_FOUND"}

Animate Photo API

Animate Photo API преобразует статические фотографии в видео с плавным, естественным движением.

Создание анимации

POST /api/v1/animations

Принимает исходное изображение и ID шаблона для создания задачи анимации.

Исходное изображение должно быть в формате base64 data URI в формате jpeg, png или webp (например, data:image/jpeg;base64,/9j/4AAQ...).

Доступные шаблоны

Параметр template_id обязателен и определяет стиль анимации. Параметр preset_id также принимается для обратной совместимости (устарел).

GET /api/v1/animation_templates (также доступен по адресу /api/v1/animation_presets, устарел)

curl https://deepstrip.com/api/v1/animation_templates

Пример ответа:

[{"id": 1, "name": "Missionary POV", "name_de": "Missionarsstellung POV", "name_es": "Misionero POV", ..., "combo": false, "price": 7, "price_hd": 14, "undress_before_animation": false}, ...]

Ответ содержит локализованные названия для всех поддерживаемых языков (en, de, es, pt, fr, ru, zh). Поле name содержит английское название. Каждое поле name_XX содержит перевод для соответствующей локали, при отсутствии перевода используется английское название. Поле price — это цена SD; price_hd — цена HD (2x). Поле undress_before_animation сообщает, поддерживает ли шаблон необязательный шаг раздевания перед анимацией (см. ниже).

Текущие шаблоны:

ID Name Combo Price SD (credits) Price HD (credits)
3 Reverse Cowgirl No 7 14
4 Face Sitting No 7 14
5 Breast Expansion No 7 14
6 Doggy Style No 7 14
8 Cumshot on the face No 7 14
9 Foot Show No 7 14
12 Pet Play No 7 14
13 Squirt No 7 14
30 Breast Play No 7 14
16 Breast Play Solo No 7 14
17 Spooning No 7 14
18 Deep Throat BBC No 7 14
19 Blowjob No 7 14
21 Double Blowjob No 7 14
7 Dildo Handjob No 7 14
24 Handjob No 7 14
26 Two-Hand Handjob No 7 14
29 Standing Doggy No 7 14
33 Sex Machine No 7 14
36 Pussy Fingering No 7 14
38 Doggy POV No 7 14
1 Missionary POV No 7 14
45 Missionary Side View No 7 14
28 Kissing No 7 14
46 Lesbian Kissing No 7 14
47 Gay Kissing No 7 14
48 Smoking No 7 14
49 Blowjob POV No 7 14
79 Ahegao No 7 14
55 Pregnant No 7 14
56 Deep Throat with Cumshot BBC Yes 14 28
57 Two Guys Handjob No 7 14
58 Rough Blowjob No 7 14
83 Kissing & Undressing Yes 14 28
75 Pussy Rubbing No 7 14
76 Pussy rubbing with creampie Yes 14 28
77 Riding the gear shift No 7 14
86 Gains weight quickly No 7 14
78 Continue Action No 7 14

Комбо-шаблоны объединяют два стиля анимации и стоят 14 кредитов вместо 7.

Пример запроса:

curl -X POST https://deepstrip.com/api/v1/animations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "template_id": 1}'

Ответы:

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"}

400 {"error": "no_credits"}

400 {"error": "invalid_params", "errors": ["Input is invalid"]}

400 Анализ не пройден — обнаружен несовершеннолетний:

{"error": "analysis_failed", "error_details": {"code": "face.child", "underage_persons": [{"age": 17.6, "face": {"x1": 36, "x2": 99, "y1": 103, "y2": 176}, "body": {"x1": 1, "x2": 170, "y1": 72, "y2": 735}}]}}

400 Анализ не пройден — лицо не найдено:

{"error": "analysis_failed", "error_details": {"code": "no_face_found"}}

HD-качество

По умолчанию анимации рендерятся в SD (до 480x640). Передайте "quality": "hd", чтобы рендерить в HD (до 720x1280), сохраняя исходное соотношение сторон. HD стоит вдвое дороже цены шаблона (например, 14 кредитов за стандартный шаблон, 28 за комбо). Если параметр quality опущен, сохраняются качество SD и цена SD, поэтому существующие интеграции не затрагиваются.

Параметр Тип Обязательно Описание
quality string опционально "sd" (по умолчанию) или "hd". HD рендерит до 720x1280 и стоит 2x цены шаблона (см. price_hd в GET /api/v1/animation_templates).
curl -X POST https://deepstrip.com/api/v1/animations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"source_image": "<base64_encoded_image>", "template_id": 1, "quality": "hd"}'

Для продлённой анимации (parent_id) HD наследуется от родителя, поэтому параметр quality там игнорируется.

Продолжить предыдущую анимацию

Передайте parent_id, чтобы продлить предыдущую анимацию. Новый клип объединяется с видео родителя. В качестве источника всегда используется последний кадр видео родителя — любое source_image в запросе игнорируется. template_id необязателен и по умолчанию совпадает с шаблоном родителя; передайте другой, чтобы сменить стиль. Родителю должно быть меньше 24 часов и у него должен быть сохранён последний кадр.

Продолжить с тем же шаблоном:

curl -X POST https://deepstrip.com/api/v1/animations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"parent_id": "<id-of-previous-animation>"}'

Продолжить с другим шаблоном:

curl -X POST https://deepstrip.com/api/v1/animations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"parent_id": "<id-of-previous-animation>", "template_id": 5}'

400 {"error": "parent_expired"} — родитель старше 24 часов или не имеет сохранённого последнего кадра.

400 {"error": "internal_server_error"} — родитель принадлежит другому пользователю или не существует.

Раздевание перед анимацией

Некоторые шаблоны могут пропустить фотографию через раздевание Premium v3 перед анимацией, чтобы анимация начиналась с раздетого кадра. Это включается по желанию для каждого шаблона: проверьте флаг undress_before_animation, возвращаемый GET /api/v1/animation_templates. Он учитывается только для шаблонов, у которых этот флаг равен true, и только для свежей анимации (он игнорируется, когда передан parent_id).

Промежуточное раздевание — это обычное, видимое в истории раздевание Premium v3, которое тарифицируется отдельно в 3 кредита от анимации (так что стандартный шаблон за 7 кредитов суммарно стоит 10 кредитов). Раздевание сохраняется, даже если анимация впоследствии завершится ошибкой.

Поскольку используется тот же конвейер Premium v3, выбор персоны работает точно так же, как в Premium v3: вы передаёте image_url + person_id (после анализа персон) вместо source_image.

Поток:

  1. POST /api/v1/persons/analyze с {image_url} → id анализа.
  2. Опросить GET /api/v1/persons/analyze/:id до completed → список персон с id.
  3. POST /api/v1/animations с undress_before_animation: true, тем же image_url, выбранным person_id и template_id, у которого undress_before_animation равен true.
  4. Опросить GET /api/v1/animations/:id как обычно.
Параметр Тип Обязательно Описание
undress_before_animation boolean да Должно быть true, чтобы включить этот поток.
image_url string да HTTPS-URL исходного изображения (jpeg/png/webp, до 12 МБ). Должен побайтно совпадать с URL, проанализированным для person_id. Заменяет source_image.
person_id string да id персоны для раздевания из завершённого анализа, принадлежащего тому же API-ключу.
template_id integer да Шаблон, у которого флаг undress_before_animation равен true.
person_gender string опционально Переопределяет определённый детектором пол. "male" или "female" (регистронезависимо).
body_shape string опционально, только для женщин "as_in_photo" (по умолчанию), "fat", "skinny", "athletic".
boobs string опционально, только для женщин "as_in_photo" (по умолчанию), "small", "large", "huge".
curl -X POST https://deepstrip.com/api/v1/animations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"template_id": 1, "undress_before_animation": true, "image_url": "https://example.com/photo.jpg", "person_id": "6f2a13e4-5b52-4c39-9a7d-29e80a9c1a62", "body_shape": "athletic"}'

Ответы (в дополнение к ответам Создание анимации выше):

200 {"id": "69d280ab-42c5-4f49-9881-51076afb1747"} — опрашивайте GET /api/v1/animations/:id с возвращённым id; сначала выполняется раздевание, затем анимация.

400 {"error": "invalid_params", "errors": ["image_url is required"]} — отсутствует image_url / person_id, либо некорректный person_gender / body_shape / boobs.

400 {"error": "invalid_person_id"}person_id неизвестен, истёк (> 3 часов), принадлежит другому API-ключу, или проанализированный для него URL не совпадает с image_url.

400 {"error": "image_fetch_failed"} — сервер не смог скачать изображение по image_url (не HTTPS, не 2xx, запрещённый content-type, > 12 МБ, таймаут или слишком много редиректов).

400 {"error": "under_age"} — оценённый возраст выбранной персоны меньше 18. Не повторяйте с этой персоной.


Получение результата анимации

GET /api/v1/animations/:id

Возвращает URL сгенерированного видео или статус генерации.

curl https://deepstrip.com/api/v1/animations/<identifier> \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json"

Ответы:

200 {"status": "completed", "result": "<result video url>"}

200 {"status": "pending"}

200 {"status": "failed"} — системная ошибка или неизвестный сбой

200 Ошибка — обнаружен несовершеннолетний:

{"status": "failed", "error_details": {"code": "face.child", "underage_persons": [{"age": 17.6, "face": {"x1": 36, "x2": 99, "y1": 103, "y2": 176}, "body": {"x1": 1, "x2": 170, "y1": 72, "y2": 735}}]}}

200 Ошибка — лицо не найдено:

{"status": "failed", "error_details": {"code": "no_face_found"}}

404 {"error": "NOT_FOUND"}

Журнал изменений

Дата Изменение
10.06.2026 Добавлен необязательный параметр mode ("face_swap"/"head_swap") в POST /api/v1/face_swapshead_swap заменяет голову целиком и стоит 5 кредитов. По умолчанию face_swap.
10.06.2026 Исправлен документированный статус успеха эндпоинтов создания (POST /api/v1/undress, /api/v1/face_swaps, /api/v1/animations, /api/v1/undress_face_swap_videos) с 201 на 200 в соответствии с фактическими ответами.
29.05.2026 Добавлен необязательный параметр quality ("sd"/"hd") в POST /api/v1/animations — HD рендерит до 720x1280 и стоит 2x цены шаблона. По умолчанию SD. Добавлено поле price_hd в GET /api/v1/animation_templates.
22.05.2026 Добавлено необязательное «раздевание перед анимацией» в POST /api/v1/animations (undress_before_animation + image_url + person_id, Premium v3, дополнительно 3 кредита). Добавлен флаг undress_before_animation в GET /api/v1/animation_templates.
29.04.2026 Добавлено значение "athletic" в опции body_shape для Premium v3 (POST /api/v3/undress).
24.04.2026 Упрощён person_gender в Premium v3: принимаются только "male" и "female" (псевдонимы "man"/"woman" больше не поддерживаются). Внутреннее поле gender_score удалено из документации ответа Persons Analysis.
24.04.2026 Реорганизована документация API: Undress стал единым разделом с подсекциями Standard, Premium v2, Premium v3, Video. В описании Premium v3 теперь явно указана ссылка на Persons Analysis API как обязательный шаг.
21.04.2026 Добавлен POST /api/v3/undress/:id/regenerate — одна бесплатная перегенерация на родительский undress, действительна 24 часа.
21.04.2026 Breaking: Стиль premium_v3 удалён из POST /api/v1/undress; Premium v3 теперь доступен через POST /api/v3/undress и требует image_url + person_id. Добавлены POST /api/v1/persons/analyze + GET /api/v1/persons/analyze/:id (15 запросов/мин на API-ключ, кэш 3 часа).
20.04.2026 Цена premium_v3 снижена с 10 кредитов до 5 кредитов
19.04.2026 Раздел Undress API переписан; исправлен URL /api/v1/undress_face_swap_videos (множественное число), задокументировано поле details в failed, добавлены too_many_retries/parent_expired/internal_server_error, добавлено old в опции body_shape
07.04.2026 Premium v3 упрощён до единого стиля premium_v3 с разрешением 2.0 MP, фиксированно 10 кредитов
01.04.2026 Добавлены стили Premium v3
28.03.2026 Добавлен error_details в ответы API анимации (обнаружение несовершеннолетних и отсутствие лица)
15.03.2026 Добавлены комбо-шаблоны анимации (14 кредитов)
24.02.2026 Пресеты анимации переименованы в шаблоны анимации; /api/v1/animation_presets по-прежнему работает (устарел)
03.02.2026 Добавлены локализованные названия в эндпоинт пресетов анимации
02.02.2026 Добавлен эндпоинт списка пресетов анимации
01.02.2026 Критическое обновление Animate Photo API
21.01.2026 Добавлен Animate Photo API
21.01.2026 Добавлены опции body_shape, boobs, hair для стиля premium_v2
19.12.2025 Удалена базовая замена лица на фото
13.12.2025 Обновлена документация о видео раздевания
12.12.2025 Добавлена возможность создания видео раздевания
11.12.2025 Удалены устаревшие опции из спецификации OpenAPI
26.09.2025 Удалена информация о неподдерживаемых стилях раздевания
30.12.2024 Добавлена ссылка на бета-версию документации API
27.12.2024 Добавлен Face Swap Videos API
10.12.2024 Добавлено поле version в FaceSwap API
25.10.2024 Добавлен FaceSwap API
18.10.2024 Добавлен стиль premium v2
21.09.2024 Добавлена ссылка на спецификацию OpenAPI
21.09.2024 Добавлена информация об автоматической генерации масок
16.09.2024 Добавлена ссылка на страницу цен
11.05.2024 Добавлен пример использования curl
10.05.2024 Обновлена документация API для синхронизации с текущей версией