PixMind Docs
API Guides

Video subtitle & watermark removal

Submit a video cleanup task and retrieve the processed video.

POST /api-platform/v1/video/remove-subtitles detects subtitles when region is omitted, or processes the supplied rectangle. POST /api-platform/v1/video/remove-watermark requires one fixed rectangle. Coordinates are integer pixels in the original encoded video, with x2 > x1, y2 > y1, entirely inside the frame. Moving or multiple watermark regions are not supported in this release.

ParameterValues
videoUrlPublic HTTP(S) video URL, at most 200 MiB / 600 seconds
enginebase (default), pro
methodBASE only: inpaint (default) or blur; omit for PRO
region{x1,y1,x2,y2}, optional for subtitles, required for watermarks

Normalize video rotation before submitting. PRO requires an MP4 container and a shorter edge no larger than 1080 pixels. PRO availability depends on the server's upload configuration. Billing uses server-probed duration in 30-second blocks and the current API price. Tools API explains billing, idempotency, media uploads, and polling.

curl 'https://aihub-admin.aimix.pro/api-platform/v1/video/remove-watermark' \
  -H "Authorization: Bearer $PIXMIND_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: cleanup-order-001' \
  -d '{"videoUrl":"https://example.com/input.mp4","engine":"base","method":"inpaint","region":{"x1":100,"y1":80,"x2":420,"y2":180}}'
const response = await fetch("https://aihub-admin.aimix.pro/api-platform/v1/video/remove-subtitles", {
  method: "POST", headers: {Authorization: `Bearer ${process.env.PIXMIND_API_KEY}`, "Content-Type": "application/json", "Idempotency-Key": "cleanup-order-002"},
  body: JSON.stringify({videoUrl: "https://example.com/input.mp4", engine: "base", method: "inpaint"})
});
const created = await response.json();
if (!response.ok || created.code !== 1000) throw new Error(created.message);
console.log(created.data.taskId, created.data.statusUrl);
import os, requests
response = requests.post("https://aihub-admin.aimix.pro/api-platform/v1/video/remove-subtitles",
    headers={"Authorization": "Bearer " + os.environ["PIXMIND_API_KEY"], "Idempotency-Key": "cleanup-order-003"},
    json={"videoUrl": "https://example.com/input.mp4", "engine": "base", "method": "inpaint"}, timeout=30)
response.raise_for_status()
created = response.json()
if created["code"] != 1000: raise RuntimeError(created["message"])
print(created["data"])

Create returns {taskId,status:"processing",type,model,statusUrl} inside data. Query GET /api-platform/v1/video/cleanup/tasks/{taskId}. A completed task returns status:"ready", videoUrl, progress, and usage:{credits,units,refunded}. A failed task returns status:"failed" and error:{code,message}; charged failures refund the original API transaction.