API Reference
Smart editing — presenter video API
Presenter edit: upload a person video and render it with a template. Supports create, query, and config. Billed by resolution and input seconds.
Overview
- 真人视频 + 模板
- 720p/1080p
- 异步任务与回调
- 字幕/素材包装
Use cases
- 真人口播成片
- MCN 批量包装
- 标准化短视频生产
- 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/realman_broadcast
Content-Type: application/json
{
"key": "YOUR_API_KEY"
}
Request example
https://xiaoapis.com/api/smartclip/realman_broadcast?key=你的密钥&action=create
Details
多规格计费:
720P 3(≈¥0.030) 点/输入秒,1080P 4(≈¥0.040) 点/输入秒
| 规格 | 价格 |
|---|---|
| 720P | 3(≈¥0.030) 点/输入秒 |
| 1080P | 4(≈¥0.040) 点/输入秒 |
计费公式:ceil(输入秒) × 对应规格单价。输入秒取自 videoUrl 媒体探测时长。 可通过参数 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/realman_broadcast?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(来自模板列表 id) |
| videoUrl | 是 | string | https://example.com/a.mp4 | 真人视频 URL,mp4/mov,时长<5分钟,<500MB;探测该时长用于计费 |
| resolution | 否 | string | 720p | 输出规格:720p / 1080p,影响单价 |
| callback_url | 是 | string | https://example.com/hook | 任务完成/失败后平台回调你的地址(也支持 callbackUrl / notify) |
| title | 否 | string | 聊AI行业 | 标题;不显示标题则不要传 |
| language | 否 | string | zh-CN | 视频语种(ASR 用) |
| materials | 否 | array | [{type,fileUrl}] | 素材列表,type=image|video |
| materialSoundSwitch | 否 | bool | false | 素材为视频时是否保留原声 |
| subtitle | 否 | array | [{startMs,endMs,text}] | 字幕/ASR 结果 |
| introduceCard | 否 | object | {name,description} | 身份栏 |
| packRules | 否 | object | 标题/素材/字幕/关键词/背景音乐包装开关 | |
| processRules | 否 | object | 水印、预处理 roughCut/sliceMerge 等 | |
| structLayers | 否 | array | 修改 headerLayer/subtitleLayer 等图层 |
特殊字段说明:
subtitle(字幕信息)
选填,不设置则由系统智能处理。
如果期望手动修改从视频中识别的文字,可以先调用音频转文字(ASR)接口识别出文本信息,更改其中的文字,然后保持 ASR 返回的格式设置到该字段。
processRules.resourcePreprocessMethod(真人视频预处理方式)
选填,不设置真人视频预处理方式时,默认保持原始视频时长。roughCut:粗剪,按照系统内置规则智能处理,例如自动去掉无声片段等。sliceMerge:按照 subtitle 字段中标注的开始/结束时间,自动去掉不连续时间范围的片段。
processRules:
| 字段 | 类型 | 必填 | 默认值 | 可选值 / 范围 | 说明 |
|---|---|---|---|---|---|
| watermarkShow | boolean | 否 | false | true / false | 是否添加“AI生成”字样水印 |
| resourcePreprocessMethod | string | 否 | - | sliceMerge / roughCut | 真人视频预处理方式,不设置时默认保持原始视频时长 |
| materialMatchWay | string | 否 | preciseMatch | fuzzyMatch / preciseMatch | 素材匹配方式 |
| metadata | object | 否 | - | - | 元水印数据,仅支持写入一组数据,且 value 值需为字符串 |
| firstFrameCover | object | 否 | - | - | 首帧封面配置 |
重要规则:
视频驱动的
videoUrl、素材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 请求参数:
| 名称 | 必填 | 类型 | 示例值 | 说明 |
|---|---|---|---|---|
| action | 是 | string | query | URL 参数 |
| key | 是 | string | 你的密钥 | 平台 API 密钥 |
| task_id | 是 | string | task_xxx | create 返回的任务 ID |
create 返回参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
| code | int | 200 成功 |
| data.task_id | string | 任务 ID |
| data.status | int | 1 处理中;2 完成;3 失败 |
| data.progress | int | 进度 0-100 |
| data.resolution | string | 计费规格 |
| data.bill_seconds | int | 计费输入秒(ceil) |
| data.points_per_second | float | 该规格单价(点/输入秒) |
| data.power_cost | float | 本次扣点数 |
用户回调参数(POST 到你的 callback_url):
| 名称 | 类型 | 说明 |
|---|---|---|
| task_id | string | 任务 ID |
| status | int | 2 成功;3 失败 |
| video_url | string | 成片地址(成功时) |
| fail_reason | string | 失败原因(失败时) |
响应字段:
| 字段 | 类型 | 必返 | 说明 |
|---|---|---|---|
| task_id | string | 是 | 平台任务 ID |
| status | string / int | 是 | 平台任务状态:上游多为 processing / queued;本平台 create/query 返回 1 处理中、2 完成、3 失败 |
| app | string | 是 | 应用编码,固定为 smart_clip(上游 data;本平台见 upstream 透传) |
| api | string | 是 | API 编码,固定为 realman_broadcast(上游 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_6139c79459b9594a32f4737b", "status": 1, "progress": 0, "api_type": "realman_broadcast", "power_cost": 150 }}
FAQ
真人口播 API 是什么?
将真人出镜视频与模板、字幕/素材规则组合,异步生成可发布短视频。
怎么创建任务?
调用接口并设置 action=create,提交 styleId、videoUrl、callback_url 等必填字段。
如何计费?
通常按分辨率单价 × 输入秒(对 videoUrl 探测时长取整)计费,以文档与控制台为准。
如何查询进度?
action=query 并传入 task_id,或等待 callback_url 通知。
videoUrl 有什么限制?
一般为 mp4/mov,时长与大小上限见文档;需公网可访问以便探测时长。
和口播混剪有什么区别?
真人口播以真人视频为主驱动;口播混剪更侧重音频/文案口播 + 素材画面。
可以不显示标题吗?
可以。不传标题相关字段即可,具体以文档说明为准。
Related APIs
- Smart editing — voiceover montage API
- Smart editing — news remix API
- Smart editing — template list API
- AI avatar HD render API
Full console doc (with the debugger):/doc/25