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
| Item | Value |
|---|---|
| Request Method | POST |
| Request Path | /task/video_purify |
| Content-Type | application/json |
| Authentication | Raw API key in the Authorization header |
Request Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
file_id | string | Yes | - | Uploaded video file ID |
purify_scope | string | No | "full_screen" | Cleanup scope: full_screen / subtitle / custom (clean only the region given by roi) |
roi | object | Required 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_type | string | No | "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
| Item | Value |
|---|---|
| Request Method | GET |
| Request Path | /task/video_purify/{task_id} |
| Authentication | Raw API key in the Authorization header |
Output Result (output_result)
| Parameter | Type | Description |
|---|---|---|
file_id | string | Processed video file ID |
download_url | string | Download 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 Code | HTTP Status | Description | Resolution |
|---|---|---|---|
6013 | 400 | Missing file_id | Pass the file_id field |
6016 | 400 | Invalid purify_func_type / purify_scope, missing or invalid roi in custom mode, or the video is longer than 20 minutes in raft mode | Check purify_func_type / purify_scope / roi, and keep raft mode videos within 20 minutes |
6014 | 400 | File type does not match the task | Upload a video file |
6004 | 404 | File not found | Verify the file_id |
6502 | 401 | Authentication failed | Check the Authorization header |
6202 | 402 | Insufficient balance | Recharge in the Dashboard |