SnipHunter API

Video

视频剪辑、字幕、水印、画质增强与生成。

Base URL https://api.sniphunter.com

OpenAPI JSON · 完整 Markdown

请求与响应中的 $ref 在 OpenAPI 的 components 中定义。

50 个接口

Video

POST/api/v1/video/ai/bg-removeVideo Bg Removal

视频抠图(同步兼容)。推荐:POST /video/tasks/bg-remove + GET /api/v1/tasks/{id}

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoBgRemoveRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/ai/capabilitiesVideo Generate Capabilities

文生视频能力:已配置供应商 + xbai/H3 capabilities(失败不 5xx)。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    }
  }
}
POST/api/v1/video/ai/enhanceVideo Enhance

视频 AI 增强(同步兼容)。推荐:POST /video/tasks/enhance + GET /api/v1/tasks/{id}

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoEnhanceRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/generateVideo Generate

文生视频。geekai=Seedance;xbai=MiniMax H3 自建卡。 需登录;按 tool_type=video_ai_generate 扣积分。 xbai 立即返回本系统 task_id,用 GET /video/ai/generate/{task_id} 轮询。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoGenerateRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/ai/generate/{task_id}Video Generate Status

查询文生视频异步任务。xbai 为本系统 task_id;GeekAI 为上游 task_id。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "title": "Task Id"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/generate/{task_id}/cancelVideo Generate Cancel

取消 xbai 生视频任务。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string",
        "title": "Task Id"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/subtitle-detectSubtitle Detect

自动检测字幕条带区域,返回推荐区域供前端回填。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SubtitleDetectRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/subtitle-removeSubtitle Remove

视频去字幕(同步,兼容移动端;Web/Extension 请用异步任务接口) 推荐:POST /api/v1/video/tasks/subtitle-removal + GET .../{task_id} - 区域二选一:传 region(像素)→ 去该区域;不传 → auto(底部字幕带) - mode=fast|standard|high(全部 OpenCV TELEA/NS,由 Media 按档调参)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SubtitleRemoveRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/upscaleVideo Upscale

视频超分(同步兼容)。推荐:POST /video/tasks/upscale + GET /api/v1/tasks/{id}

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoUpscaleRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/ai/watermark-removeWatermark Remove

AI 去水印(Infer / ProPainter 链路)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/AIWatermarkRemovalRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/add-coverAdd Cover

添加封面

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/AddCoverRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/compressCompress Video

视频压缩。预设: wechat, douyin, kuaishou, bilibili, weibo

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoCompressRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/convertConvert Format

视频格式转换

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/FormatConvertRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/cropCrop Video

视频裁剪:mode=pixel|ratio|platform

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoCropRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/export-keyframeExport Keyframe

导出关键帧

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ExportKeyframeRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/extract-framesExtract Frames

视频抽帧

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ExtractFramesRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/extract-shotsExtract Shots Compat

镜头切分(兼容路径) 推荐使用独立原子接口 POST /api/v1/video/extract-shots。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ShotExtractionRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/basic/formatsGet Supported Formats

获取支持的视频格式(元数据,无需鉴权)

{
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    }
  }
}
POST/api/v1/video/basic/modify-md5Modify Md5

修改视频MD5

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__basic__ModifyMd5Request"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/remove-audioRemove Original Sound

消除原声 - 移除视频音轨(ffmpeg -an)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__BaseVideoRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/stitchStitch Videos

视频拼接

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoStitchingRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/to-audioVideo To Audio

视频转音频 —— 委托 audio_extract,与 /audio/basic/extract 行为一致

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoToAudioRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/basic/trimTrim Video

视频时长裁剪

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoTrimRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/burn-subtitleBurn Subtitle

烧录硬字幕(FFmpeg)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/BurnSubtitleRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/doodle-watermarkAdd Doodle Watermark

添加涂鸦水印

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__DoodleWatermarkRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/effectVideo Effect

视频特效(FFmpeg)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoEffectRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/effects/effectsList Effects

{
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    }
  }
}
POST/api/v1/video/effects/filterVideo Filter

视频滤镜(FFmpeg)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoFilterRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/effects/filtersList Filters

{
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    }
  }
}
POST/api/v1/video/effects/mirrorMirror Video

对称镜像

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__MirrorRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/reverseReverse Video

视频倒放

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__BaseVideoRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/smudgeSmudge

区域打码/模糊(CPU)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SmudgeRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/sticker-watermarkAdd Sticker Watermark

添加贴纸水印

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__StickerWatermarkRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/text-watermarkAdd Text Watermark

添加文字水印

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__TextWatermarkRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/effects/to-gifVideo To Gif

视频转GIF(高质量 palette)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoToGifRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/extract-shotsExtract Shots

视频镜头提取(独立原子能力) 检测视频中的场景切换,提取各个镜头。不属于素材提取流程。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ShotExtractionRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/MediaResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/bg-removeCreate Bg Remove Task

提交视频抠图任务

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoBgRemoveTaskRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AsyncTaskCreateResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/enhanceCreate Enhance Task

提交视频 AI 增强任务

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoEnhanceTaskRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AsyncTaskCreateResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/subtitle-removalCreate Subtitle Removal Task

