文档
对话模型兼容 OpenAI Chat Completions;视频生成兼容 Volcengine Ark / Doubao Seedance。SDK 一行换 base_url 即可接入。
官方 volcenginesdkarkruntime Python SDK 只需把 Ark(base_url=...) 指向https://www.aiapigo.com/api/v3, api_key 改成你的 sk-ai-***, 请求 / 响应字段按 Volcengine Ark 兼容格式返回;视频下载地址按任务加密配置返回上游明文 TOS URL 或平台签名代理 URL。
遇到 input_image_privacy_information 时先走素材认证
如果外部参考图包含清晰真人主体、真人肖像或可能涉及隐私信息,直接传 URL 创建视频任务可能被拦截。请先在素材管理中完成真人 H5 认证, 再把认证后的素材入库,视频生成时使用 asset://asset_id。
- 1. 用平台 APIKey 签发素材 AK/SK,调用
CreateVisualValidateSession - 2. 用户完成 H5 认证,调用
GetVisualValidateResult获取 GroupId - 3. 调用
CreateAsset入库,等Status=Active后用于生成
# pip install volcengine-python-sdk[ark]
from volcenginesdkarkruntime import Ark
import time
client = Ark(
api_key="sk-ai-***",
base_url="https://www.aiapigo.com/api/v3", # ← 唯一改动
)
# 1) 提交生成任务
create_result = client.content_generation.tasks.create(
model="doubao-seedance-2.0",
content=[
{"type": "text", "text": "a cat surfing on a wave at sunset"},
# 可选: 参考图 / 参考视频 / 参考音频
# {"type": "image_url", "image_url": {"url": "https://.../ref.jpg"}, "role": "reference_image"},
],
generate_audio=True,
resolution="1080p",
ratio="16:9",
duration=5,
watermark=False,
)
task_id = create_result.id
print(f"任务 ID: {task_id}")
# 2) 轮询任务状态
while True:
r = client.content_generation.tasks.get(task_id=task_id)
if r.status == "succeeded":
print("视频 URL:", r.content.video_url)
break
elif r.status == "failed":
print("失败:", r.error)
break
print(f"当前状态: {r.status},30 秒后再试…")
time.sleep(30)支持的端点
- POST
/api/v3/contents/generations/tasks创建视频生成任务,立即返回 task ID(异步生成) - GET
/api/v3/contents/generations/tasks/{id}查询单个任务(含 status / content.video_url / usage 等) - GET
/api/v3/contents/generations/tasks查询任务列表(page_num / page_size + filter.* 过滤) - DELETE
/api/v3/contents/generations/tasks/{id}删除 / 取消任务
接口详情(请求参数与响应)
视频生成接口是异步任务协议:POST 创建任务,GET 轮询状态,成功后从content.video_url下载 mp4。查询和列表响应会尽量按官方字段透出,同时保留本平台任务 ID。
创建视频生成任务 /api/v3/contents/generations/tasks
提交异步生成任务,立即返回本平台任务 ID。后续用该 ID 查询状态或取消任务。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | String | 是 | 模型 ID,例如 doubao-seedance-2.0。 |
| content | Array<Object> | 是 | 提示词与参考素材数组,至少包含一项 type=text。素材库素材推荐使用 asset://asset_id 作为 image_url.url / video_url.url。 |
| resolution | String | 否 | 480p / 720p / 1080p。 |
| duration | Integer | 否 | 视频时长,单位秒。 |
| ratio | String | 否 | 宽高比,如 16:9 / 9:16 / 1:1。 |
| generate_audio | Boolean | 否 | 是否生成音频。 |
| callback_url | String | 否 | 任务状态回调地址。AIAPIGo 会转发为本平台任务 ID 的响应。 |
| enableVideoEncrypt | Boolean | 否 | AIAPIGo 扩展参数。默认 false:要求上游生成明文视频,查询结果默认直接给上游明文 TOS URL,不使用 AIAPIGo 代理域名。传 true 时保留加密 TOS 文件,查询结果默认给 AIAPIGo 代理下载 URL。 |
{
"model": "doubao-seedance-2.0",
"content": [
{ "type": "text", "text": "城市夜景中一辆未来感跑车驶过雨夜街道" }
],
"resolution": "1080p",
"duration": 8,
"ratio": "16:9",
"generate_audio": true,
"callback_url": "https://client.example/callback"
}{
"id": "vt-016569a13c00646194323164"
}- · 创建响应只代表任务已提交,不代表视频已经生成完成。
- · 请求体大小上限按火山官方兼容到 64MB;实际可用的分辨率仍受上游限制,目前最高为 1080p。
- ·
enableVideoEncrypt不传时默认关闭上游视频文件加密。任务成功后普通查询(不带video_url_mode/include_decryption)返回的content.video_url是上游明文 TOS URL,不带 AIAPIGo 域名;该 URL 通常约 24 小时过期。 - · 如传
enableVideoEncrypt:true,任务成功后默认返回 AIAPIGo 签名代理下载 URL;也可配合video_url_mode=upstream或include_decryption=1获取上游加密地址或解密材料。 - · 如果直接传外部参考图时返回
input_image_privacy_information,通常表示参考图含清晰真人主体或隐私风险;这类素材请先走「素材管理 · AIGC」的真人 H5 认证与 CreateAsset 入库流程,再用asset://asset_id作为参考图。 - · 如果参考素材来自素材管理接口,建议在素材
Status=Active后传asset://asset_id,例如"image_url":{"url":"asset://asset-xxxx"}。GetAsset返回的URL是上游临时 TOS URL,可能过期或受上游安全策略影响,不作为视频生成的推荐输入。
查询单个任务 /api/v3/contents/generations/tasks/{id}
查询任务状态、生成结果、真实分辨率/时长/比例、token 用量等字段。任务状态由平台后台同步并缓存;任务未结束时请继续轮询,建议按响应头 `X-AIAPIGO-Poll-After` 或 5-10 秒间隔查询。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Path String | 是 | 创建任务返回的 vt-... 任务 ID。 |
| video_url_mode | Query String | 否 | 默认不传时:加密任务返回 AIAPIGo 代理下载 URL,明文任务返回上游明文 TOS URL。加密任务传 upstream 时可返回原始上游加密 TOS URL。 |
| include_decryption | Query Boolean | 否 | 传 1 / true 时,在任务成功后额外返回 content.video_decryption,供客户自行解密上游加密 TOS 文件。 |
{
"id": "vt-016569a13c00646194323164",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"content": {
"video_url": "https://tos-cn-beijing.volces.com/path/to/plain-video.mp4?X-Tos-Expires=86400..."
},
"usage": {
"prompt_tokens": 1290,
"completion_tokens": 35840,
"total_tokens": 37130
},
"resolution": "1080p",
"ratio": "16:9",
"duration": 8,
"seed": 12345,
"service_tier": "default",
"generate_audio": true,
"created_at": 1780000000,
"updated_at": 1780000300
}- · 查询接口默认读取 AIAPIGo 本地任务状态,不会把每一次客户轮询都直接转发到上游;平台后台会按上游限流要求刷新任务状态并在成功时完成计费。
- · 非终态任务响应会带
X-AIAPIGO-Poll-After,客户端可按该秒数或 5-10 秒间隔轮询;更高频轮询通常不会让任务更快完成。 - ·
content.video_url的默认值按任务模式决定:默认明文任务返回上游明文 TOS URL,不走 AIAPIGo 代理;加密任务返回 AIAPIGo 签名下载地址,平台解密后给 mp4。 - · AIAPIGo 签名代理 URL 有效期 24 小时;上游 TOS URL 通常也约 24 小时过期。过期后重新 GET 该任务可获得新的 URL。
- · 如传
?video_url_mode=upstream,content.video_url和content.upstream_video_url会返回原始上游 TOS URL。该 URL 约 24 小时过期,可能不是可直接播放 mp4,仅用于排查或特殊客户转存;有问题请去掉该参数使用默认代理 URL。 - · 加密任务如传
?include_decryption=1,成功后会额外返回content.video_decryption。客户可下载upstream_video_url得到加密文件,Base64 解码data_key_b64作为 AES-256-GCM key,取加密文件前 12 字节作为 nonce,其余内容作为 ciphertext+tag 解密。 - · 明文任务没有
content.video_decryption;默认content.video_url已经是上游原始明文 TOS URL,通常约 24 小时过期。 - ·
data_key_b64是单视频 DEK,只能解密当前视频,不能生成视频;平台不会返回上游 API key / AK / SK / RSA 私钥。
查询任务列表 /api/v3/contents/generations/tasks
分页查询当前 API Key 所属用户的视频任务,可按状态、任务 ID、模型过滤。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page_num | Query Integer | 否 | 页码,从 1 开始,默认 1。 |
| page_size | Query Integer | 否 | 每页数量,默认 20,最大 500。 |
| filter.status | Query String | 否 | 按状态过滤:pending / queued / running / succeeded / failed / cancelled / expired。 |
| filter.task_ids | Query String[] | 否 | 按任务 ID 过滤;可重复传入多个 filter.task_ids。 |
| filter.model | Query String | 否 | 按模型 ID 过滤。 |
| filter.service_tier | Query String | 否 | 按服务等级过滤。 |
| video_url_mode | Query String | 否 | 可选值 upstream。加密任务默认返回 AIAPIGo 代理下载 URL;传 upstream 时返回原始上游 TOS URL。明文任务默认已返回上游 URL。 |
{
"total": 1,
"items": [
{
"id": "vt-016569a13c00646194323164",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"content": {
"video_url": "https://tos-cn-beijing.volces.com/path/to/plain-video.mp4?X-Tos-Expires=86400..."
},
"resolution": "1080p",
"ratio": "16:9",
"duration": 8,
"created_at": 1780000000,
"updated_at": 1780000300
}
]
}取消任务 /api/v3/contents/generations/tasks/{id}
对未完成任务发起取消。取消是 best-effort;如果上游已完成,查询结果可能仍为 succeeded。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Path String | 是 | 创建任务返回的 vt-... 任务 ID。 |
{
"id": "vt-016569a13c00646194323164",
"status": "cancelled"
}- ·
cancelled/failed不扣费;succeeded会按 usage 计费。
创建任务 · 请求体(Request Body)
字段顺序与 Volcengine Ark 官方一致。content数组的子元素结构见下方"content 子元素详解"。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | String | 是 | — | 模型 ID。推荐使用 doubao-seedance-2.0;为兼容旧火山接入,doubao-seedance-2 开头的历史模型名会自动归一到 doubao-seedance-2.0。 |
| content | Array<Object> | 是 | — | 多模态内容数组,按顺序排列。每个元素是一个 type 标识的对象:text(文本提示词,必填一项)、image_url(参考图)、video_url(参考视频)、audio_url(参考音频)。素材管理接口创建出的素材建议在视频生成里传 asset://asset_id,不要直接使用 GetAsset 返回的临时 TOS URL。 |
| duration | Integer | 否 | 5 | 视频时长,单位秒。Seedance 2.0 支持 4-15 的整数秒;-1 表示智能时长。不传则上游默认 5 秒。 |
| resolution | String | 否 | "720p" | 输出分辨率,支持 "480p" / "720p" / "1080p"。Seedance 2.0 Fast / Mini 不支持 1080p。 |
| ratio | String | 否 | "adaptive" | 生成视频的宽高比,支持 "16:9" / "9:16" / "1:1" / "4:3" / "3:4" / "21:9" / "adaptive"。 |
| generate_audio | Boolean | 否 | true | 是否同时生成配音。true 让模型自动配音;false 仅产出无声视频。 |
| watermark | Boolean | 否 | false | 是否给生成视频加上"方舟"品牌水印。设为 true 时右下角会带水印;商用场景通常 false。 |
| seed | Integer | 否 | — | 随机种子。固定 seed 可提升相同提示词下结果的可复现性,但不保证完全一致。 |
| service_tier | String | 否 | — | 服务等级,按上游可用值透传。 |
| execution_expires_after | Integer | 否 | — | 任务执行超时时间,单位秒;按上游可用值透传。 |
| priority | Integer | 否 | — | 任务优先级;按上游可用值透传。 |
| draft | Boolean | 否 | — | 是否创建草稿任务;按上游能力透传。 |
| tools | Array<Object> | 否 | — | 工具参数;按 Volcengine Ark Content Generation schema 透传。 |
| callback_url | String | 否 | — | 任务状态回调地址。AIAPIGo 会接管上游回调并转发为本平台任务 ID 的响应,方便客户继续按本接口处理。 |
content 子元素详解
content 数组按顺序保留语义。至少需包含一项 type=text。其它三种类型可选,多张参考图 / 视频 / 音频组合使用以控制生成结果。
| 字段 | 类型 / 取值 | 说明 |
|---|---|---|
| type | "text" | 固定值 |
| text | String | 提示词内容,详细描述画面、动作、镜头运用。支持极长文本。 |
| 字段 | 类型 / 取值 | 说明 |
|---|---|---|
| type | "image_url" | 固定值 |
| image_url.url | String | 公网可访问的图片 URL(jpg/png/webp)。 |
| role | String | 取值:"reference_image"(参考图)/ "first_frame"(首帧)/ "last_frame"(尾帧)等。 |
| 字段 | 类型 / 取值 | 说明 |
|---|---|---|
| type | "video_url" | 固定值 |
| video_url.url | String | 公网可访问的视频 URL(mp4)。 |
| role | String | 取值通常为 "reference_video"。 |
| 字段 | 类型 / 取值 | 说明 |
|---|---|---|
| type | "audio_url" | 固定值 |
| audio_url.url | String | 公网可访问的音频 URL(mp3/wav)。 |
| role | String | 取值通常为 "reference_audio"。 |
创建任务 · 响应体
{
"id": "vt-016569a13c00646194323164"
}| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 任务 ID。用于后续 GET / DELETE 调用。 |
查询任务 · 响应体(Query Task Response)
{
"id": "vt-016569a13c00646194323164",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"content": {
"video_url": "https://tos-cn-beijing.volces.com/path/to/plain-video.mp4?X-Tos-Expires=86400..."
},
"usage": {
"prompt_tokens": 1290,
"completion_tokens": 35840,
"total_tokens": 37130
},
"resolution": "1080p",
"ratio": "16:9",
"duration": 8,
"seed": 12345,
"service_tier": "default",
"generate_audio": true,
"created_at": 1748945523,
"updated_at": 1748945910
}| 字段 | 类型 | 说明 |
|---|---|---|
| id | String | 任务 ID。 |
| model | String | 实际承载本次生成的模型 ID(可能是创建时填的 endpoint id 解析后的具体 model id)。 |
| status | String | 任务状态。详见状态机表。 |
| safety_identifier | String | 安全标识;上游返回时透出。 |
| content | Object | 生成结果。通常在 status = succeeded 时出现。 |
| content.video_url | String | 默认明文任务直接返回上游明文 TOS URL;加密任务返回 AIAPIGo 签名下载 URL,由平台代理解密后下载 mp4。 |
| content.upstream_video_url | String | 仅 video_url_mode=upstream 时返回。原始上游 TOS URL,约 24h 过期,可能不是可直接播放的 mp4,仅用于排查或特殊客户转存。 |
| content.video_decryption | Object | AIAPIGo 扩展字段:仅加密任务在查询单个任务时传 include_decryption=1 且任务已成功时返回。用于客户自行下载上游加密 TOS 文件并解密。 |
| content.video_decryption.upstream_video_url | String | 上游加密 TOS URL。通常约 24 小时过期;过期后需要重新查询任务获取新的上游 URL 和解密材料。 |
| content.video_decryption.encrypted_data_key_header | String | 上游 TOS 响应头名,固定为 x-tos-meta-enc-dek。 |
| content.video_decryption.encrypted_data_key | String | TOS 响应头中的加密 DEK 原文,便于客户侧排查;不包含上游 API key / AK / SK。 |
| content.video_decryption.data_key_b64 | String | 本视频专用 AES-256-GCM 明文 DEK 的 Base64。只可解密当前视频,不能用于生成视频。 |
| content.video_decryption.algorithm | String | 加密方案标识,当前为 RSA_OAEP_4096_AES_256。 |
| content.video_decryption.key_wrap | String | DEK 包装算法,当前为 RSA-OAEP-SHA256。 |
| content.video_decryption.content_cipher | String | 视频文件内容加密算法,当前为 AES-256-GCM。 |
| content.video_decryption.nonce_source | String | nonce 来源:加密文件前 12 字节。 |
| content.video_decryption.ciphertext_layout | String | 密文布局:nonce || ciphertext || tag。 |
| content.video_decryption.expires_in / expires_at | Integer | 上游 TOS URL 的有效期秒数和到期 Unix 时间戳;上游 URL 未携带对应签名参数时可能为空。 |
| content.video_url_expires_in | Integer | AIAPIGo 扩展字段:默认代理下载 URL 的剩余有效秒数,固定为 86400。upstream 模式不返回该字段。 |
| content.video_url_expires_at | Integer | AIAPIGo 扩展字段:默认代理下载 URL 到期 Unix 时间戳(秒)。upstream 模式不返回该字段。 |
| content.last_frame_url | String | 上游返回的最后一帧 URL;存在时透出。 |
| content.file_url | String | 上游返回的文件 URL;存在时透出。 |
| error | Object | 失败原因。仅在 status = failed 时出现;平台会尽量补充 suggestion、retryable、upstream_code、upstream_request_id,方便客户端判断是否可重试。 |
| failure_reason | Object | 列表接口里的失败原因字段;与 error 保持一致,包含可读提示和诊断字段。 |
| usage | Object | token 用量。仅在 status = succeeded 时出现,用于结算。 |
| usage.prompt_tokens | Integer | 输入侧消耗的 token 数(提示词 + 参考素材编码)。 |
| usage.completion_tokens | Integer | 输出侧消耗的 token 数(生成的视频 token)。 |
| usage.total_tokens | Integer | 本次任务总 token 数 = prompt + completion。 |
| subdivisionlevel | String | 分镜 / 拆分等级;上游返回时透出。 |
| fileformat | String | 输出文件格式;上游返回时透出。 |
| frames | Integer | 输出帧数;上游返回时透出。 |
| framespersecond | Integer | 帧率;上游返回时透出。 |
| resolution | String | 实际输出分辨率,如 720p / 1080p。 |
| ratio | String | 实际输出宽高比,如 16:9。 |
| duration | Integer | 实际输出时长,单位秒。 |
| created_at | Integer | 任务创建 Unix 时间戳(秒)。 |
| updated_at | Integer | 任务最近更新的 Unix 时间戳(秒)。 |
| seed | Integer | 上游使用的 seed。 |
| revised_prompt | String | 上游改写后的提示词;存在时透出。 |
| service_tier | String | 服务等级;上游返回时透出。 |
| execution_expires_after | Integer | 执行超时时间;上游返回时透出。 |
| priority | Integer | 任务优先级;上游返回时透出。 |
| generate_audio | Boolean | 是否生成音频。 |
| draft | Boolean | 是否草稿任务。 |
| draft_task_id | String | 草稿任务 ID;存在时透出。 |
| tools | Array<Object> | 工具配置;上游返回时透出。 |
自行解密上游 TOS 视频(可选)
默认建议直接使用content.video_url下载解密后的 mp4。如果需要自行处理上游加密文件,查询任务时同时传video_url_mode=upstream和include_decryption=1,响应会返回当前视频专用的data_key_b64。
- · 下载 `content.video_decryption.upstream_video_url` 得到加密文件。
- · Base64 解码 `data_key_b64`,作为 AES-256-GCM key。
- · 加密文件前 12 字节是 nonce,其余部分是 ciphertext + tag。
- · 上游 TOS URL 通常约 24 小时过期;过期后重新查询任务获取新的 URL 和解密材料。
- · 平台不会返回上游 API key / AK / SK / RSA 私钥;`data_key_b64` 只能解密当前视频,不能用于生成视频。
# pip install requests cryptography
import base64
import requests
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
BASE_URL = "https://www.aiapigo.com/api/v3"
API_KEY = "sk-ai-***"
TASK_ID = "vt-016569a13c00646194323164"
# 1) 查询任务,并要求返回上游加密 TOS URL 和单视频解密材料
task = requests.get(
f"{BASE_URL}/contents/generations/tasks/{TASK_ID}",
headers={"Authorization": f"Bearer {API_KEY}"},
params={
"video_url_mode": "upstream",
"include_decryption": "1",
},
timeout=30,
).json()
if task["status"] != "succeeded":
raise RuntimeError(f"task is not succeeded: {task['status']}")
dec = task["content"]["video_decryption"]
# 2) 下载上游加密文件。该 URL 通常约 24 小时过期
encrypted_file = requests.get(dec["upstream_video_url"], timeout=300).content
# 3) 解密。文件布局为 nonce || ciphertext || tag
key = base64.b64decode(dec["data_key_b64"])
nonce = encrypted_file[:12]
ciphertext_and_tag = encrypted_file[12:]
plaintext = AESGCM(key).decrypt(nonce, ciphertext_and_tag, None)
with open("video.mp4", "wb") as f:
f.write(plaintext)
print("saved to video.mp4")任务状态机(status 字段)
异步:客户端用 task ID 轮询;平台后台同步上游状态并保存,查询接口返回平台缓存状态, 状态值与 Volcengine Ark 完全一致。
pending任务已提交,等待调度。queued已进入排队序列,等待资源。running正在生成中。succeeded生成成功。content.video_url为视频下载地址,usage字段携带 token 用量。本次扣费。failed生成失败。error字段携带错误信息。不扣费。cancelled任务已被取消。不扣费。expired任务已过期或超时。不扣费。
任务列表 · 查询参数(Query Tasks)
翻页与过滤参数与 Volcengine 上游一致;响应 schema 为{ total, items: [...] }。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| page_num | Integer | 1 | 页码,从 1 开始。 |
| page_size | Integer | 20 | 每页条数。最大 500。 |
| filter.status | String | — | 按任务状态过滤,取值见状态机表。 |
| filter.task_ids | String[] | — | 按 task ID 过滤;可重复传该参数以传入多个 ID。 |
| filter.model | String | — | 按 model 过滤。 |
| filter.service_tier | String | — | 按服务等级过滤,按上游可用值透传。 |
| video_url_mode | String | — | 可选值 `upstream`。加密任务默认返回 AIAPIGo 代理下载 URL;传 `upstream` 时返回原始上游 TOS URL。明文任务默认已返回上游 URL。 |
错误响应(Ark 信封)
{
"error": {
"code": "insufficient_balance",
"message": "余额不足,请充值后重试"
}
}- 401
missing_key / invalid_keyAuthorization header 缺失或无效 - 402
insufficient_balance余额不足以承担预估的最大成本 - 404
model_not_found / task_not_foundmodel 未上线 / task 不存在或非本账号 - 400
missing_model / model_kind_mismatch / invalid_upstream_parametermodel 字段缺失、不是视频模型,或请求参数不符合视频生成要求 - 400
reference_video_duration_exceeded / reference_audio_too_short / invalid_asset_url参考视频时长超限、参考音频过短或素材不可用 - 400
input_text_sensitive / input_image_sensitive / input_image_privacy_information提示词、参考图或真人/隐私内容未通过安全校验 - 400
output_video_sensitive / output_audio_sensitive / content_policy_violation生成结果或兜底内容安全校验未通过 - 429
upstream_rate_limited请求过于频繁,请降低并发并稍后重试 - 502
upstream_error / upstream_internal_error视频生成服务暂时不可用 - 502
no_account_available视频生成账号池暂无可用账号(配额不足或全部禁用)
完整 API 参考、限流、SLA 等内容在编写中。如急需可联系support@aiapigo.com。
视频生成常见错误处理建议
视频任务创建失败时,接口会同步返回{ error: {...} };任务生成失败时,查询任务和列表接口会在error/failure_reason里返回同样结构。外层信封保持不变;平台会细分error.code并额外补充field/input_type等诊断字段,不影响官方字段解析。
| 字段 | 类型 | 说明 |
|---|---|---|
error.code | String | 错误码。请优先按该字段做程序分支;内容安全类错误会细分为 input_text_sensitive / input_image_sensitive / output_video_sensitive 等。 |
error.type | String | 错误类别,如 content_policy_violation / invalid_request_error / rate_limit_error。兼容火山 / OpenAI 风格错误分类。 |
error.message | String | 面向用户展示的简短错误说明。 |
error.suggestion | String | 建议修改方向;平台扩展字段。 |
error.retryable | Boolean | 是否适合原样稍后重试。参数或内容安全问题通常为 false,限流 / 临时服务问题通常为 true。 |
error.field | String | 可选。能定位到具体 content[n] 时返回,例如 content[0]。 |
error.input_type | String | 可选。问题输入或生成阶段,如 text / image_url / generated_video / generated_audio。 |
error.upstream_code | String | 可选。供应侧原始错误码,便于技术定位;不建议作为唯一业务分支依据。 |
error.upstream_request_id | String | 可选。供应侧请求 ID,联系平台排查时可提供。 |
| code | 原因 | 处理建议 |
|---|---|---|
input_text_sensitive | 提示词文本未通过内容安全校验 | 查看 field 定位到的 content[n],调整该段文本中的敏感描述;可弱化暴力、胁迫、隐私、成人或高风险情节。 |
input_image_sensitive | 参考图未通过内容安全校验 | 更换 field 对应的参考图,避免包含敏感、隐私或高风险内容;如是清晰真人主体,请走真人素材认证流程。 |
reference_video_duration_exceeded | 参考视频总时长超过限制 | 减少 reference_video 数量,或裁短参考视频后重试。这里不是生成视频 duration 参数的问题。 |
reference_audio_too_short | 参考音频时长过短 | 按 suggestion 中提示的 content[n] 和最小时长调整 reference_audio,或移除该音频后重试。 |
input_image_privacy_information | 参考图未通过真人或隐私内容校验 | 更换不含清晰真人主体的参考图;如需使用真人参考图,请查看「素材管理 · AIGC」中的真人 H5 认证流程,认证并入库后在生成请求中使用 asset:// 素材 ID。 |
output_video_sensitive | 生成视频结果未通过内容安全校验 | 生成阶段失败,通常不是某个单一字段格式错误;请整体调整提示词和参考素材,弱化可能触发安全策略的情节后重新创建任务。 |
output_audio_sensitive | 生成音频未通过内容校验 | 如不需要声音,请传 generate_audio:false;如需要声音,请调整口播或音频提示词后重试。 |
invalid_asset_url | 参考素材不可用 | 确认素材已认证通过并处于 Active 状态;视频生成中推荐传 asset:// 素材 ID,不要传已过期的临时 URL。 |
upstream_rate_limited | 请求过于频繁 | 降低并发并稍后重试;批量任务建议客户端排队提交。 |
upstream_internal_error | 视频生成服务暂时不可用 | 稍后重试;批量提交时建议降低并发或排队提交。 |
content_policy_violation | 内容安全兜底错误 | 平台无法进一步区分是输入还是生成结果时返回该 code。请结合 message、suggestion 和请求内容调整后重试。 |
{
"error": {
"code": "input_text_sensitive",
"type": "content_policy_violation",
"message": "提示词未通过内容安全校验,任务创建失败。",
"suggestion": "请调整 content[0] 中的敏感文本后重试;可弱化暴力、胁迫、隐私、成人或高风险情节。",
"retryable": false,
"field": "content[0]",
"input_type": "text",
"upstream_code": "InputTextSensitiveContentDetected",
"upstream_request_id": "0217853170174640e9e2f2120f1f78e103cd745191b1689d97bd8"
}
}{
"id": "vt-016569a13c00646194323164",
"model": "doubao-seedance-2.0",
"status": "failed",
"error": {
"code": "output_video_sensitive",
"type": "content_policy_violation",
"message": "生成视频未通过内容安全校验,任务生成失败。",
"suggestion": "生成结果触发内容安全校验,请调整提示词、参考图或参考视频后重试,弱化暴力、胁迫、隐私、成人或高风险情节。",
"retryable": false,
"input_type": "generated_video",
"upstream_code": "OutputVideoSensitiveContentDetected",
"upstream_request_id": "021785221514026464ab88fe358ba5cca4a17963dcac1bf1ffcdc"
},
"failure_reason": {
"code": "output_video_sensitive",
"type": "content_policy_violation",
"message": "生成视频未通过内容安全校验,任务生成失败。",
"suggestion": "生成结果触发内容安全校验,请调整提示词、参考图或参考视频后重试,弱化暴力、胁迫、隐私、成人或高风险情节。",
"retryable": false,
"input_type": "generated_video",
"upstream_code": "OutputVideoSensitiveContentDetected",
"upstream_request_id": "021785221514026464ab88fe358ba5cca4a17963dcac1bf1ffcdc"
}
}{
"error": {
"code": "reference_audio_too_short",
"type": "invalid_request_error",
"message": "参考音频时长过短,任务创建失败。",
"suggestion": "请将 content[6] 的 reference_audio 音频时长调整到至少 1.8 秒,或移除该音频后重试。",
"retryable": false,
"upstream_code": "InvalidParameter",
"upstream_request_id": "021785221514026464ab88fe358ba5cca4a17963dcac1bf1ffcdc"
}
}计费规则
- · 按 token 计费 · 与 Chat Completions 公式一致
- · 只有 status=succeeded 才扣费;failed / cancelled 不扣
- · 任务提交时按上限预估并锁定余额;succeeded 后按上游真实 usage 落账
- · 余额、扣费明细、原始上游响应都可在「调用日志 / 账单」逐条核对