API Documentation
Integrate undress, face swap, and animation capabilities into your application.
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 |