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 TypeCredits Required
Image Watermark Removal5 credits per image

Endpoint

POST /api/aigc/task/submit

Request Headers

Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

Request Parameters

ParameterTypeRequiredDescription
aigc_typestringMust be "image_watermark_remove"
callback_urlstringYour endpoint to receive result callbacks via POST
task_listarrayList of tasks (supports batch processing)
task_list[].additional_params.image_urlstringURL of the image file to process
task_list[].additional_params.mask_urlstringOptional grayscale mask (white areas = watermark, black = preserved)
task_list[].callback_paramsobjectCustom 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 used
  • creation_id: Unique batch identifier
  • task_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 TypeCredits Required
Video Watermark Removal5 credits per second

Endpoint

POST /api/aigc/task/submit

Request Parameters

ParameterTypeRequiredDescription
aigc_typestringMust be "video_watermark_remover"
callback_urlstringURL to receive results via POST
task_listarrayList of video removal tasks
task_list[].additional_params.media_urlstringURL of the video to process
task_list[].additional_params.mask_listarrayList of watermark masks with frame ranges
mask_list[].start_framenumberStarting frame index
mask_list[].end_framenumberEnding frame index
mask_list[].maskstringURL of the mask image (white = watermark area)
task_list[].callback_paramsobjectCustom 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:

  1. Process Start Callback (process_status = 1) – Sent immediately when the AI starts processing your task.
  2. 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

FieldTypeDescription
task_idstringUnique task identifier
creation_idstringRequest group ID
start_timenumberProcessing start timestamp
end_timenumberEnd timestamp (only on completion)
cost_timenumberTotal processing duration
result_codenumber1 = success, -1 = failure (This field value is valid only when process_status=2.)
error_infostringError message (if failed)
error_codestringError code (if failed)
process_statusnumber1 = processing started, 2 = processing completed
result_listarrayURLs of processed results (only for process_status = 2)
request_contextobjectEcho 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

CodeDescription
100000Success
100010Invalid parameters
100030Access denied
100040Insufficient credits
100099Unknown 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

  1. Batch Processing – Combine multiple items in one API call
  2. Accurate Masking – Improves removal quality and speed
  3. Shorter Clips – For videos, process only necessary segments
  4. Webhook Reliability – Handle retries safely with idempotency keys

FAQ

Can the AI remove watermarks automatically?
Yes. If no mask_url is provided, the system automatically detects and removes watermarks using AI vision models.
What file types are supported?
Common formats like JPG, PNG, MP4, MOV, and WebM are supported. For best performance, use uncompressed or lightly compressed sources.
What happens if my callback endpoint is offline?
The API retries up to four times with increasing intervals. Make sure your endpoint returns HTTP 200 to confirm receipt.
Can I remove multiple watermarks in a video?
Yes. Use multiple masks in the mask_list array, each covering a specific frame range.
How should I store results?
Result URLs are valid for 2 hours. Download and store the clean output files in your own infrastructure for long-term use.

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