API Documentation

Integrate undress, face swap, and animation capabilities into your application.

API Keys

Sign in to create and manage your API keys.

Sign in

Authorization

Pass your API key in the Authorization header of every request.

Authorization: Bearer <your_api_key>

Undress API

Create Undress

POST /api/v1/undress

Accepts the source image, the image mask and one of the styles.

Source image should be base64 encoded image in jpeg format, mask should be base64 encoded image in png format. Mask should contain 2 colors: white for regions which should be undressed and black for rest of the image.

Available styles: standard premium premium_v2 video

video is a special style which generates an undress animation video as the result.

Premium v2 Options

When using premium_v2, you can optionally specify body customization options:

Parameter Type Description
body_shape string | null null (normal), fat, skinny, athletic
boobs string | null null (normal), small, large
hair string | null null (normal), hairy, shaved

Example request with premium_v2 options:

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>", "automask": true, "style": "premium_v2", "body_shape": "athletic", "boobs": "large", "hair": "shaved"}'

Example request:

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>", "style": "standard"}'

Example request with automatic mask generation:

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>", "automask": true, "style": "standard"}'

Example request to generate Animated Undress:

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"}'

For video generation you may send a request to generate a video with undress of the next cloth item using the parent parameter, which should be equal to the id response field of the previous result.

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

Responses:

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

400 {"error": "no_credits"}

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


Animated Undress Face Swap Video

POST /api/v1/undress_face_swap_video

For animated undress you can optionally run a free face swap on the result to improve (usually) face consistency. Typically takes 60-120 seconds to complete.

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

Responses:

201

{
  "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"}

You can check face swap video status using the provided id and standard face swap video endpoint to fetch status.

When face swap video is completed you can fetch undress face swap video status using following endpoint to retrieve the id of the resulted undress to fetch it using the standard undress endpoint.

GET /api/v1/undress_face_swap_video/:id

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

Responses:

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": "616c2b43-c432-416d-8ecb-470a670fbdee"
}

404 {"error": "NOT_FOUND"}


Get Undress Result

GET /api/v1/undress/:id

Returns the generated image and the generated mask or the generation status.

Parameter image is deprecated in favor of result.

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

Responses:

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

200 {"status": "pending"}

200 {"status": "failed"}

404 {"error": "NOT_FOUND"}

FaceSwap API

Create FaceSwap

POST /api/v1/face_swaps

Accepts the face image and the target image.

Face and target images should be base64 encoded images in jpeg, webp, or png format.

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>"}'

Responses:

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

400 {"error": "no_credits"}

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


Get FaceSwap Result

GET /api/v1/face_swaps/:id

Returns the generated image or the generation status.

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

Responses:

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

200 {"status": "pending"}

200 {"status": "failed"}

404 {"error": "NOT_FOUND"}

Face Swap Videos API

Payment Requirement Face swap videos API is only available to users who have completed payments of $100 or more.

402 {"error": "PAYMENT_REQUIRED", "message": "Face swap video API requires a completed payment of $100 or more"}


Analyze Video

POST /api/v1/face_swap_videos/analyze

Calculate the price for processing a video based on its duration.

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"}'

Responses:

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

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

422 video dimensions should not exceed 1920x1080 — {"error": "ANALYSIS_FAILED", "details": "too_large"}


Create Face Swap Video

POST /api/v1/face_swap_videos

Create a new face swap video job using 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"}'

Responses:

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

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


Get Face Swap Video Status

GET /api/v1/face_swap_videos/:id

Check the status of a face swap video job and get the result URL when completed.

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

Responses:

200 Processing

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

200 Completed

{
  "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

The Animate Photo API converts static photos into videos with smooth, natural motion.

Create Animation

POST /api/v1/animations

Accepts a source image and a template ID to create an animation job.

Source image should be a base64 encoded data URI in jpeg, png, or webp format (e.g., data:image/jpeg;base64,/9j/4AAQ...).

Available Templates

The template_id parameter is required and determines the animation style. preset_id is also accepted for backward compatibility (deprecated).

GET /api/v1/animation_templates (also available at /api/v1/animation_presets, deprecated)

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

Example response:

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

The response includes localized names for all supported languages (en, de, es, pt, fr, ru, zh). The name field contains the English name. Each name_XX field contains the translation for that locale, falling back to English if not set.

Current templates:

ID Name
3 Reverse Cowgirl
4 Face Sitting
5 Breast Expansion
6 Doggy Style
8 Cumshot on the face
9 Foot Show
12 Pet Play
13 Squirt
30 Breast Play
16 Solo Breast Play
17 Spooning
18 BBC Deep Throat
19 Blowjob
21 Double Blowjob
7 Dildo Handjob
24 Handjob
26 Double Handjob
29 Standing Doggy
33 Sex Machine
36 Masturbation
38 Doggy POV
1 Missionary POV
45 Missionary Side View
28 Kissing
46 Lesbian Kissing
47 Gay Kissing
48 Smoking
49 Blowjob POV
55 Pregnant

Combo templates combine two animation styles and cost 14 credits instead of 7.

Example request:

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}'

Responses:

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

400 {"error": "no_credits"}

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


Get Animation Result

GET /api/v1/animations/:id

Returns the generated video URL or the generation status.

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

Responses:

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

200 {"status": "pending"}

200 {"status": "failed"}

404 {"error": "NOT_FOUND"}

Changelog

Date Change
15.03.2026 Added combo animation templates (14 credits)
24.02.2026 Renamed animation presets to animation templates; /api/v1/animation_presets still works (deprecated)
03.02.2026 Added localized names to animation presets endpoint
02.02.2026 Added animation presets list endpoint
01.02.2026 Breaking update of the Animate Photo API
21.01.2026 Added Animate Photo API
21.01.2026 Added body_shape, boobs, hair options for premium_v2 style
19.12.2025 Remove basic face swap photo
13.12.2025 Update documentation about undress videos
12.12.2025 Added ability to create undress videos
11.12.2025 Removed legacy options from OpenAPI specification
26.09.2025 Removed information about unsupported undress styles
30.12.2024 Added link to beta version of API documentation
27.12.2024 Added Face Swap Videos API
10.12.2024 Added version field to FaceSwap API
25.10.2024 Added FaceSwap API
18.10.2024 Added premium v2 style
21.09.2024 Added link to OpenAPI specification
21.09.2024 Added information about automatic mask generation
16.09.2024 Added link to pricing page
11.05.2024 Added curl usage example
10.05.2024 Updated API documentation to sync with current version