曜幕(MLS)openApi 接口文档

Base URL:

  • 生产环境:http://{PROD_DOMAIN}

所有 openApi 接口路径统一为:

POST /mls/mlsOpenApi/{接口名}

{接口名} 即下文各章节标题中的接口名(如 uploadMlsPart、addMlsTask)。


0. 概览

0.1 鉴权方式

openApi 全部接口使用 AK 签名鉴权,通过请求头传递 X-AccessId、X-TimeStamp、X-SignatureNonce、X-Signature(计算规则见 1.2)。

  • 操作人身份由 AK 决定:调用方无需、也无法在入参中指定用户身份(uin、userId 等由服务端依据 AK 解析)。
  • 不需要 token,接口也不接受登录态。
  • 以下接口清单为可调用的完整集合。调用清单外的接口名将返回 flag=1007。

本文档只描述 openApi 开放的接口。控制台接口(登录态)使用不同的入口与鉴权方式,不在本文档范围内。

0.2 接口清单

分组 接口 路径
分片上传 上传文件分片 POST /mls/mlsOpenApi/uploadMlsPart
完成分片上传 POST /mls/mlsOpenApi/completeMlsUpload
获取素材上传签名参数 POST /mls/mlsOpenApi/getMaterialAccess
基础配置 获取支持语言列表 POST /mls/mlsOpenApi/getSupportLanguageList
获取任务类型列表 POST /mls/mlsOpenApi/getMlsModeTypeList
获取阶段计费价目 POST /mls/mlsOpenApi/getMlsStageList
获取音色列表 POST /mls/mlsOpenApi/getMlsTimbreList
获取翻译场景列表 POST /mls/mlsOpenApi/getMlsTranslationSceneList
任务 获取任务列表 POST /mls/mlsOpenApi/getUserMlsList
获取任务详情 POST /mls/mlsOpenApi/getMlsDetail
创建任务 POST /mls/mlsOpenApi/addMlsTask
编辑任务 POST /mls/mlsOpenApi/updateMlsTask
删除任务 POST /mls/mlsOpenApi/deleteMlsTask
失败重试 POST /mls/mlsOpenApi/retryMlsTask
任务素材 新增/编辑任务素材 POST /mls/mlsOpenApi/saveMlsTaskResource
删除任务素材 POST /mls/mlsOpenApi/deleteMlsTaskResource
从历史版本创建副本 POST /mls/mlsOpenApi/copyMlsTaskResourceVersion
分组资源:分组列表 POST /mls/mlsOpenApi/getMlsResourceGroups
分组资源:分组文件列表 POST /mls/mlsOpenApi/getMlsResourceGroupFiles
剧集 新增剧集 POST /mls/mlsOpenApi/addMlsDrama
编辑剧集 POST /mls/mlsOpenApi/updateMlsDrama
剧集列表 POST /mls/mlsOpenApi/getMlsDramaList
剧集详情 POST /mls/mlsOpenApi/getMlsDramaDetail
删除剧集 POST /mls/mlsOpenApi/deleteMlsDrama
向剧集添加视频 POST /mls/mlsOpenApi/addMlsDramaVideo
集列表 POST /mls/mlsOpenApi/getMlsEpisodeList
集详情 POST /mls/mlsOpenApi/getMlsEpisodeDetail
更新集名称 POST /mls/mlsOpenApi/updateMlsEpisode
删除集 POST /mls/mlsOpenApi/deleteMlsDramaVideo
批量提交剧集任务 POST /mls/mlsOpenApi/submitMlsDramaTasks
视频预处理 预处理失败重试 POST /mls/mlsOpenApi/retryMlsVideoPreprocess
额度(积分) 获取当前额度 POST /mls/mlsOpenApi/getMlsAmount
额度使用记录 POST /mls/mlsOpenApi/getMlsAmountRunList
判断额度是否充足 POST /mls/mlsOpenApi/checkMlsAmount
反馈工单 反馈分类树 POST /mls/mlsOpenApi/getMlsFeedbackCategoryTree
提交反馈 POST /mls/mlsOpenApi/submitMlsFeedback
关单前追评 POST /mls/mlsOpenApi/appendMlsFeedbackMessage
我的反馈列表 POST /mls/mlsOpenApi/getMyMlsFeedbackList
我的反馈详情 POST /mls/mlsOpenApi/getMyMlsFeedbackDetail
关闭工单 POST /mls/mlsOpenApi/closeMyMlsFeedback

不在本清单中的接口无法通过 openApi 调用,详见 附录 A。


1. 鉴权与返回约定(请先阅读)

1.1 Header 鉴权参数

Header 必填 说明
X-AccessId 是 用户 AK 的 accessId
X-TimeStamp 是 当前时间戳(秒)
X-SignatureNonce 是 签名随机串(建议每次请求使用新的随机值)
X-Signature 是 签名值,计算规则见下

缺失任一 Header 返回:

{"flag":1004,"flagString":"X-AccessId参数不能为空"}

AK 不存在、已停用或签名不匹配,返回:

{"flag":101,"flagString":"验证失败"}

1.2 X-SIGNATURE 计算规则

将以下字段按顺序拼接,中间以换行符 \n 连接:

  1. accessId(即 X-AccessId)
  2. accessKey(用户 AK 的 accessSecret)
  3. signatureNonce(即 X-SignatureNonce)
  4. timeStamp(即 X-TimeStamp)
  5. body(HTTP 请求原始 Body 字符串;无 Body 时为空字符串)
stringToSign = accessId + "\n" + accessKey + "\n" + signatureNonce + "\n" + timeStamp + "\n" + body
X-SIGNATURE  = md5(stringToSign)

注意事项

  • body 是未经解析的原始 Body 文本。签名必须在序列化 JSON 之后计算,任何空格、换行、字段顺序差异都会导致签名不一致。
  • timeStamp 仅参与签名,服务端不做时效校验,请调用方自行控制重放风险(配合 signatureNonce 唯一化)。
  • 建议使用 POST + application/json;签名按 POST 原始 Body 计算。

签名参考实现

$body  = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$nonce = (string)mt_rand(10000000, 99999999);
$ts    = time();
$sign  = md5($accessId . "\n" . $accessKey . "\n" . $nonce . "\n" . $ts . "\n" . $body);

// Header
// Content-Type: application/json
// X-AccessId: $accessId
// X-TimeStamp: $ts
// X-SignatureNonce: $nonce
// X-Signature: $sign
String body  = objectMapper.writeValueAsString(payload);
String nonce = String.valueOf(ThreadLocalRandom.current().nextLong(10000000L, 100000000L));
String ts    = String.valueOf(Instant.now().getEpochSecond());
String raw   = accessId + "\n" + accessKey + "\n" + nonce + "\n" + ts + "\n" + body;
String sign  = DigestUtils.md5Hex(raw.getBytes(StandardCharsets.UTF_8));

