API Reference
Smart editing — voiceover montage API
Voiceover montage: combine audio or a script with media and a template. Async, multiple resolutions.
Overview
- 音频/文案口播
- 素材列表
- 模板成片
- 异步回调
Use cases
- 音频口播成片
- 素材混剪短视频
- 批量内容生产
- Gateway ·
https://xiaoapis.com - Auth · send
key(query or JSON body, as this API specifies) - Response · JSON. Check the business code and the HTTP status, not only HTTP 200
Authentication
Send the platform API key (query parameter key or JSON field key, as this page specifies). Create one in API key management.
POST https://xiaoapis.com/api/smartclip/broadcast_mixcut
Content-Type: application/json
{
"key": "YOUR_API_KEY"
}
Request example
https://xiaoapis.com/api/smartclip/broadcast_mixcut?key=你的密钥&action=create
Details
多规格计费:
720P 3(≈¥0.030) 点/输入秒,1080P 4(≈¥0.040) 点/输入秒
| 规格 | 价格 |
|---|---|
| 720P | 3(≈¥0.030) 点/输入秒 |
| 1080P | 4(≈¥0.040) 点/输入秒 |
计费公式:ceil(输入秒) × 对应规格单价。有 audioUrl 时探测音频时长;否则汇总 materials(图片按 2 秒)。 可通过参数 resolution(720p / 1080p,默认 720p)指定输出规格。无法解析有效输入媒体时长时请求会被拒绝。
URL 参数 action:
通过 URL 参数 action 区分操作:
create— 创建任务(POST JSON)query— 查询任务(GET/POST,需task_id)config— 获取配置(GET,不扣点)
create 请求示例 URL:
http://test.xiaobao.ink/api/smartclip/broadcast_mixcut?key=你的密钥&action=create
请求HEADER:
| 名称 | 值 |
|---|---|
| Content-Type | application/json |
鉴权说明:请在 URL 参数或 JSON Body 中携带 key(平台 API 密钥)。使用 POST + JSON 时,key 必须写在 JSON Body 内。
create 请求参数说明(POST JSON):
| 名称 | 必填 | 类型 | 示例值 | 说明 |
|---|---|---|---|---|
| key | 是 | string | 你的密钥 | 平台 API 密钥 |
| styleId | 是 | string | 68aebb91b8619ed6f4168f40 | 视频模板 ID |
| materials | 是 | array | [{type,fileUrl,soundSwitch}] | 素材列表,至少 1 项 |
| audioUrl | 否 | string | https://example.com/a.mp3 | 音频 URL(mp3/wav/m4a),与 content 二选一;有音频时优先按音频时长计费 |
| resolution | 否 | string | 720p | 输出规格:720p / 1080p,影响单价 |
| content | 否 | string | 文本内容(3-1800 字);当前平台不支持 content+speakerId 定制声音分支 | |
| callback_url | 是 | string | https://example.com/hook | 用户回调地址 |
| title | 否 | string | 标题 | |
| language | 否 | string | zh-CN | 音频语种 |
| subtitle | 否 | array | 字幕数组 | |
| introduceCard | 否 | object | 身份栏 | |
| packRules | 否 | object | 包装规则 | |
| processRules | 否 | object | 水印、首帧封面等 | |
| structLayers | 否 | array | 图层修改 |
视频生成方式:
参考文档支持两种方式:
| 方式 | 字段 | 说明 |
|---|---|---|
| 文本内容 + 定制声音 | content + speakerId | 文本字符数要求 3-1800,声音 ID 为定制声音产生的声音 ID |
| 音频文件 | audioUrl | 音频时长小于 5 分钟,格式 mp3、wav、m4a,文件大小小于等于 100MB,需要能够语音转文本 |
当前平台应用仅支持 audioUrl 或素材输入链路,不支持 content + speakerId 定制声音分支。若传入 content 或 speakerId,平台会返回 unsupported_speaker_branch。
speakerExtra:
| 字段 | 类型 | 必填 | 默认值 / 范围 | 说明 |
|---|---|---|---|---|
| speedRatio | number | 否 | 默认 1,范围 0.5-2 | 语速,支持 1 位小数,1 表示常速,例如 0.6、0.9、1.2 |
| language | string | 否 | - | 语种,特指该克隆声音文本(content)支持的语种 |
| marks | array | 否 | - | 文本标记特殊处理处,传 content 时有效 |
| marks[].type | string | 是 | break | 标记类型,break 表示停顿 |
| marks[].index | integer | 是 | 从 0 开始 | 文本索引处,最大值为 content 文本长度 |
| marks[].time | integer | 是 | 100-10000 | 时长,单位 ms |
processRules:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| watermarkShow | boolean | 否 | false | 是否添加“AI生成”字样水印 |
| metadata | object | 否 | - | 元水印数据,仅支持写入一组数据,且 value 值需为字符串 |
| firstFrameCover | object | 否 | - | 首帧封面配置 |
重要规则:
音频驱动的
audioUrl、素材materials[].fileUrl、背景音乐packRules.backgroundMusic.audioUrl、AI 封面的resultImageUrl地址不能重名,重名会导致渲染异常。packRules仅用于控制标题、字幕、素材、背景音乐、关键词等图层是否参与效果包装,不能控制对应图层的显示/隐藏。如果期望生成的视频不显示标题,请不要设置标题值。
callback_url/callbackUrl作为平台任务通知地址保存,任务完成或失败后由平台发起通知。如无法解析有效输入媒体时长,本次请求会被拒绝,不使用默认时长。
通用对象字段:
subtitle[]
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| startMs | integer | 是 | 时间戳开始,单位 ms |
| endMs | integer | 是 | 时间戳结束,单位 ms,最大支持 310000ms |
| text | string | 是 | 文本,只支持单字符级别 |
materials[]
| 字段 | 类型 | 必填 | 可选值 / 默认值 | 说明 |
|---|---|---|---|---|
| type | string | 是 | image / video | 素材类型 |
| fileUrl | string | 是 | - | 素材 url |
| soundSwitch | boolean | 否 | false | 当素材为视频时原声开关,素材混剪和新闻体视频支持 |
introduceCard
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 名称 |
| description | string | 否 | 描述 |
packRules
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| headerSwitch | boolean | 否 | - | 标题包装开关 |
| materialSwitch | boolean | 否 | - | 素材包装开关 |
| subtitleSwitch | boolean | 否 | - | 字幕包装开关 |
| keywordSwitch | boolean | 否 | - | 关键词包装开关 |
| backgroundMusic | object | 否 | - | 背景音乐设置 |
| backgroundMusic.audioSwitch | boolean | 否 | - | 音乐开关 |
| backgroundMusic.audioUrl | string | 否 | - | 音频 url,模板内置背景音乐和传递 audioUrl,优先使用 audioUrl |
| backgroundMusic.volume | number | 否 | 0.3 | 音量,保留一位小数,范围 0-1 |
processRules.firstFrameCover
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| coverSwitch | boolean | 否 | false | 封面开关 |
| templateId | string | 否 | - | 模版 ID,如果未设置则系统匹配 |
| imageUrl | string | 否 | - | 图片地址,用于生成 AI 封面图的底图,imageUrl 和 resultImageUrl 二选一必填 |
| resultImageUrl | string | 否 | - | 图片生成接口的结果图片地址或其他封面图片地址;传了此值将直接运用作为视频首帧封面,优先级更高 |
structLayers[]
| 字段 | 类型 | 必填 | 可选值 | 说明 |
|---|---|---|---|---|
| markCode | string | 是 | headerLayer / subtitleLayer / ipLayer / backgroundLayer / figureLayer | 图层,对应模板详情接口返回的图层数据 |
| show | boolean | 否 | - | 是否显示,不设置时默认跟随模板;backgroundLayer、figureLayer 不支持设置,默认显示 |
| showMode | string | 否 | always / customize | 显示模式,markCode=headerLayer 时生效,不设置时默认跟随模板 |
| showTime | number | 条件必填 | 大于 0 | 显示时长,markCode=headerLayer 且 showMode=customize 时生效且必填,保留 3 位小数 |
| layer.transform.position | integer[] | 否 | - | 锚点定位,对应模板详情 transform.position |
| layer.uri | string | 否 | - | 背景图片资源链接,仅 backgroundLayer 生效 |
素材与媒体要求:
输入视频格式:mp4、mov;视频编码 h264、HEVC(h265);帧率 10-60fps,推荐 25;单边分辨率小于 2000px。
真人口播 videoUrl 时长小于 5 分钟,文件大小小于 500MB,视频中的音频需要能够语音转文本。
素材总量限制:单张图片计算为 2 秒,单个视频素材不能超过 60 秒,所有素材总时长不能超过 5 分钟。
素材图片格式支持 jpg、png、webp 静态图,单边分辨率小于 2000px。
素材视频格式支持 mp4、mov,单个视频小于 500MB,单边分辨率小于 2000px。
背景音乐格式支持 mp3、wav、m4a,文件大小不超过 120MB,时长不超过 5 分钟。
首帧封面
imageUrl、resultImageUrl格式支持 jpg/jpeg、png,文件大小不超过 10MB,单边分辨率小于 2000px。
query / 回调:
query 需 task_id;回调字段同真人口播接口。
响应字段:
| 字段 | 类型 | 必返 | 说明 |
|---|---|---|---|
| task_id | string | 是 | 平台任务 ID |
| status | string / int | 是 | 平台任务状态:上游多为 processing / queued;本平台 create/query 返回 1 处理中、2 完成、3 失败 |
| app | string | 是 | 应用编码,固定为 smart_clip(上游 data;本平台见 upstream 透传) |
| api | string | 是 | API 编码,固定为 broadcast_mixcut(上游 data;本平台见 upstream 透传) |
任务结果:
任务完成后,平台任务查询结果 / 用户回调中的结果通常包含:
| 字段 | 类型 | 说明 |
|---|---|---|
| video_url | string | 视频 url 地址,视频生成类任务返回 |
| cover_url | string | 视频封面 url 地址 |
| duration | number | 生成的视频或音频时长,单位:秒 |
| data | object | 完整结果数据 |
任务失败时返回错误码和错误描述(本平台字段为 fail_reason)。
Response example
{ "code": 200, "msg": "success", "data": { "task_id": "task_8b4125d2a045655f7b4d69d4", "status": 1, "progress": 0, "power_cost": 150 }}
FAQ
口播混剪适合什么场景?
已有口播音频或文案,需要配上图片/视频素材并套模板出片的场景。
必填参数有哪些?
通常包括 styleId、materials、callback_url 等;音频与文案规则以文档为准。
计费依据是什么?
一般按输入秒与分辨率计费;有 audioUrl 时优先按音频时长,否则按素材规则汇总。
如何获取模板?
先调用模板列表,scene 选择口播混剪对应枚举。
任务失败怎么排查?
检查素材 URL 是否可达、格式是否支持、styleId 是否属于正确场景。
支持回调吗?
支持。create 时填写 callback_url,任务完成或失败后平台通知。
Related APIs
- Smart editing — presenter video API
- Smart editing — news remix API
- Smart editing — template list API
- Speech to text with subtitles API
Full console doc (with the debugger):/doc/26