Watermark Remover API – Smart AI for Clean, Professional Images & Videos
Overview
The Watermark Remover API provides advanced AI-based watermark detection and removal for both images and videos. It intelligently identifies watermark areas and restores the background naturally — no manual editing required.
Perfect for developers building photo editors, content moderation tools, media platforms, or video restoration pipelines, this API ensures fast, accurate, and scalable performance.
Key Features
- Automatic Watermark Detection – AI automatically locates and removes watermarks
- Mask Support – Upload custom masks for precise control
- Batch Processing – Submit multiple jobs in one API call
- High-Quality Restoration – Seamless fill-in with realistic texture reconstruction
- Supports Images & Videos – Works across formats for flexible media processing
Authentication
All API requests must include an API key:
Authorization: Bearer YOUR_API_KEY
API Host: https://us-center.deep-api.com
🔑 Getting Your API Key
Contact customer support to obtain your unique API key for Watermark Remover integration.
Image Watermark Remover API
Pricing
| Service Type | Credits Required |
|---|---|
| Image Watermark Removal | 5 credits per image |
Endpoint
POST /api/aigc/task/submit
Request Headers
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
aigc_type | string | ✅ | Must be "image_watermark_remove" |
callback_url | string | ✅ | Your endpoint to receive result callbacks via POST |
task_list | array | ✅ | List of tasks (supports batch processing) |
task_list[].additional_params.image_url | string | ✅ | URL of the image file to process |
task_list[].additional_params.mask_url | string | ❌ | Optional grayscale mask (white areas = watermark, black = preserved) |
task_list[].callback_params | object | ❌ | Custom data echoed back in the webhook callback |
Response Format
{
"code": 100000,
"message": "Request Success",
"data": {
"credits_consumed": 1,
"creation_id": "3fe766593eed425e83bf7a36b7321c31",
"task_id_list": [16222903]
}
}
Response Fields
code: Status code (100000= success)credits_consumed: Total credits usedcreation_id: Unique batch identifiertask_id_list: IDs for individual tasks
Example Request
curl --location --request POST \
'https://us-center.deep-api.com/api/aigc/task/submit' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"aigc_type": "image_watermark_remover",
"callback_url": "https://yourapp.com/result/callback",
"task_list": [
{
"additional_params": {
"image_url": "https://your-storage.com/image.jpg",
"mask_url": "https://your-storage.com/mask.png"
},
"callback_params": {
"user_id": "1234"
}
}
]
}'
Video Watermark Remover API
Pricing
| Service Type | Credits Required |
|---|---|
| Video Watermark Removal | 5 credits per second |
Endpoint
POST /api/aigc/task/submit
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
aigc_type | string | ✅ | Must be "video_watermark_remover" |
callback_url | string | ✅ | URL to receive results via POST |
task_list | array | ✅ | List of video removal tasks |
task_list[].additional_params.media_url | string | ✅ | URL of the video to process |
task_list[].additional_params.mask_list | array | ✅ | List of watermark masks with frame ranges |
mask_list[].start_frame | number | ✅ | Starting frame index |
mask_list[].end_frame | number | ✅ | Ending frame index |
mask_list[].mask | string | ✅ | URL of the mask image (white = watermark area) |
task_list[].callback_params | object | ❌ | Custom user data echoed in callback |
Response Format
{
"code": 100000,
"message": "Request Success",
"data": {
"credits_consumed": 1,
"creation_id": "a41f7c58bd4e41ef8a6bc1d1f51364a7",
"task_id_list": [16223004]
}
}
Example Request
curl --location --request POST \
'https://us-center.deep-api.com/api/aigc/task/submit' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"aigc_type": "video_watermark_remover",
"callback_url": "https://yourapp.com/api/callback",
"task_list": [
{
"additional_params": {
"media_url": "https://your-storage.com/video.mp4",
"mask_list": [
{
"start_frame": 0,
"end_frame": 999999,
"mask": "https://your-storage.com/mask1.png"
}
]
},
"callback_params": {
"project_id": "abc123"
}
}
]
}'
💡 Tip: The mask image must be grayscale — white (
255) defines watermark areas, black (0) defines preserved regions. The mask dimensions must exactly match the original video.
Webhook Callbacks
Once processing finishes, results are sent to your callback_url as a JSON POST request.
⚠️ Important:
Each task triggers two separate callbacks:
- Process Start Callback (
process_status = 1) – Sent immediately when the AI starts processing your task.- Process Complete Callback (
process_status = 2) – Sent when the task finishes (successfully or failed).You should handle both callbacks properly:
- Use the start callback to update UI or mark task as “in progress”
- Use the complete callback to retrieve results and finalize the task
- Avoid treating “start” callback as a completion event
Webhook Request Structure
| Field | Type | Description |
|---|---|---|
task_id | string | Unique task identifier |
creation_id | string | Request group ID |
start_time | number | Processing start timestamp |
end_time | number | End timestamp (only on completion) |
cost_time | number | Total processing duration |
result_code | number | 1 = success, -1 = failure (This field value is valid only when process_status=2.) |
error_info | string | Error message (if failed) |
error_code | string | Error code (if failed) |
process_status | number | 1 = processing started, 2 = processing completed |
result_list | array | URLs of processed results (only for process_status = 2) |
request_context | object | Echo of your callback_params |
Retry Logic
- Non-200 HTTP responses trigger up to 4 retries
- Retry intervals: 5s → 30s → 120s → 300s
- Use idempotent task handling to avoid duplicates
Status Codes
| Code | Description |
|---|---|
| 100000 | Success |
| 100010 | Invalid parameters |
| 100030 | Access denied |
| 100040 | Insufficient credits |
| 100099 | Unknown error |
Best Practices
Preparing Masks
- Use white to mark watermark areas (value 255)
- Keep the same dimensions as original media
- Avoid soft edges; use clear boundaries for accuracy
Optimization Tips
- Batch Processing – Combine multiple items in one API call
- Accurate Masking – Improves removal quality and speed
- Shorter Clips – For videos, process only necessary segments
- Webhook Reliability – Handle retries safely with idempotency keys
FAQ
Can the AI remove watermarks automatically?
mask_url is provided, the system automatically detects and removes watermarks using AI vision models.
What file types are supported?
What happens if my callback endpoint is offline?
Can I remove multiple watermarks in a video?
mask_list array, each covering a specific frame range.
How should I store results?
Use Cases
Media & Content Platforms
Automate watermark cleanup for user-generated content or archives.
E-Commerce & Marketing
Remove branding or unwanted marks from product photos for clean visuals.
Video Production
Restore legacy footage and promotional videos by removing embedded watermarks.
AI Training Datasets
Clean watermarked datasets to improve training data quality for computer vision.
Support
For technical support or API access, contact:
- Integration Assistance
- Credit Management
- Webhook Setup Help
- Performance Optimization
API Version: v1
Last Updated: October 2025