1.3 返回码约定

  • flag = 100:请求成功
  • flag != 100:请求失败,具体原因见 flagString

常用 flag:

flag 含义
100 成功
101 鉴权失败(AK 无效或签名错误)
110 业务参数错误(flagString 为具体原因)
1001 请求地址无效(路径缺 {接口名})
1004 鉴权 Header 缺失
1007 请求接口不存在(不在开放范围,见附录 A)

分页字段的位置分两种,请以各接口示例为准:

  • total 与 data 同级:getUserMlsList、getMlsAmountRunList;
  • count 位于 data 内:getMlsTimbreList、getMlsResourceGroups、getMlsResourceGroupFiles、getMlsDramaList、getMlsEpisodeList、getMyMlsFeedbackList。

1.4 请求格式约定

  • 所有接口统一使用 application/json 作为请求体格式。
  • 请在请求 Header 中设置 Content-Type: application/json。
  • 接口名大小写敏感,须与本文档完全一致。

1.5 用户身份如何确定

调用方无需也无法在入参中指定用户身份,服务端依据 X-AccessId 对应的账号解析出请求归属的「当前用户」。

请在请求体中不要传 uin、parentUin、userId 等身份字段;即使传入也会被服务端忽略并按 AK 绑定账号处理。

1.6 前置条件:手机号绑定

以下接口要求 AK 绑定账号满足「渠道用户免绑,非渠道用户须绑定手机号」,否则返回 flag=110 且 flagString 为提示信息:

addMlsTask、addMlsDrama、addMlsDramaVideo、submitMlsDramaTasks、uploadMlsPart、completeMlsUpload、saveMlsTaskResource、deleteMlsTaskResource、copyMlsTaskResourceVersion


2. 分片上传

2.1 上传接口测试样例视频

为便于联调「分片上传 → 完成上传」流程,可使用下方公开测试视频作为本地源文件:下载后按接口要求将各分片做 Base64 编码,再依次调用 上传文件分片、完成分片上传 两个接口即可完整走通。

项目 说明
建议文件名 test.mp4(与本地保存名、fileName 参数保持一致即可)
下载地址(HTTPS) https://static-pro.guangdianyun.tv/common/file/test.mp4

该文件仅用于接口功能验证与联调,请勿作为生产业务素材依赖;实际分片时请遵守单分片小于 10M 等下文参数约束。

2.2 POST /mls/mlsOpenApi/uploadMlsPart

上传文件分片。

请求参数

名称 类型 必选 说明
fileName string 是 完整文件名(含后缀)。与本地保存名、completeMlsUpload 保持一致
part string 是 分片内容,需先做一次 base64_encode;单分片小于 10M
partNum int 是 分片序号,取值范围 1~1000

分片序号从 1 开始连续递增,completeMlsUpload 前不可有缺号。

请求示例

{
  "fileName": "test.mp4",
  "part": "base64_encode('xxxxxxx')",
  "partNum": 1
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "partSize": 2097152,
    "partName": "1-test.mp4.part"
  }
}

data 中字段以上传服务的实际返回为准;上例为常见返回。

常见错误

flagString 说明
fileName参数不能为空 缺少文件名
title参数不能为空 —
手机号相关提示 非渠道用户未绑定手机号
获取上传凭据失败 账号未开通素材上传权限,请联系管理员

2.3 POST /mls/mlsOpenApi/completeMlsUpload

完成分片上传;成功后返回可播放的视频地址与封面。

请求参数

名称 类型 必选 说明
fileName string 是 与分片上传阶段保持一致的文件名(含后缀)

请求示例

{
  "fileName": "test.mp4"
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "fileName": "test.mp4",
    "size": 38112078,
    "location": "https://vod.example.com/u/1000/mp4/0x0/9c259c15483898854dad9938736a6c78.mp4",
    "thumbnail": "https://cdn.example.com/pic/g-dvr/u/1000/images/9c259c15483898854dad9938736a6c78/0/0"
  }
}
字段 说明
size 文件字节数
location 视频地址,可直接作为 addMlsTask 的 origin_url
thumbnail 封面图地址

2.4 POST /mls/mlsOpenApi/getMaterialAccess

获取素材直传所需的签名参数,用于客户端直传素材到对象存储。

请求参数

名称 类型 必选 说明
userId string 否 子用户标识,默认空字符串
classify string 否 业务分类,默认 video
parentId string 否 分组 ID,默认 01
toolService string 否 业务标识,非空时合并进 diyParam.toolService
subDiyParam string 否 JSON 字符串,会与默认 diyParam 合并(同名键覆盖);非合法 JSON 返回 flag=102

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "signatureNonce": 54321,
    "accessId": "xxxxxxxx",
    "expireTime": 1771214133,
    "signature": "14224ad83a75b14b349300868161d726",
    "filePrefix": "mls-1000",
    "diyParam": "{\"platform\":\"apaas\",\"service\":\"private-upload\",\"classify\":\"video\",\"groupID\":\"01\",\"subUser\":\"\",\"subCode\":\"subId\",\"subService\":\"mls\"}"
  }
}
字段 说明
signatureNonce 签名随机数
accessId 上传服务 accessId
expireTime 签名过期时间(Unix 秒,约 24 小时后)
signature 上传签名
filePrefix 文件前缀
diyParam 用户自定义参数(JSON 字符串)

3. 基础配置(只读)

3.1 POST /mls/mlsOpenApi/getSupportLanguageList

获取当前账号可用的语言配置列表。

返回范围由账号的语种配置决定,共三种模式:

模式 说明
basic(默认) 仅返回已开放的启用语种
all 返回全部启用语种(不再限制是否开放)
special 返回「已开放语种」与「账号专属白名单语种」的并集

未配置时按 basic 处理。

请求参数

无。

早期文档提到的 enable 入参已不再生效:本接口固定只返回启用中的语种。

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "id": 2,
        "language_name": "英文",
        "language_code": "english",
        "enable": 1,
        "is_open": 1,
        "model_name": "english",
        "create_time": 1770444003,
        "uptime": 1770444003
      }
    ]
  }
}

data.list[] 字段说明:

字段 类型 说明
id int 语言 ID
language_name string 语言中文名
language_code string 语言编码,创建任务时传 languages
enable int 1 启用 / 0 停用
is_open int 1 已开放
model_name string 语言标识
create_time / uptime int Unix 秒

列表条数按账号配置变化,请勿硬编码语言数量或 ID 范围。

3.2 POST /mls/mlsOpenApi/getMlsModeTypeList

获取可创建的任务类型(服务端有缓存,配置变更约 1 小时生效)。创建任务前先调此接口,用于渲染类型下拉、控制是否展示语种/源片选择。

请求参数

无。

出参 data[]

