AI Undress
AI Services
AI Undress
Generate AI-transformed images using Freepik Seedream 4.5 Edit and xAI Grok with multi-provider fallback
POST
AI Undress
This endpoint generates AI-transformed images using advanced image editing models. It supports two quality tiers with automatic provider selection and fallback logic.
Model ID:
Models:
Retry Logic:
Default xAI Prompt:
Custom Prompts:
Provider Input Preparation:
Automatic Refund:
Refund Triggers:
Authentication
Requires user authentication and explicit consent acceptance.Consent Requirement
Credit Cost
Quality Tiers:Credits are deducted upfront before generation starts. Automatic refunds are issued on generation failures.
Rate Limits
- Daily Limit: 30 generations per user per 24-hour period
- Concurrent Limit: 3 active generations per user
- Reset: Daily limit resets at midnight UTC
Request
The image file to transform (multipart/form-data upload).Supported Formats:
- JPEG (image/jpeg, image/jpg)
- PNG (image/png)
- WebP (image/webp)
The quality tier to use:
low- Freepik Seedream 4.5 Edit (25 credits)high- xAI Grok Image Pro (45 credits)
Request Example (multipart/form-data)
Response
Whether the generation succeeded.
The URL of the generated image (Supabase storage).
Database ID for the generation record.
The quality tier used (
low or high).The actual provider used:
freepik- Freepik Seedream 4.5 Editxai- xAI Grok Image API
Time taken for generation in milliseconds.
Number of credits deducted for this generation.
User’s remaining credit balance after deduction.
Success Response
Error Responses
Error message describing what went wrong.
Error code for programmatic handling:
DAILY_LIMIT_REACHED- User hit 30/day limitCONCURRENT_LIMIT_REACHED- User has 3 active generationsINSUFFICIENT_CREDITS- Not enough creditsPROVIDER_UNAVAILABLE- Both providers are down
Error Examples
Implementation Details
Provider Strategy
Low Quality (quality=low):
- Primary: Freepik Seedream 4.5 Edit (40s budget)
- Fallback: xAI Grok Image (on timeout/failure)
quality=high):
- Primary: xAI Grok Image Pro (50s budget)
- Fallback: Freepik Seedream 4.5 Edit (on timeout/failure)
- Set
UNDRESS_PRIMARY_PROVIDER=freepikto prefer Freepik for high quality - Default: xAI is primary for high quality
Freepik Integration
API: Freepik Seedream v4.5 Edit (/v1/ai/text-to-image/seedream-v4-5-edit)Model ID:
freepik/seedream-v4-5-edit
Request Flow:
- Create task with
enable_safety_checker: false - Poll for completion (1s intervals, 55s timeout)
- Select highest-resolution output from generated URLs
- Task creation: 25s
- Polling interval: 1s
- Total poll timeout: 55s
- Output selection: 15s
- URL attempts fallback to base64 on fetch failures
- Transient errors (429, 5xx) use exponential backoff
- Safety checker rejections are non-retriable
xAI Integration
API: xAI Image Edits (/v1/images/edits)Models:
- Primary:
grok-imagine-image-pro(configurable viaXAI_UNDRESS_MODEL) - Fallback:
grok-imagine-image
- 4 transient retries (429, 5xx) with exponential backoff (500ms → 4s)
- URL to base64 fallback on fetch failures
- Model fallback (pro → standard) on persistent failures
Prompt Engineering
Default Freepik Prompt:- Admins can override via
/api/undress/prompt/update - Stored per-user in
userstable - Max length: 4096 characters
Image Processing
Upload Flow:- Original uploaded to
users/{userId}/undress/original/ - Provider input prepared (aspect ratio normalized)
- Provider input uploaded to
users/{userId}/undress/provider/ - Result saved to
users/{userId}/undress/result/
- Analyze dimensions with Sharp
- Select nearest Freepik aspect ratio
- Preserve metadata for xAI
Credit Management
Upfront Deduction:- Generation returns error
- Provider times out
- No output URL returned
- Safety checker rejection (Freepik)
Database Tracking
Table:undress_generations
Usage Notes
Provider Status: Check
/api/undress/status before initiating generations to avoid hitting unavailable providers. The endpoint returns detailed provider availability.Automatic Cleanup: Failed generations are automatically cleaned up after 24 hours. Stuck generations can be manually cleared via
/api/undress/clear-stuck.Related Endpoints
- POST /api/undress/consent - Accept AI Undress consent policy
- GET /api/undress/consent/status - Check consent state
- GET /api/undress/status - Provider availability status
- POST /api/undress/:id/download - Download generation result
- POST /api/undress/save-result - Save result to Media Vault
- POST /api/undress/clear-stuck - Clear stuck generations
- GET /api/user/credits - Check credit balance