https://api.openmove.cn| 接口类型 | 鉴权方式 | 凭证 |
|---|---|---|
| 视频生成、视频任务查询 | Bearer Token | Open Move API Key |
| 素材、素材组、真人活体认证 | 火山 V4 签名或 Bearer Token | 令牌对应的 AK/SK,或 Open Move API Key |
Action 区分具体操作:https://api.openmove.cn/openapi/volcengine/?Action={Action}&Version=2024-01-01POST 和 JSON 请求体。需要兼容火山调用方式时使用 V4 签名;也可以直接发送 Authorization: Bearer sk-<Open Move API Key>,此时不需要 X-Date 和 X-Content-Sha256。V4 签名 固定参数如下:| 参数 | 值 |
|---|---|
| Region | cn-beijing |
| Service | ark |
| Version | 2024-01-01 |
| 请求头 | 必填 | 说明 |
|---|---|---|
Host | 是 | 固定为 api.openmove.cn |
Content-Type | 是 | application/json |
X-Date | 是 | UTC 时间,格式为 yyyyMMddTHHmmssZ,与服务端时间误差不得超过 15 分钟 |
X-Content-Sha256 | 是 | 实际发送请求体的 SHA256 小写十六进制哈希 |
Authorization | 是 | V4 签 名结果,格式见下方示例 |
签名必须使用最终实际发送的请求方法、路径、查询字符串、请求头和请求体计算。请求体完成签名后不可再次序列化或修改。
| 配置项 | 值 |
|---|---|
| 算法 | HMAC-SHA256 |
| Host | api.openmove.cn |
| Region | cn-beijing |
| Service | ark |
| API Version | 2024-01-01 |
| 请求方法 | 推荐 POST |
| Canonical URI | /openapi/volcengine/ |
| Signed Headers | host;x-content-sha256;x-date |
POST https://api.openmove.cn/openapi/volcengine/?Action=CreateAsset&Version=2024-01-01{
"GroupId": "group-20260727143000-aigc001",
"URL": "https://cdn.example.com/materials/city-night.jpg",
"AssetType": "Image",
"Name": "城市夜景参考图",
"ProjectName": "default"
}GroupId 为可选参数。未传时会自动创建或复用当前账号可用的素材组;需要将素材上传到指定素材组时再显式传入。PayloadHash = LowercaseHex(SHA256(RequestBodyUTF8Bytes))e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855YYYYMMDD'T'HHMMSS'Z'20260727 后续用于 Credential Scope。请求时间与服务端时间误差不得超过 15 分钟。%20,不能编码为 +。= 连接名称和值,使用 & 连接多个参数。Action=CreateAsset&Version=2024-01-01host:api.openmove.cn
x-content-sha256:<PayloadHash>
x-date:20260727T070000Zhost;x-content-sha256;x-dateContent-Type 必须随 POST 请求发送,但本指南不将其加入 Signed Headers。CanonicalRequest =
HTTPMethod + "\n" +
CanonicalURI + "\n" +
CanonicalQueryString + "\n" +
CanonicalHeaders + "\n" +
SignedHeaders + "\n" +
PayloadHashPOST
/openapi/volcengine/
Action=CreateAsset&Version=2024-01-01
host:api.openmove.cn
x-content-sha256:<PayloadHash>
x-date:20260727T070000Z
host;x-content-sha256;x-date
<PayloadHash>HashedCanonicalRequest = LowercaseHex(SHA256(UTF8(CanonicalRequest)))<YYYYMMDD>/cn-beijing/ark/request20260727/cn-beijing/ark/requestStringToSign =
"HMAC-SHA256" + "\n" +
XDate + "\n" +
CredentialScope + "\n" +
HashedCanonicalRequestHMAC-SHA256
20260727T070000Z
20260727/cn-beijing/ark/request
<HashedCanonicalRequest>kDate = HMAC-SHA256(UTF8(SecretAccessKey), "20260727")
kRegion = HMAC-SHA256(kDate, "cn-beijing")
kService = HMAC-SHA256(kRegion, "ark")
kSigning = HMAC-SHA256(kService, "request")
Signature = LowercaseHex(HMAC-SHA256(kSigning, StringToSign))Authorization =
"HMAC-SHA256 " +
"Credential=" + AccessKeyId + "/" + CredentialScope + ", " +
"SignedHeaders=host;x-content-sha256;x-date, " +
"Signature=" + Signaturerequests。它会完成 JSON 序列化、V4 签名并调用 CreateAsset:| 配置项 | 值 |
|---|---|
| Access Key ID | Open Move 令牌对应的 Access Key ID |
| Secret Access Key | Open Move 令牌对应的 Secret Access Key |
| Region | cn-beijing |
| Service | ark |
| Version | 2024-01-01 |
| Endpoint Host | api.openmove.cn |
| Endpoint Path | /openapi/volcengine/ |
/openapi/volcengine 直接拼进只接受域名的 host 配置项:| 语言 | 推荐方式 | 路径配置 |
|---|---|---|
| Go | volcengine-go-sdk Universal Client | Endpoint 设为 https://api.openmove.cn/openapi/volcengine |
| Python | volcengine SDK 的 SignerV4 | host 设为 api.openmove.cn,path 设为 /openapi/volcengine/ |
| Java | 标准 HTTP Client + 本文 V4 签名实现 | 当前 Universal SDK 将 Canonical URI 固定为 /,不能直接用于本接口路径 |
| Node.js | @volcengine/openapi 的 Signer | hostname 设为 api.openmove.cn,pathname 设为 /openapi/volcengine/ |
Action 和 input。例如查询素材使用 Action: "GetAsset" 和 input := map[string]any{"Id": assetID}。configuration.host 整体作为 Host 参与签名,因此不能把 /openapi/volcengine 拼入 configuration.host。下面使用火山官方 Python SDK 的 SignerV4,分别设置域名和路径。/,而 Open Move 要求签名路径为 /openapi/volcengine/,因此不能通过把路径拼入 setEndpoint 来适配。Java 项目应直接使用本文 1.3 节的标准 V4 算法。下面示例仅依赖 JDK 11+,可直接上传素材:Signer,显式指定 Open Move 的完整路径,再通过 Node.js 原生 HTTPS 客户端发送请求。{
"ResponseMetadata": {
"RequestId": "20260727150000ABCDEF1234567890",
"Action": "CreateAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing"
},
"Result": {}
}| 字段 | 类型 | 说明 |
|---|---|---|
ResponseMetadata.RequestId | string | 请求 ID,可用于问题排查 |
ResponseMetadata.Action | string | 本次执行的 Action |
ResponseMetadata.Version | string | API 版本 |
ResponseMetadata.Service | string | 固定为 ark |
ResponseMetadata.Region | string | 固定为 cn-beijing |
ResponseMetadata.Error | object | 失败时返回的错误信息 |
ResponseMetadata.Error.Code | string | 错误码 |
ResponseMetadata.Error.Message | string | 错误说明 |
Result | object | 接口成功结果,不同 Action 的字段不同 |
{
"ResponseMetadata": {
"RequestId": "20260727150000ABCDEF1234567890",
"Action": "GetAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing",
"Error": {
"Code": "ResourceNotFound",
"Message": "the requested resource was not found"
}
}
}ResponseMetadata.Error。Action 指定操作:POST https://api.openmove.cn/openapi/volcengine/?Action={Action}&Version=2024-01-01| Action | 用途 | 必填参数 | 可选参数 | Result |
|---|---|---|---|---|
CreateAssetGroup | 创建素材组 | Name | Description、GroupType、ProjectName | Id |
ListAssetGroups | 分页查询素材组 | 无 | Filter、PageNumber、PageSize、SortBy、SortOrder、ProjectName | Items、TotalCount、PageNumber、PageSize |
GetAssetGroup | 查询单个素材组 | Id | ProjectName | Id、Name、Description、GroupType、ProjectName、CreateTime、UpdateTime |
UpdateAssetGroup | 更新素材组 | Id | Name、Description、ProjectName | Id |
DeleteAssetGroup | 删除素材组 | Id | ProjectName | 空对象 |
ListAssetGroups.Filter 支持 Name、GroupIds 和 GroupType。分页、排序和返回字段的详细说明见第 5.1 节。| Action | 用途 | 必填参数 | 可选参数 | Result |
|---|---|---|---|---|
CreateAsset | 导入素材 | URL、AssetType | GroupId、Name、ProjectName | Id |
ListAssets | 分页查询素材 | 无 | Filter、PageNumber、PageSize、SortBy、SortOrder、ProjectName | Items、TotalCount、PageNumber、PageSize |
GetAsset | 查询单个素材 | Id | ProjectName | Id、Name、GroupId、AssetType、Status、URL、ProjectName、CreateTime、UpdateTime |
UpdateAsset | 更新素材 | Id | Name、ProjectName | Id |
DeleteAsset | 删除素材 | Id | ProjectName | 空对象 |
CreateAsset 未传 GroupId 时会自动创建或复用素材组。ListAssets.Filter 支持 Name、GroupIds、GroupType 和 Statuses,详细说明见第 5.2 节。| Action | 用途 | 必填参数 | 可选参数 | Result |
|---|---|---|---|---|
CreateVisualValidateSession | 创建真人认证会话 | CallbackURL | ProjectName | BytedToken、H5Link、CallbackURL |
GetVisualValidateResult | 查询真人认证结果 | BytedToken | ProjectName | GroupId |
call_openmove 函数,覆盖全部 12 个 Action:GroupId,接口会自动创建或复用当前账号可用的素材组;需要上传到指定素材组时再传入对应的 GroupId。ProjectName 使用默认值 default,后续查询和删除素材时可以不传该字段。multipart/form-data 直接上传文件。URL 必须是火山服务端可以直接访问的公网 URL:无需登录、Cookie 或额外鉴权请求头即可下载;若使用带签名的临时 URL,其有效期必须覆盖素材下载和处理时间。素材处理是异步的,接口返回素材 ID 后必须继续查询处理状态。https://api.openmove.cn/openapi/volcengine/?Action=CreateAsset&Version=2024-01-01POST| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
URL | string | 是 | 火山服务端可直接访问的素材公网 URL |
AssetType | string | 是 | 素材类型:Image、Video 或 Audio |
Name | string | 否 | 素材名称;未提供或仅包含空白字符时自动生成不重复的默认名称 |
GroupId | string | 否 | 目标素材组 ID;省略时自动创建或 复用素材组 |
ProjectName | string | 否 | 项目名称,默认值为 default |
{
"URL": "https://cdn.example.com/materials/city-night.jpg",
"AssetType": "Image",
"Name": "城市夜景参考图",
"ProjectName": "default"
}Result 包含:| 字段 | 类型 | 说明 |
|---|---|---|
Result.Id | string | 素材 ID,后续查询素材和生成视频时使用 |
{
"ResponseMetadata": {
"RequestId": "20260727150001ABCDEF1234567890",
"Action": "CreateAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing"
},
"Result": {
"Id": "asset-20260727150001-a1b2c3"
}
}Result.Id。https://api.openmove.cn/openapi/volcengine/?Action=GetAsset&Version=2024-01-01POST| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
Id | string | 是 | CreateAsset 返回的素材 ID |
{
"Id": "asset-20260727150001-a1b2c3"
}Result 字段如下:| 字段 | 类型 | 说明 |
|---|---|---|
Id | string | 素材 ID |
Name | string | 素材名称 |
GroupId | string | 素材所属的素材组 ID |
AssetType | string | Image、Video 或 Audio |
Status | string | 素材处理状态 |
URL | string | 处理后的临时素材地址;可能带签名并具有有效期 |
ProjectName | string | 默认值为 default |
CreateTime | string | 创建时间 |
UpdateTime | string | 更新时间 |
| 状态 | 含义 | 后续操作 |
|---|---|---|
Processing | 正在处理 | 继续轮询 |
Active、Ready、READY | 处理成功,素材可用 | 停止轮询并创建视频任务 |
Failed | 处理失败 | 停止轮询,检查素材 URL、格式或响应错误信息 |
{
"ResponseMetadata": {
"RequestId": "20260727150006ABCDEF1234567890",
"Action": "GetAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing"
},
"Result": {
"Id": "asset-20260727150001-a1b2c3",
"Name": "城市夜景参考图",
"GroupId": "group-20260727143000-aigc001",
"AssetType": "Image",
"Status": "Processing",
"ProjectName": "default"
}
}{
"ResponseMetadata": {
"RequestId": "20260727150016ABCDEF1234567890",
"Action": "GetAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing"
},
"Result": {
"Id": "asset-20260727150001-a1b2c3",
"Name": "城市夜景参考图",
"GroupId": "group-20260727143000-aigc001",
"AssetType": "Image",
"Status": "Active",
"URL": "https://ark-media.example.com/assets/a1b2c3?signature=...",
"ProjectName": "default",
"CreateTime": "2026-07-27T15:00:01+08:00",
"UpdateTime": "2026-07-27T15:00:16+08:00"
}
}content 中使用 asset://{素材 ID} 引用素材。图片、视频和音频素材应分别放在 image_url、video_url 和 audio_url 字段中。seedance-2.0、seedance-2.0-mini、seedance-2.0-fast、seedance-2.5。请求时将其中一个 ID 填入 model;具体可用模型以当前令牌和渠道配置为准。https://api.openmove.cn/api/v3/contents/generations/tasksPOST| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <OPEN_MOVE_API_KEY> |
Content-Type | 是 | application/json |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 上述四个 Seedance 模型 ID 之一;以当前令牌和渠道可用模型为准 |
content | array | 与 prompt 二选一 | 文本和素材输入数组 |
content[].type | string | 是 | text、image_url、video_url、audio_url;Seedance 2.5 草稿续作还可使用 draft_task |
content[].text | string | 条件必填 | type=text 时填写提示词 |
content[].image_url.url | string | 条件必填 | 图片 URL 或 asset://{图片素材 ID} |
content[].video_url.url | string | 条件必填 | 视频 URL 或 asset://{视频素材 ID} |
content[].audio_url.url | string | 条件必填 | 音频 URL 或 asset://{音频素材 ID} |
content[].draft_task.id | string | 条件必填 | type=draft_task 时填写本平台返回的草稿任务 id |
content[].role | string | 否 | first_frame、last_frame、reference_image、reference_video 或 reference_audio |
prompt | string | 否 | 简写提示词;与 content 二选一 |
images | string[] | 否 | 与 prompt 搭配使用的图片 URL 或 asset:// 引用数组 |
resolution | string | 否 | 例如 480p、720p、1080p |
ratio | string | 否 | 例如 16:9、9:16、1:1、adaptive |
duration | integer | 否 | 视频时长,单位为秒;支持范围由模型决定 |
frames | integer | 否 | 视频总帧数;通常与 duration 二选一 |
seed | integer | 否 | 随机种子;-1 通常表示随机 |
camera_fixed | boolean | 否 | 是否固定镜头 |
watermark | boolean | 否 | 是否添加水印 |
generate_audio | boolean | 否 | 是否生成音频 |
return_last_frame | boolean | 否 | 是否在结果中返回尾帧图片 |
draft | boolean | 否 | Seedance 2.5 设置为 true 时创建草稿任务;草稿续作流程见下文 |
service_tier | string | 否 | 服务等级,例如 default |
execution_expires_after | integer | 否 | 任务执行超时时间,单位为秒 |
callback_url | string | 否 | 任务状态回调地址 |
tools | array | 否 | 模型支持的扩展工具配置 |
{
"model": "seedance-2.0",
"content": [
{
"type": "image_url",
"image_url": {
"url": "asset://asset-20260727150001-a1b2c3"
},
"role": "reference_image"
},
{
"type": "text",
"text": "夜晚的城市街道逐渐被霓虹灯点亮,镜头平稳向前推进,电影感光影"
}
],
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"watermark": false
}| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 视频生成任务 ID,用于查询任务状态 |
{
"id": "cgt-20260727150100-video123"
}id。该接口为异步接口,返回任务 ID 不代表视频已经生成完成。status 为 succeeded 或 failed。https://api.openmove.cn/api/v3/contents/generations/tasks/{task_id}GET| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <OPEN_MOVE_API_KEY> |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
task_id | string | 是 | 创建视频任务时返回的 id |
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务 ID |
model | string | 实际使用的模型 ID |
status | string | queued、running、succeeded 或 failed |
content.video_url | string | 成功时返回的视频临时下载地址 |
content.last_frame_url | string | 请求返回尾帧时可能出现的尾帧图片地址 |
draft | boolean | 可选;创建草稿任务时为 true |
draft_task_id | string | 可选;上游返回的草稿关联 ID。续作请求请使用草稿创建响应中的平台任务 id |
usage.completion_tokens | integer | 生成消耗的 token 数 |
usage.total_tokens | integer | 总 token 数 |
error.code | string | 失败时的错误码 |
error.message | string | 失败原因 |
created_at | integer | 创建时间,Unix 秒 |
updated_at | integer | 更新时间,Unix 秒 |
{
"id": "cgt-20260727150100-video123",
"model": "seedance-2.0",
"status": "running",
"created_at": 1785135660,
"updated_at": 1785135680
}{
"id": "cgt-20260727150100-video123",
"model": "seedance-2.0",
"status": "succeeded",
"content": {
"video_url": "https://ark-content.example.com/videos/video123.mp4?signature=..."
},
"usage": {
"completion_tokens": 135680,
"total_tokens": 135680
},
"created_at": 1785135660,
"updated_at": 1785135740
}{
"id": "cgt-20260727150100-video123",
"model": "seedance-2.0",
"status": "failed",
"error": {
"code": "generation_failed",
"message": "video generation failed"
},
"created_at": 1785135660,
"updated_at": 1785135700
}video_url通常是带签名的临时地址,请在有效期内下载并转存。
POST /api/v3/contents/generations/tasks,查询均使用 GET /api/v3/contents/generations/tasks/{task_id},请求头与步骤三、四相同。model: "seedance-2.5",并设置 draft: true。其余提示词、素材和时长按普通视频任务传入。例如:{
"model": "seedance-2.5",
"content": [
{ "type": "text", "text": "雨后的城市街道,镜头缓慢向前推进" }
],
"duration": 5,
"draft": true
}{"id":"cgt-draft-example"}。保存这个平台任务 ID。id 按步骤四轮询,直到 status 为 succeeded 或 failed。成功时可查看返回的 content.video_url(如果上游提供);响应中的 draft 可标识草稿任务。content 中加入 type: "draft_task",将步骤一返回的 id 填入 draft_task.id。可在这一步 设置正式视频的 resolution,并按需传入 duration 等参数。例如:{
"model": "seedance-2.5",
"content": [
{ "type": "draft_task", "draft_task": { "id": "cgt-draft-example" } }
],
"resolution": "1080p",
"duration": 5
}id;按步骤四查询新任务,取得正式视频地址。draft_task.id 应填写草稿创建响应中的平台任务 ID,而不是本次正式任务的 ID。duration。https://api.openmove.cn/api/v3/contents/generations/tasks/{task_id}DELETE| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <OPEN_MOVE_API_KEY> |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
task_id | string | 是 | 创建视频任务时返回的 id;只能操作当前 API Key 创建的任务 |
HTTP 204 No Content,响应体为空。对已经成功删除的同一任务重复调用时仍返回 204。| HTTP 状态码 | 错误码 | 说明 |
|---|---|---|
400 | task_deletion_unsupported | 当前任务所在渠道未启用或不支持任务删除能力 |
404 | task_not_exist | 任务不存在,或不属于当前 API Key |
409 | task_deletion_in_progress | 同一任务已有删除请求正在处理 |
409 | task_deletion_unconfirmed | 上游未能确认任务已取消或删除 |
上游状态码或 502 | delete_upstream_task_failed | 请求上游取消或删除任务失败 |
上游状态码或 502 | confirm_upstream_task_deletion_failed | 查询并确认上游删除结果失败 |
建议仅取消或删除当前调用方明确不再需要的任务。不要通过任务列表选择并删除不确定归属的任务。
https://api.openmove.cn/openapi/volcengine/?Action=DeleteAsset&Version=2024-01-01POST| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
Id | string | 是 | 要删除的素材 ID |
{
"Id": "asset-20260727150001-a1b2c3"
}ResponseMetadata,不返回 Result。| 字段 | 类型 | 说明 |
|---|---|---|
ResponseMetadata | object | 删除请求已处理;子字段含义见第 1.5 节 |
{
"ResponseMetadata": {
"RequestId": "20260727150500ABCDEF1234567890",
"Action": "DeleteAsset",
"Version": "2024-01-01",
"Service": "ark",
"Region": "cn-beijing"
}
}CreateAssetGroup 只能创建普通 AIGC 素材组,不能代替真人认证。真人素材组只能由活体认证成功后返回。BytedToken,并让当前被认证用户在浏览器中打 开 H5Link。https://api.openmove.cn/openapi/volcengine/?Action=CreateVisualValidateSession&Version=2024-01-01POST