字段 类型 说明
mode_type string 类型编码,创建任务时传 mode_type
mode_name string 展示名称
mode_type_index string 类型索引编码,用于分类分组;多种 mode_type 可共用同一索引
billing_mode string 固定 stage;计费以阶段价目为准,见 3.3 getMlsStageList
requires_language bool 创建时是否必须选择输出语种
requires_origin bool 创建时是否必须传源视频(原片);false 时可仅传 resources 并由字幕等推算时长
allow_coexist bool 同一集下是否允许与其它类型的任务并存
is_internal bool 是否为内部类型(查询列表时可用 exclude_internal=1 过滤)
execution_mode string 执行形态:legacy 原样下发;stages 下发时转为 custom + stages
stages array 阶段模板;execution_mode=stages 时非空,项为 {stageId, policy};legacy 时为 []
remark string 备注说明

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": [
    {
      "mode_type": "full_pipeline",
      "mode_name": "全流程",
      "mode_type_index": "full_pipeline",
      "billing_mode": "stage",
      "requires_language": true,
      "requires_origin": true,
      "allow_coexist": false,
      "is_internal": false,
      "execution_mode": "legacy",
      "stages": [],
      "remark": "多语言全流程输出:前置+语种叠加"
    },
    {
      "mode_type": "demo_stages_pipeline",
      "mode_name": "示例阶段流水线",
      "mode_type_index": "demo_stages",
      "billing_mode": "stage",
      "requires_language": true,
      "requires_origin": true,
      "allow_coexist": true,
      "is_internal": false,
      "execution_mode": "stages",
      "stages": [
        {"stageId": "subtitle_translate", "policy": "complete"},
        {"stageId": "tts", "policy": "complete"},
        {"stageId": "compose", "policy": "complete"}
      ],
      "remark": "下发时转为 mode_type=custom + stages"
    }
  ]
}

类型以服务端配置为准,不要在前端硬编码 mode_type 与单价;阶段单价一律取 3.3 getMlsStageList。

3.3 POST /mls/mlsOpenApi/getMlsStageList

获取阶段计费价目(服务端有缓存,配置变更约 1 小时生效),供展示单价。

虚拟阶段 storage(成片存储)、source_upload(源视频上传)会出现在列表中,但不会下发给处理流程。

请求参数

无。

出参 data[]

字段 类型 说明
stage_id string 阶段编码,与 stageId 对齐
stage_name string 展示名称
price_per_second int 单价:积分/秒
bill_scope string once 一条视频一次;per_language 按语种;source 源视频上传;storage 成片存储
sort int 排序,越小越前
remark string 备注

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": [
    {
      "stage_id": "audio_separate",
      "stage_name": "音频分离",
      "price_per_second": 1,
      "bill_scope": "once",
      "sort": 20,
      "remark": "一条视频一次,多语种不重复"
    }
  ]
}

3.4 POST /mls/mlsOpenApi/getMlsTimbreList

获取音色库,供选用配音音色。

请求参数

参数 类型 必选 说明
enable int 否 启用状态;不传默认只查启用
name string 否 名称模糊搜索
page int 否 页码,与 num 同时 > 0 时才分页
num int 否 每页条数

出参 data

字段 类型 说明
list array 音色列表
list[].id int ID
list[].name string 名称
list[].fileUrl string 音频 URL
list[].fileExt string 扩展名
list[].fileSize int 字节数
list[].enable int 1 启用 / 0 停用
list[].createTime int 上传时间 Unix 秒
list[].updateTime int 更新时间
count int 符合条件总数

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "name": "女声-温柔",
        "fileUrl": "https://xxx/timbre/1.mp3",
        "fileExt": "mp3",
        "fileSize": 204800,
        "enable": 1,
        "createTime": 1770444003,
        "updateTime": 1770444003
      }
    ],
    "count": 1
  }
}

3.5 POST /mls/mlsOpenApi/getMlsTranslationSceneList

获取启用的翻译场景列表(服务端有缓存,配置变更约 1 小时生效)。

用户选择场景后,将 scene_code 作为 job_param.sceneCode 传给创建任务接口;服务端会为该场景装配对应的翻译提示词。

请求参数

无。

出参 data

⚠️ 本接口 data 直接是数组,不是 {list: [...]}。

字段 类型 说明
id int 场景 ID
scene_code string 场景编码,传 job_param.sceneCode
scene_name string 场景名称
enable int 1 启用 / 0 停用
remark string 备注

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": [
    {
      "id": 1,
      "scene_code": "news",
      "scene_name": "新闻",
      "enable": 1,
      "remark": "新闻类内容翻译"
    }
  ]
}

缓存说明:场景列表有约 1 小时缓存,修改后最多 1 小时生效。


4. 任务(多语言输出)

任务即「一条源视频 → 一个或多个目标语种成片」,主键为 episodeId。

4.1 POST /mls/mlsOpenApi/getUserMlsList

分页查询当前账号的多语言输出任务列表(仅未删除)。

请求参数

名称 类型 必选 说明
page int 否 页码,默认 1
num int 否 每页数量,默认 15,上限 100
title string 否 按任务标题模糊筛选
resStatus int 否 状态筛选,默认 -1 全部;0 待处理、1 处理中、2 部分完成、3 全部完成、4 全部失败
episodeId int 否 按任务 ID 精确筛选
drama_video_id int 否 按所属集 ID 筛选
createTimeStart int 否 创建时间起(Unix 秒)
createTimeEnd int 否 创建时间止(Unix 秒);早于 createTimeStart 时报错
mode_type string 否 按任务类型精确筛选,非法值返回 mode_type无效
mode_type_index string 否 按类型索引分组筛选
source_type string 否 来源筛选,默认 all;batch 剧集批量、single 单条、all 全部
brief bool 否 精简模式,默认 false;为真时 results 置 '[]',param / job_param / stages 置空,且不返回 jobResource
with_resources bool 否 是否返回 jobResource,默认 true;brief=true 时强制为 false
exclude_internal bool 否 为真时排除内部类型(is_internal=1)的任务

请求示例

{
  "page": 1,
  "num": 15,
  "resStatus": -1,
  "title": "工程1",
  "episodeId": ""
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": [
    {
      "episodeId": 26,
      "dramaId": 14,
      "drama_video_id": 0,
      "source_type": "single",
      "uin": 1000,
      "parentId": "01",
      "userId": 1000,
      "title": "工程1",
      "duration": 32,
      "origin_url": "https://vod.example.com/u/1000/mp4/0x0/mls-1000a1b2c3d4e5f6a7b8c9d0e1f2a3b4.mp4",
      "origin_ready": 1,
      "thumbnail": "https://cdn.example.com/pic/xxx",
      "languages": "italian",
      "mode_type": "full_pipeline",
      "mode_type_index": "full_pipeline",
      "resStatus": 0,
      "results": "[{\"language\":\"italian\",\"status\":0,\"uptime\":1776133477,\"url\":\"\"}]",
      "job_id": "mls-xxxxxxxx",
      "param": {},
      "job_param": {},
      "stages": ["audio_separate", "subtitle_translate"],
      "is_pay": 0,
      "is_del": 0,
      "create_time": 1776133477,
      "uptime": 1776133477,
      "complete_time": 0,
      "jobResource": {}
    }
  ],
  "total": 3
}