提交去字幕任务(统一 async_media_tasks + Celery)。 立即返回 task_id,客户端轮询 GET /subtitle-removal/{task_id}。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SubtitleRemovalRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SubtitleRemovalTaskResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/subtitle-removal-from-fileCreate Subtitle Removal Task From File

上传文件并创建去字幕任务(公共仅 mode)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "multipart/form-data": {
        "schema": {
          "$ref": "#/components/schemas/Body_create_subtitle_removal_task_from_file_api_v1_video_tasks_subtitle_removal_from_file_post"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SubtitleRemovalTaskResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/subtitle-removal/historyGet Subtitle Removal History

获取当前用户的去字幕任务历史(async_media_tasks)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "page",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "minimum": 1,
        "default": 1,
        "title": "Page"
      }
    },
    {
      "name": "page_size",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "maximum": 50,
        "minimum": 1,
        "default": 10,
        "title": "Page Size"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SubtitleRemovalHistoryResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/subtitle-removal/{task_id}Get Subtitle Removal Task

获取去字幕任务详情(优先 async_media_tasks,兼容旧表)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Task Id"
      }
    },
    {
      "name": "progress_token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "匿名任务进度访问令牌",
        "title": "Progress Token"
      },
      "description": "匿名任务进度访问令牌"
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SubtitleRemovalTaskDetail"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/subtitle-removal/{task_id}/progressGet Subtitle Removal Progress

获取去字幕任务进度 (SSE) — 支持 async_media_tasks

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Task Id"
      }
    },
    {
      "name": "token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "JWT token for EventSource",
        "title": "Token"
      },
      "description": "JWT token for EventSource"
    },
    {
      "name": "progress_token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "匿名任务进度访问令牌",
        "title": "Progress Token"
      },
      "description": "匿名任务进度访问令牌"
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/upscaleCreate Upscale Task

提交视频超分任务

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/VideoUpscaleTaskRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/AsyncTaskCreateResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/watermark-previewWatermark Preview

预览去水印效果(单帧)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/WatermarkPreviewRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WatermarkPreviewResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/watermark-removalCreate Watermark Removal Task

提交去水印任务(统一写入 async_media_tasks,Celery 投递)。 指定水印区域,或 auto_detect=true 自动检测,后台异步处理。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/WatermarkRemovalRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WatermarkRemovalTaskResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
POST/api/v1/video/tasks/watermark-removal-from-fileCreate Watermark Removal Task From File

上传文件并创建去水印任务 直接上传视频文件,后台异步处理。

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "requestBody": {
    "content": {
      "multipart/form-data": {
        "schema": {
          "$ref": "#/components/schemas/Body_create_watermark_removal_task_from_file_api_v1_video_tasks_watermark_removal_from_file_post"
        }
      }
    },
    "required": true
  },
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WatermarkRemovalTaskResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/watermark-removal/historyGet Watermark Removal History

获取当前用户的去水印任务历史(async_media_tasks)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "page",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "minimum": 1,
        "default": 1,
        "title": "Page"
      }
    },
    {
      "name": "page_size",
      "in": "query",
      "required": false,
      "schema": {
        "type": "integer",
        "maximum": 50,
        "minimum": 1,
        "default": 10,
        "title": "Page Size"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WatermarkRemovalHistoryResponse"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/watermark-removal/{task_id}Get Watermark Removal Task

获取去水印任务详情(优先 async_media_tasks,兼容旧表)

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Task Id"
      }
    },
    {
      "name": "progress_token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "匿名任务进度访问令牌",
        "title": "Progress Token"
      },
      "description": "匿名任务进度访问令牌"
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WatermarkRemovalTaskDetail"
          }
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}
GET/api/v1/video/tasks/watermark-removal/{task_id}/progressGet Watermark Removal Progress

获取去水印任务进度 (SSE) — 支持 async_media_tasks

{
  "security": [
    {
      "HTTPBearer": []
    }
  ],
  "parameters": [
    {
      "name": "task_id",
      "in": "path",
      "required": true,
      "schema": {
        "type": "integer",
        "title": "Task Id"
      }
    },
    {
      "name": "token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "JWT token for EventSource authentication",
        "title": "Token"
      },
      "description": "JWT token for EventSource authentication"
    },
    {
      "name": "progress_token",
      "in": "query",
      "required": false,
      "schema": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "匿名任务进度访问令牌",
        "title": "Progress Token"
      },
      "description": "匿名任务进度访问令牌"
    }
  ],
  "responses": {
    "200": {
      "description": "Successful Response",
      "content": {
        "application/json": {
          "schema": {}
        }
      }
    },
    "422": {
      "description": "Validation Error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/HTTPValidationError"
          }
        }
      }
    }
  }
}

数据模型

