POST /api
通过统一入口调用所有API。
{
"apiname": "API名称",
"params": {
"参数名": "参数值"
}
}
| apiname | 说明 | 请求方法 |
|---|---|---|
| 专业数字人克隆 | 基于视频训练高精度数字人模型 | POST |
| 极速数字人克隆 | 快速训练数字人模型 | POST |
| 声音克隆 | 训练声音模型 | POST |
| 图生数字人克隆 | 基于图片生成数字人 | POST |
| 数字人口播视频 | 生成数字人口播视频 | POST |
| 数字人口播混剪视频 | 生成数字人混剪视频 | POST |
| 素材混剪视频 | 素材混剪生成视频 | POST |
| 剪辑模板列表 | 获取剪辑模板列表 | POST |
| 封面模板列表 | 获取封面模板列表 | POST |
| 文本转语音 | 文本转换为语音 | POST |
| 查询任务详情 | 查询任务状态和结果 | POST |
成功响应:
{
"code": 0,
"message": "success",
"data": { ... }
}
失败响应:
{
"code": -1,
"message": "错误描述",
"data": {}
}
apiname: 专业数字人克隆
基于视频训练高精度数字人模型。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| videoUrl | string | 是 | 训练视频URL |
| authVideoUrl | string | 是 | 授权视频URL |
| authText | string | 是 | 被授权对象,请使用品牌词,表示用户向该品牌授权,例如:鱼仙儿 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "专业数字人克隆",
"params": {
"videoUrl": "https://golden-final.com/train.mp4",
"authVideoUrl": "https://neat-armoire.net/auth.mp4",
"authText": "鱼仙儿"
}
}'
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
训练视频:
授权视频:
apiname: 极速数字人克隆
快速训练数字人模型,训练速度更快。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| videoUrl | string | 是 | 训练视频URL |
| authVideoUrl | string | 是 | 授权视频URL |
| authText | string | 是 | 被授权对象,请使用品牌词,表示用户向该品牌授权,例如:鱼仙儿 |
| callbackUrl | string | 否 | 用于接收训练结果回调通知地址 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "极速数字人克隆",
"params": {
"videoUrl": "https://golden-final.com/train.mp4",
"authVideoUrl": "https://neat-armoire.net/auth.mp4",
"authText": "鱼仙儿",
"callbackUrl": "https://exotic-reservation.org/hook"
}
}'
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
训练视频:
授权视频:
apiname: 声音克隆
支持上传音频及进行音色复刻。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| audioUrl | string | 是 | 复刻音频URL |
| model | enum | 是 | 声音复刻模型,枚举值: v1, v2, v3, s1, s3 |
| language | string | 是 | 复刻音频语种 |
| demoText | string | 否 | 试听音频文案,需要与语种对应 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "声音克隆",
"params": {
"audioUrl": "https://fragrant-makeover.info/reproduce.mp3",
"model": "s3",
"language": "zh-CN",
"demoText": "你好,我是你的专属AI克隆声音",
}
}'
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
apiname: 图生数字人克隆
基于图片生成数字人模型。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| imageUrl | string | 是 | 训练图片URL,必须以 http\:// 或 https\:// 开头 |
| authText | string | 是 | 被授权对象(品牌词),非空字符串 |
| authVideoUrl | string | 是 | 授权视频URL |
{
"apiname": "图生数字人克隆",
"params": {
"imageUrl": "https://example.com/face.jpg",
"authText": "鱼仙儿",
"authVideoUrl": "https://neat-armoire.net/auth.mp4"
}
}
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
apiname: 数字人口播视频
生成数字人口播视频(无包装)。
方式一:基于"文本内容 + 定制声音"生成视频
方式二:基于"音频文件"生成视频
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| virtualmanId | string | 是 | 数字人ID |
| audioUrl | string | 否 | 音频URL,与text二选一 |
| text | string | 否 | 文本,与audioUrl二选一,选择文本则speakerId为必须 |
| speakerId | string | 否 | 音色ID,如果设置了text字段,音色ID必传 |
| speakerExtra | object | 否 | 音色扩展参数 |
| speedRatio | number | 否 | 语速,支持1位小数,范围0.5\~2,默认1 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "数字人口播视频",
"params": {
"virtualmanId": "68aebb91b8619ed6f4168f40",
"text": "你好,我是你的专属AI克隆声音",
"speakerId": "68aebb91b8619ed6f4168f40",
"speedRatio": 1,
}
}'
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
apiname: 数字人口播混剪视频
生成数字人混剪视频。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| styleId | string | 是 | 样式ID |
| virtualmanId | string | 是 | 数字人ID |
| audioUrl | string | 否 | 音频URL,与content二选一 |
| speakerId | string | 否 | 音色ID,使用content时必须 |
| content | string | 否 | 文本内容,与audioUrl二选一 |
| title | string | 否 | 视频标题 |
| materials | array | 否 | 素材列表 |
| materialSoundSwitch | boolean | 否 | 是否保留素材声音 |
| introduceCard | object | 否 | 介绍卡片 |
| packRules | object | 否 | 包装规则 |
| processRules | object | 否 | 处理规则 |
materials参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 素材类型:image、video |
| fileUrl | string | 是 | 素材文件URL |
introduceCard参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 姓名 |
| description | string | 否 | 描述 |
packRules参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| headerSwitch | boolean | 否 | 是否显示头部 |
| materialSwitch | boolean | 否 | 是否使用素材 |
| subtitleSwitch | boolean | 否 | 是否显示字幕 |
| keywordSwitch | boolean | 否 | 是否显示关键词 |
| backgroundMusic | object | 否 | 背景音乐配置 |
processRules参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| watermarkShow | boolean | 否 | 是否显示水印 |
| materialMatchWay | string | 否 | 素材匹配方式:fuzzyMatch(模糊匹配)preciseMatch(精确匹配,默认) |
| firstFrameCover | object | 否 | 第一封面配置 |
| firstFrameCover.coverSwitch | boolean | 否 | 是否显示第一一封面 |
| firstFrameCover.templateId | string | 否 | 模板ID |
| firstFrameCover.imageUrl | string | 否 | 图片URL |
subtitle参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| startMs | int | 是 | 开始时间(毫秒) |
| endMs | int | 是 | 结束时间(毫秒) |
| text | string | 是 | 字幕文本 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "数字人口播混剪视频",
"params": {
"styleId": "68aebb91b8619ed6f4168f40",
"virtualmanId": "68aebb91b8619ed6f4168f40",
"audioUrl": "https://golden-final.com/a.mp3",
"speakerId": "68aebb91b8619ed6f4168f40",
"speakerExtra": {
"speedRatio": 1,
"language": "zh-CN",
},
"content": "AI行业是一个充满机遇的行业",
"title": "聊AI行业",
"materials": [
{
"type": "image",
"fileUrl": "https://golden-final.com/a.jpg"
},
{
"type": "video",
"fileUrl": "https://golden-final.com/b.mp4"
}
],
"materialSoundSwitch": false,
"introduceCard": {
"name": "会长",
"description": "医美领军人物"
},
"packRules": {
"headerSwitch": true,
"materialSwitch": true,
"subtitleSwitch": true,
"keywordSwitch": true,
"backgroundMusic": {
"audioSwitch": true,
"audioUrl": "https://golden-final.com/bg.mp3",
"volume": 1
}
},
"processRules": {
"watermarkShow": true,
"materialMatchWay": "fuzzyMatch",
"firstFrameCover":{
"coverSwitch":true,
"templateId":"69b3ce905a79730032b9ed6e",
"imageUrl":"https://v.xyaip.fun/1776479830396_fnhvfgp3_1766718234389_ejqad1h2_啸岳_副本.jpg"
}
},
}
}'
````
#### 返回值
```json
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
apiname: 素材混剪视频
素材混剪生成视频。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| styleId | string | 是 | 样式ID |
| audioUrl | string | 否 | 音频URL,与content二选一 |
| speakerId | string | 否 | 音色ID,使用content时必须 |
| speakerExtra | object | 否 | 音色扩展参数 |
| content | string | 否 | 文本内容,与audioUrl二选一 |
| title | string | 否 | 视频标题 |
| materials | array | 否 | 素材列表 |
| introduceCard | object | 否 | 介绍卡片 |
| packRules | object | 否 | 包装规则 |
| processRules | object | 否 | 处理规则 |
speakerExtra参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| speedRatio | number | 否 | 语速,范围0.5~2,默认1 |
| language | string | 否 | 语种 |
materials参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 素材类型:image、video |
| fileUrl | string | 是 | 素材文件URL |
| soundSwitch | boolean | 否 | 是否保留素材声音 |
introduceCard参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 姓名 |
| description | string | 否 | 描述 |
packRules参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| headerSwitch | boolean | 否 | 是否显示头部 |
| materialSwitch | boolean | 否 | 是否使用素材 |
| subtitleSwitch | boolean | 否 | 是否显示字幕 |
| keywordSwitch | boolean | 否 | 是否显示关键词 |
| backgroundMusic | object | 否 | 背景音乐配置 |
processRules参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| watermarkShow | boolean | 否 | 是否显示水印 |
| firstFrameCover | object | 否 | 第一封面配置 |
| firstFrameCover.coverSwitch | boolean | 否 | 是否显示第一封面 |
| firstFrameCover.templateId | string | 否 | 第一封面模板ID |
| firstFrameCover.imageUrl | string | 否 | 第一封面图片URL |
| #### 请求示例 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "素材混剪视频",
"params": {
"styleId": "68aebb91b8619ed6f4168f40",
"audioUrl": "https://golden-final.com/a.mp3",
"speakerId": "68aebb91b8619ed6f4168f40",
"speakerExtra": {
"speedRatio": 1,
"language": "zh-CN",
},
"content": "AI行业是一个充满机遇的行业",
"title": "聊AI行业",
"materials": [
{
"type": "image",
"fileUrl": "https://golden-final.com/a.jpg",
"soundSwitch": false
},
{
"type": "video",
"fileUrl": "https://golden-final.com/b.mp4",
"soundSwitch": false
}
],
"introduceCard": {
"name": "会长",
"description": "医美领军人物"
},
"packRules": {
"headerSwitch": true,
"materialSwitch": true,
"subtitleSwitch": true,
"keywordSwitch": true,
"backgroundMusic": {
"audioSwitch": true,
"audioUrl": "https://golden-final.com/bg.mp3",
"volume": 1
}
},
"processRules": {
"watermarkShow": true,
"firstFrameCover":{
"coverSwitch":true,
"templateId":"69b3ce905a79730032b9ed6e",
"imageUrl":"https://v.xyaip.fun/1776479830396_fnhvfgp3_1766718234389_ejqad1h2_啸岳_副本.jpg"
}
},
"callbackUrl": "https://exotic-reservation.org/hook"
}
}'
````
#### 返回值
```json
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
apiname: 剪辑模板列表
获取剪辑模板列表(GET请求)。
Query参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageSize | int | 否 | 每页大小,默认10 |
| sid | string | 否 | 分页游标,当有值时代表存在下一页 |
| scene | enum | 是 | 模板使用场景 |
| sortBy | enum | 否 | 排序方式:desc(降序)、asc(升序),默认desc |
scene枚举值说明
| 值 | 说明 |
|---|---|
| virtualman | 数字人口播模板 |
| oralMixCutting | 素材混剪模板 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "剪辑模板列表",
"params": {
"pageSize": 10,
"scene": "virtualman",
"sortBy": "desc"
}
}'
{
"code": 0,
"message": "success",
"data": {
"results": [
{
"id": "string",
"name": "string",
"coverUrl": "string",
"scene": "virtualman",
"demoUrl": "string"
}
],
"sid": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.results | array | 模板列表 |
| data.results[].id | string | 模板ID |
| data.results[].name | string | 模板名称 |
| data.results[].coverUrl | string | 模板封面URL |
| data.results[].scene | string | 模板使用场景 |
| data.results[].demoUrl | string | 模板演示视频URL |
| data.sid | string | 分页游标,有值表示存在下一页 |
| message | string | 错误描述信息(失败时返回) |
apiname: 封面模板列表
获取封面模板列表(GET请求)。
Query参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageSize | int | 是 | 每页大小,默认10 |
| sid | string | 否 | 分页游标,当有值时代表存在下一页 |
| sortBy | enum | 是 | 排序方式:desc(降序)、asc(升序),默认desc |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "封面模板列表",
"params": {
"pageSize": 10,
"sortBy": "desc"
}
}'
{
"code": 0,
"message": "success",
"data": {
"results": [
{
"id": "string",
"name": "string",
"coverUrl": "string"
}
],
"sid": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.results | array | 模板列表 |
| data.results[].id | string | 模板ID |
| data.results[].name | string | 模板名称 |
| data.results[].coverUrl | string | 模板封面URL |
| data.sid | string | 分页游标,有值表示存在下一页 |
| message | string | 错误描述信息(失败时返回) |
apiname: 文本转语音
文本转换为语音。
Body参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | 文本内容 |
| speakerId | string | 是 | 通过声音克隆拿到的音色ID |
| language | string | 否 | 语种,默认zh-CN |
| speedRatio | float | 否 | 语速,保留1位小数,范围0.5\~2,默认1 |
| volume | float | 否 | 音量,保留1位小数,范围0.5\~2,默认1 |
| codec | enum | 否 | 音频编码格式,枚举值: mp3, wav,默认mp3 |
| returnSubtitle | boolean | 否 | 是否返回字幕信息 |
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{
"apiname": "文本转语音",
"params": {
"text": "你好,我是你的专属AI克隆声音,希望未来的日子一起好好相处哦!",
"speakerId": "68e8d31a49c3b000398828dc",
"language": "zh-CN",
"speedRatio": 1,
"volume": 1,
"codec": "mp3",
"returnSubtitle": true
}
}'
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"requestId": "string"
}
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | string | 请求状态,Succeed 表示成功,其他为失败 |
| data.taskId | string | 任务ID |
| message | string | 错误描述信息(失败时返回) |
| data.requestId | string | 本次请求唯一ID,用于排查问题 |
apiname: 查询任务详情
查询任务状态和结果(GET请求)。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskId | string | 是 | 任务ID |
{
"apiname": "查询任务详情",
"params": {
"taskId": "task_123456"
}
}
{
"code": 0,
"message": "success",
"data": {
"taskId": "string",
"status": "pending|processing|success|failed",
"progress": 0,
"result": {
"videoUrl": "string",
"coverUrl": "string",
"aiCoverSucceed": true,
"audioUrl": "string",
"imageUrl": "string",
"text": "string",
"subtitle": [
{
"text": "string",
"startMs": "string",
"endMs": "string"
}
],
"virtualmanId": "string",
"speakerId": "string",
"demoAudioUrl": "string",
"duration": 0
},
"errorMsg": "string",
"createTime": "string",
"updateTime": "string"
}
}
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| -1 | 缺少apiname参数 |
| -2 | 未知的API名称 |
| -3 | 请求失败 |
| -401 | 未授权 |
| -1001 | 缺少必需参数 |
| -1002 | 参数验证失败 |
| -999 | 系统异常 |
所有 /api 接口调用前需要进行权限验证,验证方式为在请求头中携带 X-App-Id 和 X-App-Secret。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| X-App-Id | string | 是 | 应用ID |
| X-App-Secret | string | 是 | 应用密钥 |
appid:
app_secret:
curl -X POST https://yxyx.xyaip.fun/api \
-H "X-App-Id: " \
-H "X-App-Secret: " \
-H "Content-Type: application/json" \
-d '{"apiname": "专业数字人克隆", "params": {...}}'
| 错误码 | 说明 |
|---|---|
| -402 | 缺少appid,请在请求头中携带X-App-Id |
| -403 | 无效的app密钥,请检查X-App-Secret |
/api 调用apiname 和 params 字段X-App-Id 和 X-App-SecretAuthorization,系统自动使用配置文件中的api_key