主要出参字段说明

字段 类型 说明
episodeId int 任务 ID
dramaId int 所属剧集 ID,0 表示无剧集
drama_video_id int 所属集(视频)ID,0 表示未关联
source_type string batch(剧集批量) / single(单条)
title string 任务标题
duration int 时长(秒)
origin_url string 源视频地址,已转 https
origin_ready int 源片就绪:1 就绪 / 0 预处理中或失败
thumbnail string 封面图
languages string 目标语种,多个以逗号分隔
mode_type / mode_type_index string 任务类型 / 类型索引
resStatus int 0 待处理、1 处理中、2 部分完成、3 全部完成、4 全部失败
results string JSON 字符串,数组项 {language, status, uptime, url};status 同 resStatus 语义;url 为成片地址(已转 https)
job_id string 当前任务实例 ID,重试/新增语种后会变更
param object 任务级参数快照,见 附录 C
job_param object 结构化业务参数,见 附录 D
stages array 阶段快照
is_pay int 是否已计费
create_time / uptime / complete_time int Unix 秒
jobResource object 任务素材资源(最新对象 + versions[]);brief 时为空对象

列表按 episodeId 倒序返回。无数据时返回 {"flag":100,"flagString":"success","data":[],"total":0}。

4.2 POST /mls/mlsOpenApi/getMlsDetail

获取单条任务详情。出参字段与 4.1 单条结构一致,额外返回 jobResource 明细。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
brief bool 否 同 4.1
with_resources bool 否 同 4.1,默认 true

请求示例

{
  "episodeId": 26
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "episodeId": 26,
    "title": "工程1",
    "resStatus": 0,
    "results": "[{\"language\":\"italian\",\"status\":0,\"uptime\":1776133477,\"url\":\"\"}]",
    "jobResource": {}
  }
}

常见错误

flagString 说明
episodeId参数不能为空 缺少参数
记录不存在或无权限 任务不存在或不属于当前账号

4.3 POST /mls/mlsOpenApi/addMlsTask

创建多语言任务。

请求参数

名称 类型 必选 说明
title string 是 任务标题。传 drama_video_id 时可省略,服务端取该集标题
origin_url string 条件 源视频地址;mode_type 的 requires_origin=true 时必填(见 3.2)
languages string 条件 目标语种编码,多个以逗号分隔(如 english,italian);requires_language=true 时必填
mode_type string 否 任务类型,默认 full_pipeline;非法值返回 mode_type无效
duration int 条件 时长(秒)。无源片类型(requires_origin=false)时,若无法从 resources 解析出时长,须显式传 duration
resources array 否 上传素材数组,项结构见下表
param object 否 任务级参数,见 附录 C
job_param object 否 结构化业务参数,见 附录 D
stages array 否 阶段快照;传了则以下发值写入(execution_mode=stages 且不传时使用套餐模板)
list_type string 否 列表类型,默认内置值
dramaId int 否 所属剧集 ID
drama_video_id int 否 所属集 ID;传了则校验归属并自动继承集标题/剧集 ID

resources[] 项:

名称 类型 必选 说明
language string 是 语种,长度 ≤ 50
fileType string 是 资源类型,长度 ≤ 100(如 subtitle、audio、video)
fileUrl string 是 资源地址,长度 ≤ 255

resources 中 language + fileType 不可重复;resources 也可传 JSON 字符串。

请求示例

{
  "title": "工程1",
  "origin_url": "https://vod.example.com/u/1000/mp4/0x0/mls-1000a1b2c3d4e5f6a7b8c9d0e1f2a3b4.mp4",
  "languages": "italian",
  "mode_type": "full_pipeline"
}

无源片(如仅字幕翻译)示例:

{
  "title": "字幕任务",
  "mode_type": "subtitle_only",
  "languages": "english",
  "resources": [
    {"language": "original", "fileType": "subtitle", "fileUrl": "https://xxx/1.srt"}
  ]
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "episodeId": 30,
    "job_id": "mls-xxxxxxxx",
    "mode_type": "full_pipeline",
    "mode_type_index": "full_pipeline",
    "dramaId": 0,
    "drama_video_id": 0
  }
}
字段 说明
episodeId 新建任务 ID
job_id 任务实例 ID,可用于查询处理进度
mode_type / mode_type_index 实际写入的任务类型
dramaId / drama_video_id 实际关联的剧集 / 集,未关联为 0
duration 仅当由 resources 推算时长时返回

常见错误

flagString 说明
title参数不能为空 缺少标题
mode_type无效 类型不存在
无源片时请上传可解析时长的资源(如 srt),或传入 duration 无源片类型未提供时长来源
额度不足,不允许提交 可用积分不足,见 8.3 checkMlsAmount
手机号相关提示 非渠道用户未绑定手机号
集(视频)不存在或无权限 drama_video_id 归属校验失败

4.4 POST /mls/mlsOpenApi/updateMlsTask

编辑任务。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
title string 是 任务标题(必填,不可省略)
languages string 否 追加目标语种,多个以逗号分隔
param object 否 任务级参数,见 附录 C
job_param object 否 结构化业务参数,见 附录 D

行为说明

  • resStatus = 1(处理中)时不允许修改,返回 处理中不允许修改。
  • languages:
    • 当 mode_type 的 requires_language = false 时不允许修改,返回 当前任务类型不允许修改语种;
    • 传入的语种若包含新语种,会写入 results(status=0)并把 resStatus 重置为 0、重新生成 job_id;
    • 若所有传入语种都已存在,则只更新标题等字段,不重置状态。
  • 语种编码非法返回 flag=110(flagString 为具体原因)。

请求示例

{
  "episodeId": 26,
  "title": "222",
  "languages": "indonesian"
}

返回示例

{
  "flag": 100,
  "flagString": "success"
}

常见错误

flagString 说明
episodeId参数不能为空 缺少任务 ID
title参数不能为空 缺少标题
处理中不允许修改 resStatus = 1
当前任务类型不允许修改语种 该类型不支持语种
记录不存在或无权限 归属校验失败

4.5 POST /mls/mlsOpenApi/deleteMlsTask

删除任务(软删),同时软删该任务下素材。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID

请求示例

{
  "episodeId": 27
}

返回示例

{
  "flag": 100,
  "flagString": "success"
}

常见错误

flagString 说明
任务处理中,禁止删除 resStatus = 1,需等待处理结束
任务不存在或无权限删除 归属校验失败

4.6 POST /mls/mlsOpenApi/retryMlsTask

失败重试。若任务因视频预处理未完成/失败导致未就绪,会先自动重试预处理。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
languages string 否 指定重试的语种,多个以逗号分隔;不传则重置全部未成功语种
stages array 否 阶段快照;传了则写入快照