展开 components
{
  "schemas": {
    "AIWatermarkRemovalRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "mode": {
          "type": "string",
          "title": "Mode",
          "default": "auto"
        },
        "platform_hint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Platform Hint"
        },
        "blur_intensity": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 1.0,
          "title": "Blur Intensity",
          "default": 50
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "AIWatermarkRemovalRequest",
      "description": "AI智能去水印请求"
    },
    "AddCoverRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "cover_url": {
          "type": "string",
          "title": "Cover Url"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "cover_url"
      ],
      "title": "AddCoverRequest",
      "description": "添加封面请求"
    },
    "AsyncTaskCreateResponse": {
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Success",
          "default": true
        },
        "task_id": {
          "type": "integer",
          "title": "Task Id"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "default": "pending"
        },
        "message": {
          "type": "string",
          "title": "Message",
          "default": "任务已提交,正在处理中"
        },
        "progress_token": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Progress Token"
        },
        "estimated_time_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Estimated Time Seconds"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        }
      },
      "type": "object",
      "required": [
        "task_id"
      ],
      "title": "AsyncTaskCreateResponse"
    },
    "Body_create_subtitle_removal_task_from_file_api_v1_video_tasks_subtitle_removal_from_file_post": {
      "properties": {
        "file": {
          "type": "string",
          "format": "binary",
          "title": "File",
          "description": "视频文件"
        },
        "region": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Region",
          "description": "字幕区域 JSON 字符串(像素)"
        },
        "mode": {
          "type": "string",
          "title": "Mode",
          "description": "产品档位 fast/standard/high",
          "default": "standard"
        }
      },
      "type": "object",
      "required": [
        "file"
      ],
      "title": "Body_create_subtitle_removal_task_from_file_api_v1_video_tasks_subtitle_removal_from_file_post"
    },
    "Body_create_watermark_removal_task_from_file_api_v1_video_tasks_watermark_removal_from_file_post": {
      "properties": {
        "file": {
          "type": "string",
          "format": "binary",
          "title": "File",
          "description": "视频文件"
        },
        "watermark_regions": {
          "type": "string",
          "title": "Watermark Regions",
          "description": "水印区域 JSON 字符串",
          "default": "[]"
        },
        "processing_mode": {
          "type": "string",
          "title": "Processing Mode",
          "description": "处理模式",
          "default": "standard"
        },
        "auto_detect": {
          "type": "boolean",
          "title": "Auto Detect",
          "description": "自动检测水印区域",
          "default": false
        },
        "output_quality": {
          "type": "integer",
          "title": "Output Quality",
          "description": "输出质量",
          "default": 80
        }
      },
      "type": "object",
      "required": [
        "file"
      ],
      "title": "Body_create_watermark_removal_task_from_file_api_v1_video_tasks_watermark_removal_from_file_post"
    },
    "BurnSubtitleRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "srt_content": {
          "type": "string",
          "minLength": 1,
          "title": "Srt Content"
        },
        "font_size": {
          "type": "integer",
          "maximum": 72.0,
          "minimum": 8.0,
          "title": "Font Size",
          "default": 24
        },
        "font_color": {
          "type": "string",
          "title": "Font Color",
          "default": "white"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "srt_content"
      ],
      "title": "BurnSubtitleRequest",
      "description": "烧录硬字幕"
    },
    "DoodlePath": {
      "properties": {
        "points": {
          "items": {
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "type": "array",
          "title": "Points"
        },
        "color": {
          "type": "string",
          "title": "Color",
          "default": "#FF0000"
        },
        "width": {
          "type": "integer",
          "maximum": 50.0,
          "minimum": 1.0,
          "title": "Width",
          "default": 3
        }
      },
      "type": "object",
      "required": [
        "points"
      ],
      "title": "DoodlePath",
      "description": "涂鸦路径"
    },
    "ExportKeyframeRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "timestamp": {
          "type": "number",
          "minimum": 0.0,
          "title": "Timestamp",
          "default": 0.0
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "ExportKeyframeRequest",
      "description": "导出关键帧请求"
    },
    "ExtractFramesRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "frame_count": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 1.0,
          "title": "Frame Count",
          "default": 10
        },
        "start_time": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Start Time"
        },
        "end_time": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "End Time"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "ExtractFramesRequest",
      "description": "视频抽帧请求"
    },
    "FormatConvertRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "default": "mp4"
        },
        "preserve_quality": {
          "type": "boolean",
          "title": "Preserve Quality",
          "default": true
        },
        "compatibility_mode": {
          "type": "boolean",
          "title": "Compatibility Mode",
          "default": false
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "FormatConvertRequest",
      "description": "视频格式转换请求"
    },
    "HTTPValidationError": {
      "properties": {
        "detail": {
          "items": {
            "$ref": "#/components/schemas/ValidationError"
          },
          "type": "array",
          "title": "Detail"
        }
      },
      "type": "object",
      "title": "HTTPValidationError"
    },
    "MediaResponse": {
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Success",
          "description": "操作是否成功",
          "default": true
        },
        "data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Data",
          "description": "响应数据"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Message",
          "description": "响应消息"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error",
          "description": "错误信息"
        }
      },
      "type": "object",
      "title": "MediaResponse",
      "description": "媒体处理统一响应模型\n\n用于视频压缩、裁剪、转换等操作的响应",
      "example": {
        "data": {
          "duration": 60.5,
          "file_size": 1024000,
          "output_url": "https://example.com/output.mp4"
        },
        "message": "处理成功",
        "success": true
      }
    },
    "ProcessingMode": {
      "type": "string",
      "enum": [
        "fast",
        "standard",
        "enhanced"
      ],
      "title": "ProcessingMode",
      "description": "处理模式枚举(与推理 quality / 算法对齐)"
    },
    "ShotExtractionRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "threshold": {
          "type": "number",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Threshold",
          "default": 12.8
        },
        "min_shot_length": {
          "type": "number",
          "minimum": 0.1,
          "title": "Min Shot Length",
          "default": 0.35
        },
        "max_shot_length": {
          "type": "number",
          "minimum": 1.0,
          "title": "Max Shot Length",
          "default": 12.5
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "ShotExtractionRequest",
      "description": "镜头提取请求"
    },
    "SmudgeRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "regions": {
          "items": {
            "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__RegionModel"
          },
          "type": "array",
          "title": "Regions"
        },
        "blur_intensity": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 1.0,
          "title": "Blur Intensity",
          "default": 30
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "regions"
      ],
      "title": "SmudgeRequest",
      "description": "区域打码/模糊"
    },
    "SubtitleDetectRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "SubtitleDetectRequest",
      "description": "字幕区域自动检测请求"
    },
    "SubtitleMode": {
      "type": "string",
      "enum": [
        "fast",
        "standard",
        "high"
      ],
      "title": "SubtitleMode",
      "description": "产品处理档位(前端主入口)"
    },
    "SubtitleRegion": {
      "properties": {
        "x": {
          "type": "integer",
          "minimum": 0.0,
          "title": "X",
          "description": "X 像素"
        },
        "y": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Y",
          "description": "Y 像素"
        },
        "width": {
          "type": "integer",
          "exclusiveMinimum": 0.0,
          "title": "Width",
          "description": "宽度像素"
        },
        "height": {
          "type": "integer",
          "exclusiveMinimum": 0.0,
          "title": "Height",
          "description": "高度像素"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "title": "SubtitleRegion",
      "description": "字幕区域(视频原始分辨率像素坐标)"
    },
    "SubtitleRemovalHistoryItem": {
      "properties": {
        "task_id": {
          "type": "integer",
          "title": "Task Id"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "source_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Video Url"
        },
        "result_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result Video Url"
        },
        "processing_mode": {
          "type": "string",
          "title": "Processing Mode"
        },
        "video_duration": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Duration"
        },
        "processing_time_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Processing Time Seconds"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Completed At"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status",
        "processing_mode"
      ],
      "title": "SubtitleRemovalHistoryItem"
    },
    "SubtitleRemovalHistoryResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/components/schemas/SubtitleRemovalHistoryItem"
          },
          "type": "array",
          "title": "Items"
        },
        "total": {
          "type": "integer",
          "title": "Total"
        },
        "page": {
          "type": "integer",
          "title": "Page"
        },
        "page_size": {
          "type": "integer",
          "title": "Page Size"
        }
      },
      "type": "object",
      "required": [
        "items",
        "total",
        "page",
        "page_size"
      ],
      "title": "SubtitleRemovalHistoryResponse"
    },
    "SubtitleRemovalRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url",
          "description": "视频 URL"
        },
        "region": {
          "anyOf": [
            {
              "$ref": "#/components/schemas/SubtitleRegion"
            },
            {
              "type": "null"
            }
          ],
          "description": "显式字幕区域(像素);省略则 auto 自动检测"
        },
        "mode": {
          "$ref": "#/components/schemas/SubtitleMode",
          "description": "产品档位:fast(OpenCV) | standard(LaMa) | high(ProPainter)",
          "default": "standard"
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "description": "输出格式",
          "default": "mp4"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "SubtitleRemovalRequest",
      "description": "提交去字幕任务(公共仅 mode)"
    },
    "SubtitleRemovalTaskDetail": {
      "properties": {
        "task_id": {
          "type": "integer",
          "title": "Task Id"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "progress": {
          "type": "number",
          "title": "Progress",
          "default": 0
        },
        "current_step": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Current Step"
        },
        "source_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Video Url"
        },
        "video_duration": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Duration"
        },
        "video_width": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Width"
        },
        "video_height": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Height"
        },
        "subtitle_region": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Subtitle Region"
        },
        "processing_mode": {
          "type": "string",
          "title": "Processing Mode",
          "default": "standard"
        },
        "inpaint_mode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Inpaint Mode"
        },
        "output_format": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Output Format"
        },
        "result_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result Video Url"
        },
        "result_file_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result File Size"
        },
        "processing_time_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Processing Time Seconds"
        },
        "frames_processed": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Frames Processed"
        },
        "detector": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Detector"
        },
        "estimated_time_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Estimated Time Seconds"
        },
        "error_message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Message"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        },
        "started_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Started At"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Completed At"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status"
      ],
      "title": "SubtitleRemovalTaskDetail",
      "description": "任务详情"
    },
    "SubtitleRemovalTaskResponse": {
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Success",
          "default": true
        },
        "task_id": {
          "type": "integer",
          "title": "Task Id",
          "description": "任务 ID"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "任务状态"
        },
        "message": {
          "type": "string",
          "title": "Message",
          "description": "消息",
          "default": "任务已创建"
        },
        "progress_token": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Progress Token",
          "description": "匿名任务进度访问令牌(仅匿名任务返回)"
        },
        "estimated_time_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Estimated Time Seconds",
          "description": "预计处理时间(秒)"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At",
          "description": "创建时间"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status"
      ],
      "title": "SubtitleRemovalTaskResponse",
      "description": "创建任务响应"
    },
    "SubtitleRemoveRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "region": {
          "anyOf": [
            {
              "$ref": "#/components/schemas/src__api__v1__endpoints__video__effects__RegionModel"
            },
            {
              "type": "null"
            }
          ],
          "description": "显式字幕区域(像素);省略则 auto 自动检测"
        },
        "mode": {
          "type": "string",
          "title": "Mode",
          "description": "产品档位:standard(标准) | high(高质量) | fast(快速)",
          "default": "standard"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "SubtitleRemoveRequest",
      "description": "去字幕请求(公共仅 mode)\n\n区域二选一:传 region(像素)去该区域;不传 region 则 auto 自动检测。\n所有 mode 均走 Media OpenCV inpaint(TELEA/NS)。"
    },
    "ValidationError": {
      "properties": {
        "loc": {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "type": "array",
          "title": "Location"
        },
        "msg": {
          "type": "string",
          "title": "Message"
        },
        "type": {
          "type": "string",
          "title": "Error Type"
        }
      },
      "type": "object",
      "required": [
        "loc",
        "msg",
        "type"
      ],
      "title": "ValidationError"
    },
    "VideoBgRemoveRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "bg_color": {
          "type": "string",
          "title": "Bg Color",
          "description": "背景填充色 hex,默认绿幕",
          "default": "#00FF00"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoBgRemoveRequest",
      "description": "视频抠图请求"
    },
    "VideoBgRemoveTaskRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "bg_color": {
          "type": "string",
          "title": "Bg Color",
          "default": "#00FF00"
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "default": "mp4"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoBgRemoveTaskRequest"
    },
    "VideoCompressRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "preset": {
          "type": "string",
          "title": "Preset",
          "default": "wechat"
        },
        "target_size_mb": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target Size Mb"
        },
        "resolution": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Resolution"
        },
        "quality": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 100.0,
              "minimum": 1.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Quality"
        },
        "fps": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 60.0,
              "minimum": 1.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Fps"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoCompressRequest",
      "description": "视频压缩请求"
    },
    "VideoCropRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "mode": {
          "type": "string",
          "title": "Mode",
          "default": "pixel"
        },
        "aspect_ratio": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Aspect Ratio"
        },
        "platform": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Platform"
        },
        "x": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "X"
        },
        "y": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Y"
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Width"
        },
        "height": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Height"
        },
        "smart_tracking": {
          "type": "boolean",
          "title": "Smart Tracking",
          "default": false
        },
        "output_resolution": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Output Resolution"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoCropRequest",
      "description": "视频裁剪(支持像素 / 比例 / 平台预设)"
    },
    "VideoEffectRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "effect": {
          "type": "string",
          "title": "Effect",
          "default": "fade_in"
        },
        "intensity": {
          "type": "number",
          "maximum": 3.0,
          "minimum": 0.0,
          "title": "Intensity",
          "default": 1.0
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoEffectRequest",
      "description": "视频特效"
    },
    "VideoEnhanceRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "scale": {
          "type": "integer",
          "maximum": 4.0,
          "minimum": 1.0,
          "title": "Scale",
          "description": "放大倍数(1=不放大)",
          "default": 1
        },
        "face_enhance": {
          "type": "boolean",
          "title": "Face Enhance",
          "description": "人脸修复",
          "default": true
        },
        "denoise": {
          "type": "boolean",
          "title": "Denoise",
          "description": "降噪锐化",
          "default": true
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoEnhanceRequest",
      "description": "视频 AI 增强请求"
    },
    "VideoEnhanceTaskRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "scale": {
          "type": "integer",
          "maximum": 4.0,
          "minimum": 1.0,
          "title": "Scale",
          "default": 1
        },
        "face_enhance": {
          "type": "boolean",
          "title": "Face Enhance",
          "default": true
        },
        "denoise": {
          "type": "boolean",
          "title": "Denoise",
          "default": true
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "default": "mp4"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoEnhanceTaskRequest"
    },
    "VideoFilterRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "filter": {
          "type": "string",
          "title": "Filter",
          "default": "grayscale"
        },
        "intensity": {
          "type": "number",
          "maximum": 2.0,
          "minimum": 0.0,
          "title": "Intensity",
          "default": 1.0
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoFilterRequest",
      "description": "视频滤镜"
    },
    "VideoGenerateRequest": {
      "properties": {
        "prompt": {
          "type": "string",
          "maxLength": 20000,
          "minLength": 1,
          "title": "Prompt"
        },
        "provider": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "xbai",
                "geekai"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Provider",
          "description": "显式供应商;省略则按配置 auto|xbai|geekai"
        },
        "mode": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "t2v",
                "i2v",
                "fl2v",
                "ref2v"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Mode"
        },
        "model": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "h3_fl2va",
                "h3_ref2va"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Model"
        },
        "loras": {
          "items": {
            "$ref": "#/components/schemas/XbaiLoraIn"
          },
          "type": "array",
          "maxItems": 16,
          "title": "Loras"
        },
        "seed": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 4294967295.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Seed"
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 1344.0,
              "minimum": 32.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Width"
        },
        "height": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 1344.0,
              "minimum": 32.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Height"
        },
        "image": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Image",
          "description": "首帧图片 URL,或图片 URL 列表"
        },
        "image_tail": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Image Tail",
          "description": "尾帧图片 URL"
        },
        "images": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Images",
          "description": "多张参考图 URL"
        },
        "video": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video",
          "description": "参考/待编辑视频 URL"
        },
        "audio": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Audio",
          "description": "参考音频"
        },
        "references": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/components/schemas/XbaiReferenceIn"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "References",
          "description": "xbai 原生参考(name/url/type)"
        },
        "aspect_ratio": {
          "type": "string",
          "title": "Aspect Ratio",
          "description": "16:9/9:16/1:1/4:3/3:4/21:9/adaptive",
          "default": "16:9"
        },
        "resolution": {
          "type": "string",
          "title": "Resolution",
          "description": "geekai mini 仅 480p/720p",
          "default": "720p"
        },
        "duration": {
          "type": "integer",
          "maximum": 15.0,
          "minimum": 4.0,
          "title": "Duration",
          "description": "时长秒 4-15",
          "default": 5
        },
        "watermark": {
          "type": "boolean",
          "title": "Watermark",
          "default": false
        },
        "real_person_mode": {
          "type": "boolean",
          "title": "Real Person Mode",
          "description": "GeekAI:参考素材含真人人脸时开启",
          "default": false
        },
        "wait": {
          "type": "boolean",
          "title": "Wait",
          "description": "GeekAI 可服务端轮询;xbai 禁止 wait=true",
          "default": false
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128,
              "minLength": 8
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "description": "幂等键(xbai 必用于 H3;省略则创建新任务;重试同次提交时复用同一键)"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "prompt"
      ],
      "title": "VideoGenerateRequest",
      "description": "文生视频 / 图生视频。\n\n供应商:\n- geekai: doubao-seedance-2.0-mini\n- xbai: MiniMax H3 自建卡(t2v/i2v/fl2v/ref2v)\n- 省略则跟 SH_VIDEO_GENERATE_PROVIDER(auto=有 xbai 用 xbai)"
    },
    "VideoStitchingRequest": {
      "properties": {
        "video_urls": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "minItems": 2,
          "title": "Video Urls"
        }
      },
      "type": "object",
      "required": [
        "video_urls"
      ],
      "title": "VideoStitchingRequest",
      "description": "视频拼接请求"
    },
    "VideoToAudioRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "default": "mp3"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoToAudioRequest",
      "description": "视频转音频(兼容旧路径;推荐 /audio/basic/extract)"
    },
    "VideoToGifRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "start_time": {
          "type": "number",
          "minimum": 0.0,
          "title": "Start Time",
          "default": 0.0
        },
        "end_time": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "End Time"
        },
        "fps": {
          "type": "integer",
          "maximum": 30.0,
          "minimum": 1.0,
          "title": "Fps",
          "default": 10
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 1920.0,
              "minimum": 100.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Width",
          "default": 480
        },
        "quality": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 1.0,
          "title": "Quality",
          "default": 80
        },
        "loop_count": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Loop Count",
          "default": 0
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoToGifRequest",
      "description": "视频转GIF(含时间段/质量参数)"
    },
    "VideoTrimRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "start_time": {
          "type": "number",
          "minimum": 0.0,
          "title": "Start Time"
        },
        "end_time": {
          "type": "number",
          "exclusiveMinimum": 0.0,
          "title": "End Time"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "start_time",
        "end_time"
      ],
      "title": "VideoTrimRequest",
      "description": "视频裁剪时长请求"
    },
    "VideoUpscaleRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "scale": {
          "type": "integer",
          "maximum": 4.0,
          "minimum": 2.0,
          "title": "Scale",
          "description": "放大倍数 2/3/4",
          "default": 2
        },
        "face_enhance": {
          "type": "boolean",
          "title": "Face Enhance",
          "description": "人脸修复(GFPGAN,需 GPU)",
          "default": false
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoUpscaleRequest",
      "description": "视频超分请求"
    },
    "VideoUpscaleTaskRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "scale": {
          "type": "integer",
          "maximum": 4.0,
          "minimum": 2.0,
          "title": "Scale",
          "default": 2
        },
        "face_enhance": {
          "type": "boolean",
          "title": "Face Enhance",
          "default": false
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "default": "mp4"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "VideoUpscaleTaskRequest"
    },
    "WatermarkPreviewRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url",
          "description": "视频URL"
        },
        "watermark_regions": {
          "items": {
            "$ref": "#/components/schemas/WatermarkRegion"
          },
          "type": "array",
          "minItems": 1,
          "title": "Watermark Regions",
          "description": "水印区域列表(百分比坐标)"
        },
        "timestamp": {
          "type": "number",
          "minimum": 0.0,
          "title": "Timestamp",
          "description": "预览时间点(秒)",
          "default": 0.0
        },
        "processing_mode": {
          "$ref": "#/components/schemas/ProcessingMode",
          "description": "处理模式: fast/standard/enhanced",
          "default": "standard"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "watermark_regions"
      ],
      "title": "WatermarkPreviewRequest",
      "description": "去水印单帧预览请求"
    },
    "WatermarkPreviewResponse": {
      "properties": {
        "original_frame_url": {
          "type": "string",
          "title": "Original Frame Url"
        },
        "processed_frame_url": {
          "type": "string",
          "title": "Processed Frame Url"
        },
        "timestamp": {
          "type": "number",
          "title": "Timestamp"
        },
        "processing_time_ms": {
          "type": "integer",
          "title": "Processing Time Ms"
        }
      },
      "type": "object",
      "required": [
        "original_frame_url",
        "processed_frame_url",
        "timestamp",
        "processing_time_ms"
      ],
      "title": "WatermarkPreviewResponse",
      "description": "去水印单帧预览响应"
    },
    "WatermarkRegion": {
      "properties": {
        "type": {
          "type": "string",
          "title": "Type",
          "description": "区域类型: rect",
          "default": "rect"
        },
        "x": {
          "type": "number",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "X",
          "description": "X坐标百分比 (0-100)"
        },
        "y": {
          "type": "number",
          "maximum": 100.0,
          "minimum": 0.0,
          "title": "Y",
          "description": "Y坐标百分比 (0-100)"
        },
        "width": {
          "type": "number",
          "maximum": 100.0,
          "exclusiveMinimum": 0.0,
          "title": "Width",
          "description": "宽度百分比 (0-100)"
        },
        "height": {
          "type": "number",
          "maximum": 100.0,
          "exclusiveMinimum": 0.0,
          "title": "Height",
          "description": "高度百分比 (0-100)"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "title": "WatermarkRegion",
      "description": "水印区域"
    },
    "WatermarkRemovalHistoryItem": {
      "properties": {
        "task_id": {
          "type": "integer",
          "title": "Task Id"
        },
        "status": {
          "type": "string",
          "title": "Status"
        },
        "source_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Video Url"
        },
        "result_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result Video Url"
        },
        "processing_mode": {
          "type": "string",
          "title": "Processing Mode"
        },
        "video_duration": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Duration"
        },
        "processing_time_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Processing Time Seconds"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Completed At"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status",
        "processing_mode"
      ],
      "title": "WatermarkRemovalHistoryItem",
      "description": "去水印历史记录项"
    },
    "WatermarkRemovalHistoryResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/components/schemas/WatermarkRemovalHistoryItem"
          },
          "type": "array",
          "title": "Items"
        },
        "total": {
          "type": "integer",
          "title": "Total"
        },
        "page": {
          "type": "integer",
          "title": "Page"
        },
        "page_size": {
          "type": "integer",
          "title": "Page Size"
        }
      },
      "type": "object",
      "required": [
        "items",
        "total",
        "page",
        "page_size"
      ],
      "title": "WatermarkRemovalHistoryResponse",
      "description": "去水印历史记录响应"
    },
    "WatermarkRemovalRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url",
          "description": "视频URL"
        },
        "watermark_regions": {
          "items": {
            "$ref": "#/components/schemas/WatermarkRegion"
          },
          "type": "array",
          "title": "Watermark Regions",
          "description": "水印区域列表(百分比坐标);auto_detect=true 时可为空"
        },
        "auto_detect": {
          "type": "boolean",
          "title": "Auto Detect",
          "description": "自动检测水印区域;为 true 时 regions 可为空",
          "default": false
        },
        "processing_mode": {
          "$ref": "#/components/schemas/ProcessingMode",
          "description": "处理模式: fast(TELEA)/standard(TELEA+residual)/enhanced(NS)",
          "default": "standard"
        },
        "output_format": {
          "type": "string",
          "title": "Output Format",
          "description": "输出格式",
          "default": "mp4"
        },
        "output_quality": {
          "type": "integer",
          "maximum": 100.0,
          "minimum": 1.0,
          "title": "Output Quality",
          "description": "输出质量 1-100(编码 CRF 映射,前端可不传)",
          "default": 80
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "WatermarkRemovalRequest",
      "description": "去水印请求"
    },
    "WatermarkRemovalTaskDetail": {
      "properties": {
        "task_id": {
          "type": "integer",
          "title": "Task Id",
          "description": "任务ID"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "任务状态"
        },
        "progress": {
          "type": "number",
          "title": "Progress",
          "description": "进度百分比",
          "default": 0
        },
        "current_step": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Current Step",
          "description": "当前步骤"
        },
        "source_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Video Url",
          "description": "原视频URL"
        },
        "video_duration": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Duration",
          "description": "视频时长"
        },
        "video_width": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Width",
          "description": "视频宽度"
        },
        "video_height": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Video Height",
          "description": "视频高度"
        },
        "watermark_regions": {
          "items": {
            "$ref": "#/components/schemas/WatermarkRegion"
          },
          "type": "array",
          "title": "Watermark Regions",
          "description": "水印区域列表"
        },
        "processing_mode": {
          "type": "string",
          "title": "Processing Mode",
          "description": "处理模式",
          "default": "standard"
        },
        "output_format": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Output Format",
          "description": "输出格式"
        },
        "output_quality": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Output Quality",
          "description": "输出质量"
        },
        "result_video_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result Video Url",
          "description": "结果视频URL"
        },
        "result_file_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Result File Size",
          "description": "结果文件大小"
        },
        "processing_time_seconds": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Processing Time Seconds",
          "description": "处理耗时(秒)"
        },
        "frames_processed": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Frames Processed",
          "description": "处理帧数"
        },
        "estimated_time_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Estimated Time Seconds",
          "description": "预计处理时间(秒)"
        },
        "error_message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Message",
          "description": "错误信息"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At",
          "description": "创建时间"
        },
        "started_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Started At",
          "description": "开始时间"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Completed At",
          "description": "完成时间"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status"
      ],
      "title": "WatermarkRemovalTaskDetail",
      "description": "去水印任务详情"
    },
    "WatermarkRemovalTaskResponse": {
      "properties": {
        "success": {
          "type": "boolean",
          "title": "Success",
          "default": true
        },
        "task_id": {
          "type": "integer",
          "title": "Task Id",
          "description": "任务ID"
        },
        "status": {
          "type": "string",
          "title": "Status",
          "description": "任务状态"
        },
        "message": {
          "type": "string",
          "title": "Message",
          "description": "消息",
          "default": "任务已创建"
        },
        "progress_token": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Progress Token",
          "description": "匿名任务进度访问令牌(仅匿名任务返回)"
        },
        "estimated_time_seconds": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Estimated Time Seconds",
          "description": "预计处理时间(秒)"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Created At",
          "description": "创建时间"
        }
      },
      "type": "object",
      "required": [
        "task_id",
        "status"
      ],
      "title": "WatermarkRemovalTaskResponse",
      "description": "去水印任务响应"
    },
    "XbaiLoraIn": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "title": "Name"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name"
      ],
      "title": "XbaiLoraIn"
    },
    "XbaiReferenceIn": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 32,
          "minLength": 1,
          "title": "Name"
        },
        "url": {
          "type": "string",
          "minLength": 8,
          "title": "Url"
        },
        "type": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "audio"
          ],
          "title": "Type"
        },
        "purpose": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Purpose"
        },
        "clip_start": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Clip Start"
        },
        "clip_duration": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 15.0,
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Clip Duration"
        },
        "use_audio": {
          "type": "boolean",
          "title": "Use Audio",
          "default": false
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "name",
        "url",
        "type"
      ],
      "title": "XbaiReferenceIn"
    },
    "src__api__v1__endpoints__video__basic__ModifyMd5Request": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "target_md5": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target Md5"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "ModifyMd5Request",
      "description": "修改MD5请求"
    },
    "src__api__v1__endpoints__video__effects__BaseVideoRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "BaseVideoRequest",
      "description": "视频请求基类"
    },
    "src__api__v1__endpoints__video__effects__DoodleWatermarkRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "paths": {
          "items": {
            "$ref": "#/components/schemas/DoodlePath"
          },
          "type": "array",
          "title": "Paths"
        },
        "stroke_color": {
          "type": "string",
          "title": "Stroke Color",
          "default": "#FF0000"
        },
        "stroke_width": {
          "type": "integer",
          "maximum": 50.0,
          "minimum": 1.0,
          "title": "Stroke Width",
          "default": 3
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "paths"
      ],
      "title": "DoodleWatermarkRequest",
      "description": "涂鸦水印请求"
    },
    "src__api__v1__endpoints__video__effects__MirrorRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "direction": {
          "type": "string",
          "title": "Direction",
          "default": "horizontal"
        }
      },
      "type": "object",
      "required": [
        "video_url"
      ],
      "title": "MirrorRequest",
      "description": "镜像请求"
    },
    "src__api__v1__endpoints__video__effects__RegionModel": {
      "properties": {
        "x": {
          "type": "integer",
          "minimum": 0.0,
          "title": "X"
        },
        "y": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Y"
        },
        "width": {
          "type": "integer",
          "exclusiveMinimum": 0.0,
          "title": "Width"
        },
        "height": {
          "type": "integer",
          "exclusiveMinimum": 0.0,
          "title": "Height"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y",
        "width",
        "height"
      ],
      "title": "RegionModel",
      "description": "区域模型"
    },
    "src__api__v1__endpoints__video__effects__StickerWatermarkRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "sticker_url": {
          "type": "string",
          "title": "Sticker Url"
        },
        "position_x": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Position X",
          "default": 10
        },
        "position_y": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Position Y",
          "default": 10
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Width"
        },
        "height": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Height"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "sticker_url"
      ],
      "title": "StickerWatermarkRequest",
      "description": "贴纸水印请求"
    },
    "src__api__v1__endpoints__video__effects__TextWatermarkRequest": {
      "properties": {
        "video_url": {
          "type": "string",
          "minLength": 1,
          "title": "Video Url"
        },
        "text": {
          "type": "string",
          "minLength": 1,
          "title": "Text"
        },
        "position_x": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Position X",
          "default": 10
        },
        "position_y": {
          "type": "integer",
          "minimum": 0.0,
          "title": "Position Y",
          "default": 10
        },
        "font_size": {
          "type": "integer",
          "maximum": 200.0,
          "minimum": 8.0,
          "title": "Font Size",
          "default": 20
        },
        "color": {
          "type": "string",
          "title": "Color",
          "default": "white"
        }
      },
      "type": "object",
      "required": [
        "video_url",
        "text"
      ],
      "title": "TextWatermarkRequest",
      "description": "文字水印请求"
    }
  },
  "securitySchemes": {
    "HTTPBearer": {
      "type": "http",
      "scheme": "bearer"
    }
  }
}