枚举清单
一次拉取同合云各接口入参枚举的全集:音色、字幕样式与颜色、语种码、工程文件格式、抠像模式、节奏预设等。
这份清单是机器可读的真相源。 各接口文档里写的枚举值都是它的快照——两边若出现出入,以本接口返回的为准。
基本信息
| 项目 | 值 |
|---|---|
| 请求方法 | GET |
| 请求路径 | /catalog |
| 鉴权方式 | 无需鉴权 |
| 缓存 | Cache-Control: public, max-age=60 + ETag |
无请求参数。
为什么需要它
枚举值会随服务端更新而变化——新增一种字幕样式、上线一个新音色、临时下架一个任务类型。 在此之前,调用方只能把这些值抄进自己的代码,然后等某天服务端变了、抄的那份还是旧的:
- 服务端新增的合法值,被调用方本地校验拒掉;
- 服务端已下架的值,调用方还在往外发。
两种情况都不会报错,只是行为不对。拉这份清单就不必再抄。
两个版本字段,含义不同
| 字段 | 变化时机 | 你该怎么用 |
|---|---|---|
schema | 结构变化时(字段怎么排),人工递增;只新增分节或字段时不递增 | 先看它。它变了说明解析代码可能要改 |
catalog_version | 内容变化时(枚举值本身),由内容自动派生 | 与本地快照比对,不同就更新快照 |
HTTP 的 ETag 与 catalog_version 同源同值。带 If-None-Match 请求,内容未变时返回 304 空体。
响应示例
{
"code": 200,
"msg": "success",
"data": {
"schema": 1,
"catalog_version": "c9843194d63429ac31012be87ae0be3b",
"sections": {
"tts": {
"voices": [
{ "id": "ali_longlaobo_v3", "internal_only": false, "maturity": "stable" }
],
"output_formats": ["wav", "mp3"],
"split_methods": ["cut0", "cut1", "cut2", "cut3", "cut4", "cut5"],
"subtitle_formats": ["srt"]
},
"music_visualizer": {
"templates": ["aurora", "bars", "lissajous", "nowplaying", "pulsar", "ridge", "ring", "shockwave", "vinyl"]
},
"subtitle": {
"languages": { "中文": "zh-CN", "英文": "en-US", "日文": "ja-JP" },
"source_languages": {
"video_oral_cut": ["en-US", "fr-FR", "ja-JP", "ko-KR", "zh-CHS", "zh-CHT", "zh-CN"]
},
"styles": ["default", "outline", "cinema_yellow", "immersive_box", "wide_spacing", "deep_shadow", "boxed"],
"colors": ["雅黑", "淡绿", "森林绿", "湖蓝", "道奇蓝", "钢蓝", "浅粉红", "深橙", "珊瑚橙", "橙红", "土豪金"]
},
"asr": { "languages": ["zh-CN", "en-US", "ja-JP"] },
"task_availability": { "offline": [] },
"matting": {
"video": { "target_modes": ["auto", "mask"], "output_formats": ["webm"] },
"image": { "output_formats": ["png", "webp"] }
},
"audio_separation": { "modes": ["fast", "turbo"] },
"oral_cut": { "rhythm_presets": ["compact", "concise", "steady"] },
"project_formats": {
"public": ["xml", "fcpxml", "otio", "jianying", "capcut", "gtrk"],
"aliases": ["xml", "fcpxml", "otio", "jianying_draft", "jianying_meta", "capcut_draft", "capcut_meta", "gtrk"]
},
"video_ai_segment": { "modes": ["narrative", "scene", "shot_type", "subject"] },
"video_interpolate": { "multipliers": [2, 3, 4] }
}
}
}
示例中
voices、languages、source_languages、asr.languages都只列了一部分,实际返回全量。
分节说明
| 分节 | 用在哪 |
|---|---|
tts | 语音克隆的音色、输出格式、文本切分方式、字幕格式 |
music_visualizer | 音乐可视化模板 |
subtitle | 字幕语种:languages 是共同范围(翻译目标语按它取值),source_languages 按任务类型列出受理的识别源语种;以及样式、颜色 |
asr | 语音识别(/asr)受理的识别语种 |
task_availability | offline 列出临时下架的任务类型;空数组表示当前没有下架的 |
matting | 视频 / 图片抠像的模式与输出格式 |
audio_separation | 人声分离模式 |
oral_cut | 口播剪辑的节奏预设 |
project_formats | 工程文件格式。public 是对外枚举,aliases 是仍被接受的旧细粒度值 |
video_ai_segment | 智能分镜模式 |
video_interpolate | 插帧倍数 |
关于 task_availability
offline 里的任务类型仍在册(类型、计价都照常),只是暂时不接受创建,提交会返回错误码 6029。
恢复上架后它会从这个数组里消失。
这里不下发在册类型全集——那份清单在控制台,由运营维护;本接口只回答「哪些暂时不能用」。
关于 internal_only
标了 internal_only: true 的音色照常列出,但仅内部账号可用。展示不等于可用。
建议的用法
- 首次调用时把整份
data落成本地快照,记下catalog_version。 - 之后带
If-None-Match: <上次的 ETag>请求;收到304就继续用本地快照。 - 拉不到时用最后一次成功的快照,不要因此中断你的流程。
- 完全没有快照时,跳过本地校验、直接提交——服务端白名单永远是最终判据。
错误码
本接口只读、无参数,正常情况下只返回 200 或 304。