IGVS 接口文档
基于当前项目源码生成。API 前缀:
/v1/igvs。
目录
通用说明
基础 URL
{server-host}/v1/igvs统一响应格式
| 字段 | 类型 | 说明 |
|---|---|---|
code |
int | HTTP 层状态码。业务成功时为 200;系统异常时为 500 |
errorCode |
int | 业务错误码,0 表示成功 |
errorMessage |
string | 错误描述,成功时为空字符串 |
data |
any | 业务数据 |
成功示例:
{
"code": 200,
"errorCode": 0,
"errorMessage": "",
"data": {}
}
业务失败示例(未登录):
{
"code": 200,
"errorCode": 1,
"errorMessage": "未登录",
"data": ""
}
系统异常示例:
{
"code": 500,
"errorCode": 0,
"errorMessage": "积分不足",
"data": ""
}
常见 errorCode
| errorCode | 说明 |
|---|---|
0 |
成功 |
1 |
未登录 / 鉴权失败 |
2 |
参数错误 |
3 |
数据库错误 |
4 |
接口不存在 |
鉴权
需登录接口须在 Header 或 Query 中携带 token:
Header: token: {登录 token}
Query: ?token={登录 token}服务端通过 B 网关 /v1/Passport/Index/getLoginInfo 校验登录态。
账号权限
- 主账号(
account > 0):可查看该uin下所有子账号的任务和主体 - 子账号:仅可查看
userId与自身accountId匹配的数据
积分说明
- 创建任务、创建主体会先校验积分余额并 预扣积分
- 任务失败时通过内部回调 自动返还积分
- 创建主体失败时也会 自动返还积分
公共接口
1. 获取模型列表
GET /getModelList
鉴权: 否
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
string | 是 | 任务类型,见 任务类型 |
响应 data
数组,每项字段如下:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
string | 模型记录 ID |
model |
string | 模型展示名称,创建任务时传入 input.model |
icon |
string | 模型图标 URL |
described |
string | 模型描述 |
materialLimit |
int | 素材数量上限 |
supportVideoSubject |
bool | 是否支持视频主体 |
duration |
int[] | 支持的时长(秒),如 [4, 8] |
aspectRatio |
string[] | 支持的宽高比,如 ["16:9", "9:16"] |
resolution |
string[] | 支持的分辨率,如 ["720p", "1080p"] |
type |
string | 适用的任务类型 |
mode |
object[] | 子模式列表 |
exampleVideo |
string | 示例视频 URL |
mode 子项:
| 字段 | 类型 | 说明 |
|---|---|---|
title |
string | 模式名称,创建任务时传入 input.mode |
described |
string | 模式描述 |
服务端根据
input.model(展示名)和可选的input.mode映射为第三方 Vidu 实际模型名。
2. 获取音色列表
GET /getVoiceList
鉴权: 否
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
language |
string | 否 | 语言筛选 |
keyword |
string | 否 | 关键词,匹配音色名称或 voiceId |
响应 data
按语言分组的数组:
| 字段 | 类型 | 说明 |
|---|---|---|
language |
string | 语言代码 |
list |
array | 该语言下的音色列表 |
list 每项:
| 字段 | 类型 | 说明 |
|---|---|---|
voiceId |
string | 音色 ID |
title |
string | 音色名称 |
sampleUrl |
string | 试听音频 URL |
3. 计算价格(积分)
POST /computePrice
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
string | 是 | 任务类型;创建主体传 subject |
input |
Input | 是 | 生成参数 |
响应 data
| 类型 | 说明 |
|---|---|
| int | 本次操作消耗的积分数量 |
定价规则摘要:
| 场景 | 规则 |
|---|---|
图片模型 viduimage-2 |
按 resolution-aspectRatio-quality 查 per |
模型 viduq2 + reference2image |
参考图 > 3 张用 per2,否则 per |
创建主体 subject |
固定 per 单价 |
| 视频类 | 首段 first + 次段 second + 剩余时长 × per(错峰用 offPeakPer) |
视频增强 upscaleVideo |
按源视频时长和 upscale_resolution 计费;增强分辨率不能低于原视频 |
视频延长 extend |
按源视频分辨率和时长计费 |
4. 查询 Vidu 平台积分
GET /getCredits
鉴权: 是
请求参数
无
响应 data
| 字段 | 类型 | 说明 |
|---|---|---|
Flag |
int | 内部标志,100 表示成功 |
FlagString |
string | 状态描述 |
Data |
object | 含 result,值为 Vidu /ent/v2/credits 原始响应 |
主体(Subject)接口
主体用于「参考生视频」「参考生图」等场景,可绑定图片/视频素材、音色及标签。
5. 获取系统主体列表
GET /subject/getSystemList
鉴权: 否
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
count |
int | 否 | 每页数量,默认 1 |
next_page_token |
string | 否 | 分页游标 |
响应 data
| 字段 | 类型 | 说明 |
|---|---|---|
Flag |
int | 内部标志 |
FlagString |
string | 状态描述 |
Data |
object | 含 result,值为 Vidu 系统主体列表原始数据 |
6. 创建个人主体
POST /subject/create
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 建议 | 主体名称 |
images |
string[] | 否 | 参考图片 URL 列表 |
videos |
string[] | 否 | 参考视频 URL 列表(有视频时类型记为 video) |
voice_id |
string | 否 | 绑定音色 ID |
style |
string | 否 | 风格标识 |
description |
string | 否 | 主体描述 |
tagId |
int | 否 | 标签 ID,0 或不传表示不绑定 |
响应 data
返回创建后的主体对象,主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
ID |
int | 本地主体 ID |
TaskID |
string | Vidu 侧主体 ID |
Name |
string | 主体名称 |
Type |
string | image 或 video |
TagId |
int | 绑定的标签 ID |
Style |
string | 风格(以 Vidu 返回为准) |
Description |
string | 描述(以 Vidu 返回为准) |
业务说明:
- 创建前按
subject类型计算并 预扣积分 - Vidu 创建失败时 自动返还积分
tagId须为当前uin下有效标签
7. 获取个人主体列表
GET /subject/getPersonalList
鉴权: 是
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
int | 否 | 页码,默认 1 |
num |
int | 否 | 每页条数,默认 1 |
type |
string | 否 | 主体类型筛选:image / video |
status |
string | 否 | 当前未参与筛选(预留) |
tagId |
int | 否 | 按标签 ID 精确筛选 |
响应 data
{
"list": [],
"total": 0
}
list 每项:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 主体 ID |
taskId |
string | Vidu 侧主体 ID |
name |
string | 主体名称 |
images |
string[] | 图片 URL 列表 |
videos |
string[] | 视频 URL 列表 |
voiceId |
string | 音色 ID |
style |
string | 风格 |
description |
string | 描述 |
type |
string | image 或 video |
tagId |
int | 标签 ID,0 表示未绑定 |
8. 更新个人主体
POST /subject/update
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
int | 是 | 主体 ID |
name |
string | 否 | 主体名称 |
images |
string[] | 否 | 图片 URL 列表 |
videos |
string[] | 否 | 视频 URL 列表 |
voice_id |
string | 否 | 音色 ID |
style |
string | 否 | 风格 |
description |
string | 否 | 描述 |
tagId |
int | 否 | 标签 ID,传 0 清除标签 |
响应 data
更新后的主体 ID(int)。
本地数据库立即更新;Vidu 侧更新为异步执行。
9. 删除个人主体
POST /subject/delete
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
int | 是 | 主体 ID |
响应 data
字符串 "删除成功"。
标签(Tag)接口
标签按 uin 隔离,每个主体最多绑定一个标签(tagId 字段)。
10. 创建标签
POST /subject/tag/create
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 是 | 标签名称,最长 32 字符,同 uin 下不可重复 |
响应 data
{ "id": 1 }
11. 删除标签
POST /subject/tag/delete
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
int | 是 | 标签 ID |
响应 data
字符串 "删除成功"。
删除后,关联主体的
tagId自动置为0。
12. 获取标签列表
GET /subject/tag/getList
鉴权: 是
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
int | 否 | 页码,默认 1 |
num |
int | 否 | 每页条数,默认 20 |
响应 data
{
"list": [
{ "id": 1, "name": "人物" },
{ "id": 2, "name": "场景" }
],
"total": 2
}
| 字段 | 说明 |
|---|---|
id |
标签 ID,用于主体 tagId 及列表筛选 |
name |
标签名称 |
任务(Task)接口
任务类型 (type)
| 值 | 中文名 | 对应接口 |
|---|---|---|
reference2video |
参考生视频 | /task/createReferenceToVideo |
text2video |
文生视频 | /task/createTextToVideo |
img2video |
图生视频(单图) | /task/createImageToVideo |
headtailimg2video |
首尾帧生视频(双图) | /task/createImageToVideo |
reference2image |
参考生图 | /task/createReferenceToImage |
text2image |
文生图 | /task/createTextToImage |
upscaleVideo |
视频增强 | /task/upscaleVideo |
extend |
视频延长 | /task/extend |
subject |
创建主体 | /subject/create(计价用) |
任务状态 (state)
| 值 | 说明 |
|---|---|
created |
已创建 |
queueing |
排队中 |
processing |
生成中 |
success |
成功 |
failed |
失败(积分自动返还) |
通用生成参数校验(checkParam)
以下接口统一校验 input:
model— 模型展示名称prompt— 提示词aspect_ratio— 宽高比resolution— 分辨率
适用:参考生视频、文生视频、图生视频、参考生图、文生图。
批量生成
| 规则 | 说明 |
|---|---|
num |
默认 1,最大 4 |
| 积分 | 每个成品独立扣费 |
13. 参考生视频
POST /task/createReferenceToVideo
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input |
Input | 是 | subjects 不能为空 |
响应 data
14. 文生视频
POST /task/createTextToVideo
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input |
Input | 是 | 满足通用校验 |
响应 data
15. 图生视频
POST /task/createImageToVideo
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input |
Input | 是 | 满足通用校验 |
路由逻辑:
input.images 数量 |
实际任务类型 |
|---|---|
| 1 张 | img2video |
| 2 张 | headtailimg2video |
| > 2 张 | 报错 |
响应 data
16. 参考生图
POST /task/createReferenceToImage
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input |
Input | 是 | subjects 不能为空 |
服务端将每个主体
subjects[i].images[0]提取到images后调用 Vidu。
响应 data
17. 文生图
POST /task/createTextToImage
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input |
Input | 是 | 满足通用校验 |
响应 data
18. 视频增强(超分)
POST /task/upscaleVideo
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input.video_url |
string | 二选一 | 待增强视频 URL(平台媒资库地址) |
input.creation_id |
int | 二选一 | 已有成品 ID |
input.upscale_resolution |
string | 是 | 目标分辨率,如 1080p、2K、4K |
校验:
video_url与creation_id至少填一个- 增强分辨率不能低于原视频分辨率
响应 data
19. 视频延长
POST /task/extend
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
int | 否 | 批量数量 |
input.model |
string | 是 | 模型展示名称 |
input.video_url |
string | 二选一 | 待延长视频 URL |
input.creation_id |
int | 二选一 | 已有成品 ID |
input.duration |
int | 是 | 延长时长(秒),须 > 0 |
input.prompt |
string | 否 | 延长片段提示词 |
input.images |
string[] | 否 | 参考图片 |
input.mode |
string | 否 | 子模式名称 |
响应 data
20. 取消任务
POST /task/cancel
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
int | 是 | 成品 ID(ViduCreation.id),非任务 ID |
响应 data
字符串 "取消成功"。
状态变更依赖后续异步回调更新。
21. 获取任务列表
GET /task/getList
鉴权: 是
Query 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
int | 否 | 页码,默认 1 |
num |
int | 否 | 每页条数,默认 1 |
type |
string | 否 | 任务类型筛选 |
status |
string | 否 | 任务状态筛选(对应 state) |
响应 data
{
"list": [],
"total": 0
}
list 为 TaskInfo 数组。
22. 删除任务(软删)
POST /task/delete
鉴权: 是
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
int | 是 | 成品 ID(ViduCreation.id) |
逻辑: 软删除指定成品;若该任务下所有成品均已删除,则同时软删除任务。
响应 data
字符串 "删除成功"。
公共数据结构
TaskRequest
| 字段 | 类型 | 说明 |
|---|---|---|
num |
int | 批量数量,默认 1,最大 4 |
input |
Input | 任务输入参数 |
Input 对象
| 字段 | 类型 | 说明 |
|---|---|---|
model |
string | 模型展示名称(来自模型列表 model 字段) |
prompt |
string | 生成提示词 |
resolution |
string | 输出分辨率,如 720p、1080p |
aspect_ratio |
string | 宽高比,如 16:9、9:16 |
mode |
string | 子模式名称(来自 mode[].title) |
images |
string[] | 参考图片 URL |
videos |
string[] | 参考视频 URL |
subjects |
SubjectItem[] | 主体列表(参考生视频/图) |
movement_amplitude |
string | 运动幅度:auto / small / medium / large |
quality |
string | 图片质量:low / medium / high |
duration |
int | 视频时长(秒);延长任务表示延长秒数 |
style |
string | 生成风格 |
bgm |
bool | 是否生成背景音乐 |
audio |
bool | 是否生成配音/音效 |
off_peak |
bool | 错峰模式(影响积分价格) |
video_url |
string | 视频 URL(增强/延长,媒资库地址) |
creation_id |
int | 成品 ID(增强/延长引用已有成品) |
upscale_resolution |
string | 增强目标分辨率 |
callback_url |
string | 服务端自动注入,无需传入 |
payload |
string | 服务端自动注入,无需传入 |
watermark |
bool | 服务端强制 true |
SubjectItem(input.subjects 元素)
| 字段 | 类型 | 说明 |
|---|---|---|
name |
string | 主体名称 |
images |
string[] | 主体图片 URL |
videos |
string[] | 主体视频 URL |
voice_id |
string | 音色 ID |
style |
string | 风格 |
server_id |
string | 已有主体 ID(引用系统/个人主体) |
SubjectRequest
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 主体 ID(更新时必填) |
name |
string | 主体名称 |
images |
string[] | 图片 URL |
videos |
string[] | 视频 URL |
voice_id |
string | 音色 ID |
style |
string | 风格 |
description |
string | 描述 |
tagId |
int | 标签 ID,0 表示不绑定/清除 |
TaskInfo 对象
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 本地任务 ID |
type |
string | 任务类型 |
state |
string | 任务整体状态 |
progress |
int | 进度 |
credits |
int | 积分 |
input |
Input | 创建时的输入参数 |
creations |
ViduCreation[] | 成品列表 |
createTime |
int64 | 创建时间(Unix 时间戳) |
updateTime |
int64 | 更新时间(Unix 时间戳) |
ViduCreation 对象(成品)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 成品 ID;取消/删除时使用此 ID |
tId |
int | 关联的本地任务 ID |
taskId |
string | Vidu 侧任务 ID |
coverUrl |
string | 封面图 URL |
url |
string | 成品 URL |
credits |
int | 消耗积分;失败返还后为 0 |
progress |
int | 进度 0–100 |
state |
string | 成品状态 |
recordId |
int | 积分消费记录 ID |
createTime |
int64 | 创建时间 |
updateTime |
int64 | 更新时间 |
附录
接口一览(22 个对外接口)
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
| GET | /v1/igvs/getModelList |
否 | 模型列表 |
| GET | /v1/igvs/getVoiceList |
否 | 音色列表 |
| POST | /v1/igvs/computePrice |
是 | 计算积分 |
| GET | /v1/igvs/getCredits |
是 | Vidu 平台积分 |
| GET | /v1/igvs/subject/getSystemList |
否 | 系统主体 |
| POST | /v1/igvs/subject/create |
是 | 创建主体 |
| GET | /v1/igvs/subject/getPersonalList |
是 | 个人主体列表 |
| POST | /v1/igvs/subject/update |
是 | 更新主体 |
| POST | /v1/igvs/subject/delete |
是 | 删除主体 |
| POST | /v1/igvs/subject/tag/create |
是 | 创建标签 |
| POST | /v1/igvs/subject/tag/delete |
是 | 删除标签 |
| GET | /v1/igvs/subject/tag/getList |
是 | 标签列表 |
| POST | /v1/igvs/task/createReferenceToVideo |
是 | 参考生视频 |
| POST | /v1/igvs/task/createTextToVideo |
是 | 文生视频 |
| POST | /v1/igvs/task/createImageToVideo |
是 | 图生视频 |
| POST | /v1/igvs/task/createReferenceToImage |
是 | 参考生图 |
| POST | /v1/igvs/task/createTextToImage |
是 | 文生图 |
| POST | /v1/igvs/task/upscaleVideo |
是 | 视频增强 |
| POST | /v1/igvs/task/extend |
是 | 视频延长 |
| POST | /v1/igvs/task/cancel |
是 | 取消任务 |
| GET | /v1/igvs/task/getList |
是 | 任务列表 |
| POST | /v1/igvs/task/delete |
是 | 删除任务 |
分辨率等级对照
| 值 | 像素高度 |
|---|---|
360p |
360 |
720p |
720 |
1080p |
1080 |
2K |
2048 |
4K |
3840 |
请求示例
文生视频
POST /v1/igvs/task/createTextToVideo
Content-Type: application/json
token: your-login-token
{
"num": 1,
"input": {
"model": "Vidu 1.5",
"mode": "标准模式",
"prompt": "一只猫在草地上奔跑",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 4
}
}
创建主体(带标签)
POST /v1/igvs/subject/create
Content-Type: application/json
token: your-login-token
{
"name": "角色A",
"images": ["https://example.com/character.jpg"],
"voice_id": "voice_xxx",
"tagId": 1
}
按标签筛选主体
GET /v1/igvs/subject/getPersonalList?tagId=1&page=1&num=10
token: your-login-token
视频增强
POST /v1/igvs/task/upscaleVideo
Content-Type: application/json
token: your-login-token
{
"input": {
"creation_id": 42,
"upscale_resolution": "1080p"
}
}