行为说明

  • resStatus = 3(全部完成)返回 任务已完成无需重试。
  • 不传 languages:把 results 中 status != 2 且 status != 4 的语种重置为 0(即重跑未成功/未完成的)。
  • 传 languages:仅重置这些语种中未成功的;若全部已成功,返回 所选语言已完成。
  • 重试会重新生成 job_id,并把 resStatus 置 0、complete_time 置 0。
  • 若集下存在互斥任务(allow_coexist = false),返回冲突提示。

请求示例

{
  "episodeId": 26,
  "languages": "italian"
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "job_id": "mls-xxxxxxxx",
    "preprocess_retry": {
      "job_no": "PP202609290001",
      "retry_mode": "pull"
    }
  }
}

preprocess_retry 仅在本次同时触发了预处理重试时返回。

常见错误

flagString 说明
记录不存在或无权限 归属校验失败
任务已完成无需重试 resStatus = 3
所选语言已完成 指定语种均已成功
重试失败 写库失败

5. 任务素材与资源

5.1 POST /mls/mlsOpenApi/saveMlsTaskResource

在已有任务上新增或编辑素材。

  • 新增/编辑:均插入新版本;同一「语种 + 资源类型」的旧版本仅降级为历史版本,历史版本保留。
  • resStatus = 1(处理中)不允许操作,返回 处理中不允许修改素材。
  • 素材会自动关联任务所属的集。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
language string 是 语种,长度 ≤ 50
fileType string 是 资源类型,长度 ≤ 100
fileUrl string 是 资源地址,长度 ≤ 255
id int 否 兼容字段,可忽略;编辑请直接传新 fileUrl

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 88,
    "version": "v3-20260929",
    "versionSeq": 3
  },
  "uptime": 1776133477
}
字段 说明
data.id 新素材主键
data.version 新版本号,如 v3-20260929
data.versionSeq 同键递增序号
uptime 写入时间(Unix 秒,与 data 同级)

resStatus = 1 时会被拒绝;任务不存在时返回 任务不存在。

5.2 POST /mls/mlsOpenApi/deleteMlsTaskResource

软删指定历史素材版本。

当前最新版本不可删除;如需替换请用 5.1 上传新地址或 5.3 从历史版本创建副本。resStatus = 1 处理中不允许删除。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
id int 是 素材主键(须为非最新版本的历史版本)

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "deletedId": 12
  }
}

常见错误

flagString 说明
id参数不能为空 缺少素材 ID
处理中不允许修改素材 resStatus = 1
当前最新版本不可删除,请上传新文件覆盖或从历史版本创建副本 传入了最新版本
素材不存在或无权限 归属校验失败

5.3 POST /mls/mlsOpenApi/copyMlsTaskResourceVersion

基于选中历史版本的内容生成新版本并升为最新版本;版本号形如 v3-20260929-copy。

请求参数

名称 类型 必选 说明
episodeId int 是 任务 ID
sourceId int 是 源版本素材 id;兼容传 id

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 90,
    "version": "v4-20260929-copy",
    "versionSeq": 4,
    "url": "https://xxx/replaced.srt",
    "sourceId": 10
  }
}

5.4 POST /mls/mlsOpenApi/getMlsResourceGroups

按语种 + fileType 查询分组摘要(不含文件明细)。用于 TTS 候选等「一类型多文件、按 ID 分组」的资源;jobResource 默认不返回这类数据。

按集(drama_video_id)聚合查询:可传 drama_video_id 直接按集查,或传 episodeId 由服务端解析所属集。二者至少传一,都传时以 drama_video_id 为准;无剧集的孤立任务回退按任务查。

请求参数

名称 类型 必选 说明
drama_video_id int 条件 集 ID(也兼容 dramaVideoId),与 episodeId 至少传一
episodeId int 条件 任务 ID
language string 是 语种
fileType string 是 资源类型
page int 否 页码,与 pageSize 同时 > 0 才分页
pageSize int 否 每页数量,上限 200;兼容传 num

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "groupKey": "timbre",
        "groupValue": "12345",
        "fileCount": 3,
        "uptime": 1776133477
      }
    ],
    "count": 1
  }
}

分页时额外返回 page / pageSize。

常见错误

flagString 说明
episodeId 与 drama_video_id 不能同时为空 缺少定位参数
language、fileType 不能为空 缺少筛选条件
项目不存在或无权限 drama_video_id 归属校验失败

5.5 POST /mls/mlsOpenApi/getMlsResourceGroupFiles

查询某分组下文件列表。平铺返回该分组下全部版本(含历史),不嵌套 versions。

请求参数

名称 类型 必选 说明
drama_video_id int 条件 集 ID(也兼容 dramaVideoId),与 episodeId 至少传一
episodeId int 条件 任务 ID
language string 是 语种
fileType string 是 资源类型
groupKey string 是 分组键
groupValue string 是 分组值
page int 否 页码,与 pageSize 同时 > 0 才分页
pageSize int 否 每页数量,上限 200;兼容传 num
https bool 否 默认 true,返回 https 地址

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "groupKey": "timbre",
    "groupValue": "12345",
    "count": 1,
    "list": [
      {
        "id": 88,
        "episodeId": 26,
        "drama_video_id": 0,
        "fileName": "1.mp3",
        "groupKey": "timbre",
        "groupValue": "12345",
        "url": "https://xxx/1.mp3",
        "source": "backend",
        "uptime": 1776133477,
        "version": "v2-20260929",
        "versionSeq": 2,
        "isLatest": true
      }
    ]
  }
}

常见错误

flagString 说明
language、fileType、groupKey、groupValue 不能为空 缺少筛选条件

6. 剧集与集管理

层级关系:剧集(drama)→ 集 / 视频(drama_video)→ 任务(task)。

  • 剧集通过 dramaId 标识;
  • 集(视频)通过 id 标识(在其它接口中称 drama_video_id);
  • 一条集可提交多种 mode_type 的任务。

6.1 POST /mls/mlsOpenApi/addMlsDrama

新增剧集。

请求参数

名称 类型 必选 说明
name string 是 剧集名称
remark string 否 备注

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "dramaId": 15,
    "name": "短剧A",
    "mode_types": "",
    "languages": "",
    "source_type": "batch",
    "remark": ""
  }
}

新建剧集的 mode_types / languages 为空,会在首次 submitMlsDramaTasks 时写入并锁定。

常见错误

flagString 说明
name参数不能为空 缺少名称
手机号相关提示 非渠道用户未绑定手机号

6.2 POST /mls/mlsOpenApi/updateMlsDrama

更新剧集名称 / 备注。

任务类型与输出语种不可通过本接口修改,由 submitMlsDramaTasks 首次提交时写入。

请求参数

名称 类型 必选 说明
dramaId int 是 剧集 ID
name string 是 剧集名称(不传则沿用原值,但不能为空)
remark string 否 备注;不传则沿用原值

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "dramaId": 15,
    "name": "短剧A-改",
    "mode_types": "full_pipeline",
    "languages": "english",
    "source_type": "batch",
    "remark": "备注"
  }
}

