Remove Watermark

Automatically identify and remove watermarks, logos, hard subtitles, or other unwanted overlays from a video. Supports full-frame cleanup, subtitle-area cleanup, custom-region cleanup, and both ffmpeg / raft purification algorithms.

Before / After

subtitle Mode

Before

After

full_screen Mode

Before

After

Create Task

Basic Information

ItemValue
Request MethodPOST
Request Path/task/video_purify
Content-Typeapplication/json
AuthenticationRaw API key in the Authorization header

Request Body

ParameterTypeRequiredDefaultDescription
file_idstringYes-Uploaded video file ID
purify_scopestringNo"full_screen"Cleanup scope: full_screen / subtitle / custom (clean only the region given by roi)
roiobjectRequired when custom-Custom cleanup region in normalized coordinates (0-1, relative to frame): {"x","y","w","h"}, with w>0, h>0, x+w≤1, y+h≤1
purify_func_typestringNo"ffmpeg"Purification algorithm: ffmpeg (default, faster) or raft (neural inpainting, higher quality, max 20-minute video)

Request Example

curl -X POST https://api.ai-mcn.tv:10000/task/video_purify \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "537489015178246",
    "purify_scope": "subtitle",
    "purify_func_type": "raft"
  }'

custom mode example (clean only the bottom 20% of the frame):

curl -X POST https://api.ai-mcn.tv:10000/task/video_purify \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "537489015178246",
    "purify_scope": "custom",
    "roi": {"x": 0.0, "y": 0.78, "w": 1.0, "h": 0.2}
  }'

Success Example

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "task_type": "video_purify",
    "status": "queued"
  }
}

Query Task Result

Basic Information

ItemValue
Request MethodGET
Request Path/task/video_purify/{task_id}
AuthenticationRaw API key in the Authorization header

Output Result (output_result)

ParameterTypeDescription
file_idstringProcessed video file ID
download_urlstringDownload path for the processed video

Success Example

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "file_id": "537489015178248",
      "download_url": "/download/a1/output.mp4"
    },
    "create_time": "2026-04-05T08:00:00Z",
    "update_time": "2026-04-05T08:01:00Z"
  }
}

Error Codes

Error CodeHTTP StatusDescriptionResolution
6013400Missing file_idPass the file_id field
6016400Invalid purify_func_type / purify_scope, missing or invalid roi in custom mode, or the video is longer than 20 minutes in raft modeCheck purify_func_type / purify_scope / roi, and keep raft mode videos within 20 minutes
6014400File type does not match the taskUpload a video file
6004404File not foundVerify the file_id
6502401Authentication failedCheck the Authorization header
6202402Insufficient balanceRecharge in the Dashboard