常见错误

flagString 说明
参数无效 dramaId 缺失
name参数不能为空 名称为空
剧集不存在或无权限 归属校验失败

6.3 POST /mls/mlsOpenApi/getMlsDramaList

剧集列表。

请求参数

名称 类型 必选 说明
page int 否 页码,默认 1
num int 否 每页数量,默认 15,上限 100
name string 否 名称模糊搜索
dramaId int 否 按剧集 ID 精确查询
source_type string 否 默认 batch;可选 batch、single、all

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "dramaId": 15,
        "name": "短剧A",
        "mode_types": "full_pipeline",
        "languages": "english",
        "source_type": "batch",
        "remark": "",
        "create_time": 1776133477,
        "uptime": 1776133477,
        "video_count": 12
      }
    ],
    "count": 1
  }
}

常见错误

flagString 说明
source_type无效,可选:batch、single、all 取值非法

6.4 POST /mls/mlsOpenApi/getMlsDramaDetail

剧集详情,含各集及其下属任务摘要。

请求参数

名称 类型 必选 说明
dramaId int 是 剧集 ID
brief bool 否 同 4.1,精简任务载荷
with_resources bool 否 同 4.1,默认 true

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "dramaId": 15,
    "name": "短剧A",
    "remark": "",
    "mode_types": "full_pipeline",
    "mode_type_list": ["full_pipeline"],
    "mode_types_configured": true,
    "languages": "english",
    "source_type": "batch",
    "create_time": 1776133477,
    "uptime": 1776133477,
    "videos": [
      {
        "id": 101,
        "dramaId": 15,
        "title": "第1集",
        "origin_url": "https://xxx/1.mp4",
        "thumbnail": "https://xxx/1.jpg",
        "duration": 120,
        "origin_ready": 1,
        "preprocess_status": 2,
        "preprocess_fail_msg": "",
        "sort": 1,
        "source_type": "batch",
        "list_type": "default",
        "task_count": 1,
        "tasks": [],
        "jobResource": {}
      }
    ]
  }
}
字段 说明
mode_types 逗号分隔的类型串(首次提交后写入)
mode_type_list mode_types 解析后的数组
mode_types_configured 是否已配置类型(true 后提交时不可再改类型/语种)
preprocess_status 预处理状态:3 为失败

常见错误

flagString 说明
参数无效 dramaId 缺失
剧集不存在或无权限 归属校验失败

6.5 POST /mls/mlsOpenApi/deleteMlsDrama

删除剧集:级联删除各集及其下属任务(软删)。

剧集下存在处理中任务(resStatus = 1)时拒绝删除。

请求参数

名称 类型 必选 说明
dramaId int 是 剧集 ID

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "dramaId": 15,
    "deleted_task_count": 12
  }
}

deleted_task_count 为被级联软删的任务数。

常见错误

flagString 说明
剧集下存在处理中的任务,无法删除 需等待任务结束
剧集不存在或无权限 归属校验失败

6.6 POST /mls/mlsOpenApi/addMlsDramaVideo

向剧集添加视频(集)。新增后服务端会按需启动该集的视频预处理。

请求参数

名称 类型 必选 说明
dramaId int 是 剧集 ID
title string 是 集标题
origin_url string 是 源视频地址
sort int 否 排序,默认 0
list_type string 否 列表类型,默认内置值;非法值返回 list_type无效

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 102,
    "dramaId": 15,
    "title": "第2集",
    "origin_url": "https://xxx/2.mp4",
    "thumbnail": "",
    "duration": 0,
    "origin_ready": 0,
    "preprocess_status": 0,
    "sort": 2,
    "source_type": "batch",
    "list_type": "default",
    "task_count": 0,
    "tasks": [],
    "jobResource": {}
  }
}

origin_ready = 0 表示预处理进行中;处理完成后才会变为 1(此时才可提交任务)。

常见错误

flagString 说明
title参数不能为空 缺少标题
origin_url参数不能为空 缺少源视频地址
剧集不存在或无权限 归属校验失败
手机号相关提示 非渠道用户未绑定手机号

6.7 POST /mls/mlsOpenApi/getMlsEpisodeList

集(视频)列表,返回各集及其下属任务摘要。

请求参数

名称 类型 必选 说明
page int 否 页码,默认 1
num int 否 每页数量,默认 15,上限 100
title string 否 标题模糊搜索
dramaId int 否 按剧集筛选
drama_video_id int 否 按集 ID 精确查询
source_type string 否 默认 all;可选 batch、single、all
list_type string 否 按列表类型筛选
brief bool 否 同 4.1
with_resources bool 否 同 4.1,默认 true

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "id": 101,
        "dramaId": 15,
        "drama_name": "短剧A",
        "title": "第1集",
        "origin_url": "https://xxx/1.mp4",
        "origin_ready": 1,
        "preprocess_status": 2,
        "duration": 120,
        "sort": 1,
        "task_count": 1,
        "tasks": [],
        "jobResource": {}
      }
    ],
    "count": 1
  }
}

6.8 POST /mls/mlsOpenApi/getMlsEpisodeDetail

集(视频)详情,额外返回 drama_name。

请求参数

名称 类型 必选 说明
drama_video_id int 是 集 ID
brief bool 否 同 4.1
with_resources bool 否 同 4.1,默认 true

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 101,
    "dramaId": 15,
    "drama_name": "短剧A",
    "title": "第1集",
    "origin_url": "https://xxx/1.mp4",
    "origin_ready": 1,
    "task_count": 1,
    "tasks": [],
    "jobResource": {}
  }
}

常见错误

flagString 说明
参数无效 drama_video_id 缺失
集(视频)不存在或无权限 归属校验失败

6.9 POST /mls/mlsOpenApi/updateMlsEpisode

更新集(视频)名称。

请求参数

名称 类型 必选 说明
drama_video_id int 是 集 ID(注意不是 episodeId)
title string 是 集标题(不传则沿用原值,但不能为空)

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 101,
    "title": "第1集-改"
  }
}

常见错误

flagString 说明
参数无效 drama_video_id 缺失
title参数不能为空 标题为空
集(视频)不存在或无权限 归属校验失败

6.10 POST /mls/mlsOpenApi/deleteMlsDramaVideo

删除集(视频):级联软删该集下的任务。

该集存在处理中任务(resStatus = 1)时拒绝删除。

请求参数

名称 类型 必选 说明
id int 是 集 ID;兼容传 drama_video_id

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 101,
    "deleted_task_count": 1
  }
}

常见错误

flagString 说明
该集存在处理中的任务,无法删除 需等待任务结束
集(视频)不存在或无权限 归属校验失败

6.11 POST /mls/mlsOpenApi/submitMlsDramaTasks

批量提交剧集下未提交的视频任务(事务:全成功或全失败)。

请求参数

名称 类型 必选 说明
dramaId int 是 剧集 ID
mode_types string 条件 任务类型,多个以逗号分隔;首次提交必填,后续提交不可修改
languages string 条件 输出语种,多个以逗号分隔;类型需要语种时必填
param object 否 任务级参数,见 附录 C
job_param object 否 结构化业务参数,见 附录 D
stages array 否 阶段快照

行为说明

  • 首次提交:写入剧集的 mode_types / languages 并锁定,之后不可修改(改了返回 任务类型已确定,不可修改 / 输出语种已确定,不可修改)。
  • 按「集 + 类型」去重,已存在且未完成(resStatus IN (0,1))的组合会跳过。
  • 存在预处理失败的集时整体拒绝:视频「xxx」预处理失败,请重试预处理或删除后重新上传。
  • 提交前整体预估额度,可用积分不足时整体拒绝:额度不足,不允许提交。
  • 若无待提交组合,返回 created: [] 且 message 为 没有待提交的任务。

请求示例

{
  "dramaId": 15,
  "mode_types": "full_pipeline",
  "languages": "english,italian"
}

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "created": [
      {
        "videoId": 101,
        "videoTitle": "第1集",
        "mode_type": "full_pipeline",
        "episodeId": 31,
        "job_id": "mls-xxxxxxxx"
      }
    ],
    "created_count": 1,
    "mode_types": "full_pipeline",
    "languages": "english,italian",
    "first_submit": true
  }
}

常见错误

flagString 说明
剧集下暂无视频,请先上传视频 剧集为空
剧集不存在或无权限 归属校验失败
任务类型配置无效: xxx mode_types 中存在非法类型
额度不足,不允许提交 可用积分不足
手机号相关提示 非渠道用户未绑定手机号

7. 视频预处理

7.1 POST /mls/mlsOpenApi/retryMlsVideoPreprocess

视频预处理失败重试。三种定位方式任选其一,优先级:job_no > videoId/id > episodeId。

请求参数

名称 类型 必选 说明
job_no string 条件 预处理任务号;须为最新且未作废的记录
videoId int 条件 集(视频)ID;兼容传 id
episodeId int 条件 任务 ID,服务端据此解析所属集

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "job_no": "PP202609290002",
    "retry_mode": "pull",
    "ref_type": "drama_video",
    "ref_id": 101,
    "message": "预处理已重新提交(仅网络上传)"
  }
}
字段 说明
retry_mode pull 仅网络上传;transcode 从转码开始;processing 已在处理中
ref_type drama_video 或 task

常见错误

flagString 说明
请传入 videoId、episodeId 或 job_no 未提供定位参数
预处理任务不存在或无权限 job_no 归属校验失败
该预处理记录已作废,请在列表查看最新任务 job_no 已作废
请对最新一条预处理记录重试 job_no 非最新
视频不存在或无权限 集归属校验失败

说明:本接口只重跑预处理(源片转码/上传),不会重置任务;若要重跑任务请用 4.6 retryMlsTask(其内部会在需要时自动触发预处理重试)。


8. 额度(积分)

8.1 POST /mls/mlsOpenApi/getMlsAmount

获取当前账号额度。

请求参数

无。

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "last_amount": 10000,
    "reserved": 1200,
    "available": 8800,
    "invite_reward_total": 0
  }
}
字段 说明
last_amount 账户余额
reserved 待处理 / 处理中未完结任务占用的额度
available 可用额度 = last_amount - reserved
invite_reward_total 累计邀请奖励

8.2 POST /mls/mlsOpenApi/getMlsAmountRunList

额度(积分)使用记录。

请求参数

名称 类型 必选 说明
page int 否 页码,默认 1
num int 否 每页数量,默认 15,上限 100
uptimeStart int 否 时间起(Unix 秒);兼容 uptime_start
uptimeEnd int 否 时间止(Unix 秒);兼容 uptime_end
tradeType int 否 1 存入 / 2 支出;兼容 trade_type

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": [
    {
      "id": 1,
      "uin": 1000,
      "trade_amount": -12,
      "last_amount": 9988,
      "trade_type": 2,
      "trade_desc": "全流程-英语 翻译费用",
      "episodeId": 26,
      "uptime": 1776133477,
      "task_title": "工程1"
    }
  ],
  "total": 1
}

8.3 POST /mls/mlsOpenApi/checkMlsAmount

创建任务前判断额度是否充足。

请求参数

名称 类型 必选 说明
duration int 条件 时长(秒);无源片类型可用 resources 推算
languages string 条件 目标语种,多个以逗号分隔;与 languageCount 二选一
languageCount int 条件 目标语种数量
mode_type string 否 任务类型,默认 full_pipeline;非法值返回 mode_type无效
param object 否 任务级参数(影响 timestamp_check 等)
stages array 否 阶段快照
include_source_upload bool 否 是否把源视频上传费用计入预估;兼容 includeSourceUpload

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "sufficient": true,
    "required": 1200,
    "last_amount": 10000,
    "reserved": 0,
    "available": 10000,
    "billable_seconds": 120,
    "language_count": 2,
    "mode_type": "full_pipeline",
    "base_price_per_second": 3,
    "lang_price_per_second": 1,
    "timestamp_check": false
  }
}
字段 说明
sufficient 可用额度是否 ≥ required
required 本次预估消耗
available 可用额度 = last_amount - reserved
billable_seconds 计费秒数
timestamp_check 任务参数是否启用时间戳校对

base_price_per_second / lang_price_per_second 仅为参考,真实单价请以 3.3 getMlsStageList 为准。

常见错误

flagString 说明
duration、languages或languageCount无效 需要语种的任务未提供语种,或时长非法

9. 反馈工单

工单状态:pending 待受理 → processing 处理中 → replied 已回复 → closed 已关闭(不可重开)。

9.1 POST /mls/mlsOpenApi/getMlsFeedbackCategoryTree

反馈分类树(仅启用)。为两级结构。

请求参数

无。

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "id": 1,
        "name": "功能异常",
        "sort": 1,
        "children": [
          {"id": 11, "name": "无法上传", "sort": 1}
        ]
      }
    ]
  }
}

9.2 POST /mls/mlsOpenApi/submitMlsFeedback

提交反馈工单,初始状态 pending。

请求参数

名称 类型 必选 说明
title string 是 标题,≤ 200 字
content string 是 详情,≤ 2000 字
feedbackSource string 是 反馈来源(如 h5、web),≤ 64 字
categoryId int 是 一级分类 ID,须为启用的一级分类
subCategoryId int 否 二级分类 ID,须属于 categoryId 且启用
images array 否 图片 URL 数组,≤ 10 张,只传 URL
pageUrl string 否 页面地址,≤ 512 字
clientVersion string 否 客户端版本,≤ 64 字
deviceInfo string 否 设备信息,≤ 255 字
relatedType string 否 关联业务类型,≤ 32 字
relatedId string 否 关联业务 ID,≤ 64 字

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 1001
  }
}

常见错误

flagString 说明
标题必填且不超过200字 标题为空或超长
详情必填且不超过2000字 详情为空或超长
反馈来源不能为空 缺少 feedbackSource
请选择反馈分类 缺少 categoryId
一级分类无效 / 二级分类无效 分类校验失败

9.3 POST /mls/mlsOpenApi/appendMlsFeedbackMessage

关单前追评。

已回复(replied)的工单追评后回到 processing;已关闭(closed)不可追评。

请求参数

名称 类型 必选 说明
id int 是 工单 ID
content string 是 追评内容,≤ 2000 字
images array 否 图片 URL 数组,≤ 10 张

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 1001
  }
}

常见错误

flagString 说明
id不能为空 缺少工单 ID
内容必填且不超过2000字 内容为空或超长
工单已关闭,无法继续反馈 状态为 closed

9.4 POST /mls/mlsOpenApi/getMyMlsFeedbackList

我的反馈列表。

请求参数

名称 类型 必选 说明
page int 否 页码,默认 1
num int 否 每页数量,默认 10,上限 50
status string 否 按状态筛选

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "list": [
      {
        "id": 1001,
        "title": "无法上传视频",
        "feedbackSource": "web",
        "categoryId": 1,
        "categoryName": "功能异常",
        "subCategoryId": 11,
        "subCategoryName": "无法上传",
        "status": "pending",
        "userUnread": 0,
        "createTime": 1776133477,
        "updateTime": 1776133477,
        "closeTime": 0
      }
    ],
    "count": 1
  }
}

列表按 userUnread 倒序、id 倒序返回。

9.5 POST /mls/mlsOpenApi/getMyMlsFeedbackDetail

我的反馈详情,仅返回对用户可见的消息;打开后会自动清除未读标记。

请求参数

名称 类型 必选 说明
id int 是 工单 ID

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 1001,
    "title": "无法上传视频",
    "status": "replied",
    "userUnread": 0,
    "content": "上传一直失败",
    "images": ["https://xxx/1.png"],
    "pageUrl": "https://xxx/upload",
    "clientVersion": "1.2.0",
    "deviceInfo": "iPhone 15",
    "relatedType": "task",
    "relatedId": "26",
    "messages": [
      {
        "id": 1,
        "senderType": "user",
        "msgType": "user",
        "content": "上传一直失败",
        "images": ["https://xxx/1.png"],
        "adminName": "",
        "createTime": 1776133477
      }
    ]
  }
}

9.6 POST /mls/mlsOpenApi/closeMyMlsFeedback

用户关闭工单(不可重开)。

请求参数

名称 类型 必选 说明
id int 是 工单 ID
remark string 否 关闭备注,≤ 512 字

返回示例

{
  "flag": 100,
  "flagString": "success",
  "data": {
    "id": 1001,
    "closeTime": 1776133477
  }
}

常见错误

flagString 说明
id不能为空 缺少工单 ID
反馈不存在 归属校验失败
工单已关闭 已处于 closed

附录 A:接口可用范围

openApi 的可用范围以本文档「0.2 接口清单」为准。调用清单之外的接口名,一律返回:

{"flag":1007,"flagString":"请求接口不存在,请参照文档说明"}

部分能力(如账号注册登录、控制台会话、渠道对接、支付回调、内部运维与各类回调通知等)不通过 openApi 提供,请按各自的对接方式处理。

如需新增开放接口,请联系对接负责人评估后开通。


附录 B:典型调用时序

B.1 单条任务(有源片)

1. POST /mls/mlsOpenApi/getSupportLanguageList   → 取可用 language_code
2. POST /mls/mlsOpenApi/getMlsModeTypeList       → 取 mode_type / requires_origin / requires_language
3. POST /mls/mlsOpenApi/uploadMlsPart            → 分片上传(partNum 从 1 递增)
4. POST /mls/mlsOpenApi/completeMlsUpload        → 取 location
5. POST /mls/mlsOpenApi/checkMlsAmount           → 预估额度是否充足
6. POST /mls/mlsOpenApi/addMlsTask               → 取 episodeId
7. POST /mls/mlsOpenApi/getMlsDetail             → 轮询 resStatus / results
8. POST /mls/mlsOpenApi/retryMlsTask             → 失败时重试
9. POST /mls/mlsOpenApi/deleteMlsTask            → 清理

B.2 剧集批量任务

1. POST /mls/mlsOpenApi/addMlsDrama              → 取 dramaId
2. POST /mls/mlsOpenApi/addMlsDramaVideo         → 逐集添加(origin_ready 初始为 0)
3. POST /mls/mlsOpenApi/getMlsDramaDetail        → 轮询各集 origin_ready,全部为 1 后才可提交
4. POST /mls/mlsOpenApi/retryMlsVideoPreprocess  → 预处理失败时重试
5. POST /mls/mlsOpenApi/submitMlsDramaTasks      → 首次提交须传 mode_types / languages,提交后锁定
6. POST /mls/mlsOpenApi/getMlsDramaDetail        → 查看各任务进度

B.3 查询进度建议

  • 优先轮询 4.1 getUserMlsList(可一次按 drama_video_id 或 resStatus 过滤多条),比逐条 getMlsDetail 更省请求。
  • 传 brief=1 可显著减小响应体(不返回 results / param / job_param / stages / jobResource);确认全部完成后,再对需要的任务单独取详情。

附录 C:任务级环境变量 param

param 为任务级环境变量对象,随任务写入并在下发处理流程时透传。常用字段:

字段 类型 说明
timestampCheck bool 是否启用时间戳校对
其它 — 按类型(mode_type)由服务端约定的扩展字段

param 会原样透传给下游,新增字段请与业务确认,避免与既有约定冲突。


附录 D:结构化业务参数 job_param

job_param 描述「怎么做」,服务端会对字段做校验后透传给下游处理流程。常用字段:

字段 类型 说明
sceneCode string 翻译场景编码,取自 3.5 getMlsTranslationSceneList;传入后服务端会为该场景装配对应的翻译提示词
stages object 阶段级参数,如 stages.subtitle_translate.prompt
其它 — 按类型与阶段扩展

附录 E:变更记录

日期 变更
2026-09-30 文档重写:按实现校准全部入参 / 出参,补齐基础配置、任务素材、剧集与集、预处理重试、额度、反馈工单等共 40 个接口;新增调用时序(附录 B)
— 明确 openApi 可用范围以「0.2 接口清单」为准,清单外接口返回 flag=1007
— 修正 getSupportLanguageList(enable 入参已失效)
— 修正 updateMlsTask(title 为必填)
— 修正 deleteMlsTask(处理中禁止删除)
— 补充 addMlsTask 返回 job_id / mode_type / dramaId / drama_video_id
最后编辑: 广电云技术部  文档更新时间: 2026-09-30 15:09   作者:广电云技术部