TokenFusion 平台 RESTful API 接入指南
TokenFusion 是一个 AI 视频生成与多模态处理平台,面向内容创作、媒体生产与行业级视频应用场景,提供覆盖文生视频、文生图、文本对话、图像生成等的完整能力链路。通过统一的 API,帮助企业快速构建低成本、高质量、可规模化的 AIGC 应用。
当前已支持火山方舟(Volcano Ark)的 Seedance 系列、Seed 系列、Seedream 系列,以及可灵 AI(Kling AI)等模型。TokenFusion 提供统一的 RESTful API 接口,分为 AI 模型接口 与 管理接口 两大类。所有 API 调用均通过标准 HTTP 请求完成,请求和响应体均为 JSON 格式(生文流式模式除外,返回 SSE)。
提供各类 AI 能力的调用,包括:
asset:// 引用用于下游系统查询账户信息,目前提供:
访问 控制台 > API Keys,创建 API 密钥并命名管理,支持一键复制 API Key。
用 API Key 组装成 Authorization,填写到 Request Header 里,组装方式为:
代码块
Authorization: Bearer YOUR_API_KEY
其中 Bearer 与 API Key 之间需要保留一个空格。
Authorization Header 携带 API Key 进行鉴权。403。Authorization Header。API Key 无效、缺失或已禁用时返回 401,响应体为 {"detail":"..."}。
平台统一接口地址格式如下:
代码块
https://api.xzzgm.cn/api/v1/
AI 模型接口路径示例:
https://api.xzzgm.cn/api/v1/chat/completions
https://api.xzzgm.cn/api/v1/images/generations
https://api.xzzgm.cn/api/v1/video/generations
https://api.xzzgm.cn/api/v1/assets/{Action}(如 CreateAssetGroup、CreateAsset)
管理接口路径示例:
https://api.xzzgm.cn/api/v1/user/balance
下文示例中的路径均相对于上述 Base URL。生产环境请将域名替换为实际对外地址(当前为 https://api.xzzgm.cn)。
以下以文生视频为例,演示「创建任务 → 轮询查询 → 获取结果」的完整流程。
请求
curl -X POST https://api.xzzgm.cn/api/v1/video/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "doubao-seedance-1-0-pro-250528",
"content": [
{
"type": "text",
"text": "写实风格,晴朗的蓝天之下,一大片白色的雏菊花田"
}
],
"ratio": "16:9",
"duration": 5
}'
结果返回示例
{
"id": "cgt-xxxx-xxxx"
}
提交异步任务后,使用返回的任务 ID 查询结果:
请求
curl -X GET "https://api.xzzgm.cn/api/v1/video/generations/${TASK_ID}" \
-H "Authorization: Bearer YOUR_API_KEY"
结果返回示例
{
"id": "cgt-xxxx-xxxx",
"model": "doubao-seedance-1-0-pro-250528",
"status": "succeeded",
"content": {
"video_url": "https://example.com/xxxx/xxxx.mp4"
},
"usage": {
"completion_tokens": 108900,
"total_tokens": 108900
},
"created_at": 1779951506,
"updated_at": 1779951777,
"seed": 95020,
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"framespersecond": 24,
"service_tier": "default",
"generate_audio": true,
"draft": false
}
任务进行中时 status 为 queued 或 running,请间隔 5~10 秒轮询,收到 429 时遵循 Retry-After 退避。
若需在视频中引用私域参考图/音视频,请先按下文 素材库 · Assets API 完成入库,再在 content 中使用 asset://{素材ID}。
| 分类 | 接口名称 | 方法 | 路径 | 鉴权 | 模式 |
|---|---|---|---|---|---|
| 模型调用 | Chat Completions(生文) | POST |
/chat/completions |
API Key | 同步 / 流式 |
| 模型调用 | Images Generations(生图) | POST |
/images/generations |
API Key | 同步 / 流式 |
| 模型调用 | 创建视频生成任务 | POST |
/video/generations |
API Key | 异步 |
| 模型调用 | 查询视频生成任务 | GET |
/video/generations/{task_id} |
API Key | 轮询 |
| 模型调用 | 取消视频生成任务 | POST |
/video/generations/{task_id}/cancel |
API Key | 异步 |
| 模型调用 | 素材库(Assets API) | POST |
/assets/{Action} |
API Key | 同步 异步入库 |
| 管理接口 | 查询账户余额 | POST |
/user/balance |
账号 + 密码 | 同步 |
OpenAI 兼容的对话补全接口。TokenFusion 校验 API Key 与模型权限后,将请求体原样转发至上游文本模型服务(火山方舟 Seed 系列等),响应 JSON / SSE 亦原样透传。
对齐火山方舟 对话(Chat) API;多模态理解详见图片、视频、音频文档;续写模式见续写模式。
messages,非流式返回完整 JSONstream: true,SSE 增量返回 delta.content / delta.reasoning_contentassistant 消息作为前缀,配合 continue_final_message 等参数续写content 含 image_urlcontent 含 video_urlcontent 含 input_audio(Base64);须模型支持reasoning_effort: "high";响应可能含 reasoning_content| 模式 | 关键参数 | 推荐模型 |
|---|---|---|
| 默认对话 | messages 纯文本;stream: false 或不传 | doubao-seed-2-0-lite-260215 等 |
| 流式输出 | stream: true;可选 stream_options.include_usage | Seed 2.0 Lite / Pro 等 |
| 续写模式 | 末条 role: assistant + continue_final_message: true | Seed 2.0 系列 |
| 图片理解 | content 含 image_url | doubao-seed-2-0-pro-260215 等多模态模型 |
| 视频理解 | content 含 video_url | doubao-seed-2-0-pro-260215 等 |
| 音频理解 | content 含 input_audio | doubao-seed-2-0-lite-260428 等(Pro 260215 通常不支持) |
| 深度推理 | reasoning_effort: "low" | "medium" | "high" | doubao-seed-2-0-lite-260215 等推理模型 |
具体 Model ID 与能力标签以模型广场为准;未绑定上游渠道时返回 503 model_not_found。
| Header | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer YOUR_API_KEY |
Content-Type | 是 | application/json |
Accept | 否 | 流式时建议 text/event-stream |
下表为 OpenAI 兼容字段及火山 Seed 常用扩展。TokenFusion 对未列出的上游支持字段允许透传(extra 不拦截)。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | — | 模型 ID,须为模型广场已上架生文模型,如 doubao-seed-2-0-lite-260215 |
| messages | array | 是 | — | 对话消息列表,至少 1 条;见下方「messages 格式」 |
| stream | boolean | 否 | false | 为 true 时返回 SSE;必须为布尔值,字符串 "true" 会返回 422 |
| stream_options | object | 否 | — | 流式选项,如 {"include_usage": true} 在最后一块返回 usage |
| continue_final_message | boolean | 否 | — | 续写模式。为 true 时,以 messages 最后一条 assistant 内容为前缀继续生成 |
| add_generation_prompt | boolean | 否 | — | 续写时通常设为 false,避免额外插入生成提示 |
| reasoning_effort | string | 否 | — | 推理强度:low / medium / high(深度推理模型) |
| max_tokens | integer | 否 | — | 最大生成 Token 数,≥ 1;日常建议 256~8192 |
| max_completion_tokens | integer | 否 | — | 与 max_tokens 语义相近,部分模型优先识别本字段 |
| temperature | number | 否 | 1 | 采样温度,0~2 |
| top_p | number | 否 | 1 | 核采样,0~1 |
| n | integer | 否 | 1 | 生成候选条数,≥ 1 |
| stop | string | array | 否 | — | 停止序列 |
| presence_penalty | number | 否 | 0 | 存在惩罚,-2~2 |
| frequency_penalty | number | 否 | 0 | 频率惩罚,-2~2 |
| tools | array | 否 | — | 工具定义(OpenAI 格式) |
| tool_choice | string | object | 否 | — | 工具选择策略 |
| response_format | object | 否 | — | 结构化输出,如 {"type":"json_object"} |
| seed | integer | 否 | — | 随机种子 |
| modalities | array | 否 | — | 输出模态(部分多模态模型) |
| audio | object | 否 | — | 请求级输出音频配置;输入侧音频理解请用 input_audio |
| user | string | 否 | — | 终端用户标识 |
content 可为字符串(纯文本),或多段对象数组(多模态理解)。
字符串 content(纯文本 / 默认对话)
{"role": "user", "content": "你好"}
多段 content(多模态)
messages[].content[] 中 type 仅下列取值有效(与上游一致):
| type | 结构 | 用途 |
|---|---|---|
text | {"type":"text","text":"..."} | 文本提示;text 必填且非空 |
image_url | {"type":"image_url","image_url":{"url":"..."}} | 图片理解;URL 或 data:image/...;base64,... |
video_url | {"type":"video_url","video_url":{"url":"..."}} | 视频理解;URL 须公网可访问 |
input_audio | {"type":"input_audio","input_audio":{"data":"<base64>","format":"mp3"}} | 音频理解;须模型支持 |
/video/generations 的 content 使用 audio_url 表示参考音频;生文 Chat 的音频理解须使用 input_audio,二者不可混用。传入 audio_url 到 Chat 会返回 400 InvalidParameter。
在已有文本前缀基础上继续生成,适用于故事续写、代码补全等。将最后一条消息的 role 设为 assistant,content 填入希望模型接续的前缀,并在请求体设置 continue_final_message: true、add_generation_prompt: false。详见火山续写模式。
{
"role": "user",
"content": "请以童话故事为主题续写:一片森林里,住着一只名叫小白的兔子。"
},
{
"role": "assistant",
"content": "有一天,小白"
}
HTTP 200,OpenAI 兼容 JSON。推理模型除 message.content 外,还可能返回 message.reasoning_content。
默认对话示例
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1710000000,
"model": "doubao-seed-2-0-lite-260215",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "你好,有什么可以帮你?" },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30 }
}
深度推理示例(含 reasoning_content)
{
"choices": [{
"message": {
"role": "assistant",
"content": "最终给用户的回答……",
"reasoning_content": "模型内部推理过程……"
},
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 50, "completion_tokens": 200, "total_tokens": 250 }
}
stream: true)Content-Type 为 text/event-stream,每行 data: {...},末尾 data: [DONE]。增量位于 choices[0].delta:
delta.content:正文增量delta.reasoning_content:推理过程增量(深度推理时可能先输出此项,content 暂时为空)客户端应同时监听两者,避免误判「长时间无输出」。设置 stream_options: {"include_usage": true} 可在末块获取 usage。
data: {"choices":[{"delta":{"reasoning_content":"……","content":""},"index":0}]}
data: {"choices":[{"delta":{"content":"你好"},"index":0}]}
data: [DONE]
| HTTP | 典型 code / 信息 | 说明 |
|---|---|---|
| 422 | 校验失败 | stream 传字符串;JSON 格式错误 |
| 401 | 无效 API Key | 检查 Authorization: Bearer sk-... |
| 403 | 额度不足 | 账户余额 / 上游 quota 不足 |
| 400 | InvalidParameter | Chat 中使用了 audio_url 等无效 type |
| 400 | audio input is not supported by this model | 当前模型不支持 input_audio,请换用如 doubao-seed-2-0-lite-260428 |
| 400 | MissingParameter | 多模态 text 缺失或为空 |
| 404 | ModelNotOpen | 模型未在上游开通 |
| 503 | model_not_found | Model ID 未在模型广场绑定渠道 |
默认对话(非流式)
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-lite-260215",
"messages": [
{"role": "user", "content": "用一句话介绍 TokenFusion 平台"}
],
"max_tokens": 256,
"temperature": 0.7
}'
流式输出
curl -N -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"model": "doubao-seed-2-0-lite-260215",
"messages": [{"role": "user", "content": "你好"}],
"stream": true,
"stream_options": {"include_usage": true},
"max_tokens": 512
}'
续写模式
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-lite-260215",
"messages": [
{"role": "user", "content": "请以童话故事为主题续写:一片森林里,住着一只名叫小白的兔子。"},
{"role": "assistant", "content": "有一天,小白"}
],
"continue_final_message": true,
"add_generation_prompt": false,
"max_tokens": 512,
"temperature": 0.7
}'
图片理解
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-pro-260215",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "请用一句话描述这张图片的主要内容"},
{"type": "image_url", "image_url": {"url": "https://ark-project.tos-cn-beijing.volces.com/images/view.jpeg"}}
]
}],
"max_tokens": 256,
"temperature": 0.2
}'
视频理解
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-pro-260215",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "请用一句话概括这段视频在做什么"},
{"type": "video_url", "video_url": {"url": "https://ark-project.tos-cn-beijing.volces.com/doc_video/r2v_tea_video1.mp4"}}
]
}],
"max_tokens": 256,
"temperature": 0.2
}'
音频理解(input_audio)
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-lite-260428",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "请用一句话描述这段音频的内容或氛围"},
{"type": "input_audio", "input_audio": {"data": "BASE64_AUDIO_DATA", "format": "mp3"}}
]
}],
"max_tokens": 256,
"temperature": 0.2
}'
input_audio.data 为音频文件 Base64(不含 Data URI 前缀);format 常用 mp3、wav。建议用 SDK 或脚本构造请求体。
深度推理
curl -X POST https://api.xzzgm.cn/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-lite-260215",
"messages": [{
"role": "user",
"content": "一个农夫需要把狼、羊、白菜运过河,船每次只能载一样。狼不能和羊单独在一起,羊不能和白菜单独在一起。请给出可行步骤并说明理由。"
}],
"reasoning_effort": "high",
"max_tokens": 1024,
"temperature": 0.2
}'
实际字段与错误码以模型服务返回为准;平台不做二次包装。
OpenAI 兼容的图像生成接口。TokenFusion 校验 API Key 与模型权限后,将请求体原样转发至上游图像模型服务(火山方舟 Seedream 等),响应 JSON / SSE 亦原样透传。
平台当前主要接入火山方舟 Seedream 系列(如 doubao-seedream-4-5-251128、doubao-seedream-5-0-260128)。除 OpenAI 标准字段外,Seedream 扩展参数(image、sequential_image_generation、tools 等)可直接写入请求体,详见火山方舟图片生成 API。
promptprompt + 单张 image(URL 或 Base64)image 数组(最多 14 张)+ sequential_image_generation: "disabled";prompt 可用「图1/图2」指代image + sequential_image_generation: "auto" + sequential_image_generation_options.max_imagesstream: true,返回 SSE 事件(见下方流式说明)tools: [{"type":"web_search"}],仅 Seedream 5.0(如 doubao-seedream-5-0-260128)支持| 模式 | 关键参数 | 推荐模型 |
|---|---|---|
| 文生图 | prompt | Seedream 4.5 / 4.0 / 5.0 |
| 图生图 | prompt + image(单 URL) | Seedream 4.5 / 4.0 / 5.0 |
| 多图融合 | image 数组 + sequential_image_generation: "disabled" | Seedream 4.5 / 4.0 |
| 多参考图生组图 | image 数组 + sequential_image_generation: "auto" + max_images | Seedream 4.5 / 4.0 |
| 流式输出 | stream: true | Seedream 4.5 / 4.0 / 5.0 |
| 联网搜索 | tools: [{"type":"web_search"}] | 仅 Seedream 5.0(doubao-seedream-5-0-260128) |
具体 Model ID 以模型广场实时列表为准;未绑定上游渠道的模型会返回 503 model_not_found。
| Header | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer YOUR_API_KEY |
Content-Type | 是 | application/json |
Accept | 否 | 流式时建议 text/event-stream |
下表包含 OpenAI 兼容字段与 Seedream 常用扩展字段。TokenFusion 请求 Schema 对扩展字段允许透传(extra 字段不拦截)。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| prompt | string | 是 | — | 图像描述文本,不能为空。Seedream 建议不超过约 300 汉字 / 600 英文词 |
| model | string | 否 | 上游默认 | 图像模型 ID;生产环境务必显式传入模型广场中的 Model ID,如 doubao-seedream-4-5-251128 |
| image | string / array | 否 | — | Seedream 扩展。参考图 URL 或 Base64(data:image/png;base64,...);支持单图或数组,最多 14 张。不传则为文生图 |
| size | string | 否 | 模型默认 | 输出尺寸。Seedream 可用分辨率关键词 2K、3K(5.0)/ 4K(4.5),或像素值如 2048x2048、2560x1440 |
| sequential_image_generation | string | 否 | disabled | Seedream 扩展。disabled 关闭组图(单图/融合);auto 开启组图,由模型决定张数 |
| sequential_image_generation_options | object | 否 | — | 组图配置,仅 sequential_image_generation: "auto" 时生效 |
| sequential_image_generation_options.max_images | integer | 否 | 15 | 最多生成张数,范围 1~15;须满足「参考图数量 + 输出张数 ≤ 15」 |
| stream | boolean | 否 | false | 是否流式返回;必须为布尔值,字符串 "true" 会返回 422 |
| tools | array | 否 | — | Seedream 5.0 扩展。联网搜索:[{"type":"web_search"}];开启后会按需检索网络,提升时效性但增加时延 |
| watermark | boolean | 否 | true | 是否在图片右下角添加「AI生成」水印;建议生产传 false |
| response_format | string | 否 | url | url 返回下载链接(24 小时内有效);b64_json 返回 Base64 |
| output_format | string | 否 | jpeg | Seedream 5.0 支持 jpeg / png |
| optimize_prompt_options | object | 否 | — | 提示词优化,如 {"mode":"standard"} |
| n | integer | 否 | 1 | OpenAI 兼容字段;Seedream 组图请优先用 sequential_image_generation |
| quality | string | 否 | — | OpenAI 兼容(如 dall-e-3 的 hd);Seedream 通常忽略 |
| background | string | 否 | — | OpenAI 兼容(gpt-image-1);Seedream 通常忽略 |
| style | string | 否 | — | OpenAI 兼容(dall-e-3);Seedream 通常忽略 |
| user | string | 否 | — | 终端用户标识,便于审计 |
| 模型 | 分辨率关键词 | 常用像素示例 |
|---|---|---|
Seedream 5.0(doubao-seedream-5-0-260128) | 2K、3K | 2048×2048、2560×1440、3072×3072 |
Seedream 4.5(doubao-seedream-4-5-251128) | 2K、4K | 2048×2048、2560×1440、2496×1664 |
Seedream 4.0(doubao-seedream-4-0-250828) | 1K、2K、4K | 1024×1024、2048×2048 |
也可在 prompt 中用自然语言描述宽高比,配合 size: "2K" 由模型决定具体像素。
成功响应示例(Seedream 4.5 文生图)
{
"model": "doubao-seedream-4-5-251128",
"created": 1780281542,
"data": [
{
"url": "https://example.com/generated.jpeg",
"size": "2560x1440"
}
],
"usage": {
"generated_images": 1,
"output_tokens": 16280,
"total_tokens": 16280
}
}
联网搜索成功时,usage 可能包含 tool_usage.web_search 计数(Seedream 5.0)。
stream: true)Content-Type 为 text/event-stream。每张图片生成完成后推送 image_generation.partial_succeeded,全部结束后推送 image_generation.completed,末尾为 data: [DONE]。详见火山方舟生图流式响应。
event: image_generation.partial_succeeded
data: {"type":"image_generation.partial_succeeded","model":"doubao-seedream-4-5-251128","image_index":0,"url":"https://..."}
event: image_generation.completed
data: {"type":"image_generation.completed","usage":{"generated_images":1,"output_tokens":16280,"total_tokens":16280}}
data: [DONE]
文生图
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-4-5-251128",
"prompt": "一只在窗台上晒太阳的橘猫,写实摄影风格,柔和自然光",
"size": "2K",
"watermark": false
}'
图生图
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-4-5-251128",
"prompt": "保持人物姿势不变,将服装材质改为透明清水,光影从反射变为折射",
"image": "https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_5_imageToimage.png",
"size": "2K",
"watermark": false
}'
多图融合
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-4-5-251128",
"prompt": "将图1的服装换为图2的服装,保持图1的人物姿态",
"image": [
"https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_imagesToimage_1.png",
"https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_5_imagesToimage_2.png"
],
"sequential_image_generation": "disabled",
"size": "2K",
"watermark": false
}'
多参考图生组图
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-4-5-251128",
"prompt": "参考图1人物与图2服装风格,生成一组连贯时尚穿搭展示图",
"image": [
"https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_imagesToimage_1.png",
"https://ark-project.tos-cn-beijing.volces.com/doc_image/seedream4_5_imagesToimage_2.png"
],
"sequential_image_generation": "auto",
"sequential_image_generation_options": {"max_images": 3},
"size": "2K",
"watermark": false
}'
流式输出
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"model": "doubao-seedream-4-5-251128",
"prompt": "一只在窗台上晒太阳的橘猫,写实摄影风格",
"size": "2K",
"stream": true,
"watermark": false
}'
联网搜索(仅 Seedream 5.0)
curl -X POST https://api.xzzgm.cn/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-5-0-260128",
"prompt": "根据当前流行的时装周街拍趋势,生成一张都市时尚街拍照片,自然光,高清",
"tools": [{"type": "web_search"}],
"size": "2K",
"watermark": false
}'
422:stream 传字符串而非布尔值;缺少 prompt503 model_not_found:Model ID 不在模型广场或未绑定上游渠道(如误用 doubao-seedream-5-0-lite-260501 等未接入 ID)tools 会被上游拒绝;联网搜索须换用 Seedream 5.0实际字段与错误码以模型服务返回为准;平台不做二次包装。
创建异步视频生成任务。TokenFusion 平台校验 API Key、模型权限与账户可用余额,预冻结费用后调用对应视频模型服务。成功时仅返回任务 ID,需轮询查询接口获取结果。
402。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型 ID,须为当前账户有权使用的视频模型 |
| content | array | 是 | 输入内容数组,见下方 Content 对象说明 |
| resolution | string | 否 | 480p / 720p / 1080p |
| ratio | string | 否 | 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive |
| duration | integer | 否 | 时长(秒);部分模型支持 -1 表示由模型决定 |
| seed | integer | 否 | 随机种子,-1 表示随机 |
| generate_audio | boolean | 否 | 是否生成同步音频(支持的模型) |
| draft | boolean | 否 | 样片模式(支持的模型) |
| camera_fixed | boolean | 否 | 是否固定镜头 |
| watermark | boolean | 否 | 是否添加水印 |
| return_last_frame | boolean | 否 | 是否返回尾帧图像 URL |
| service_tier | string | 否 | default 或 flex |
| execution_expires_after | integer | 否 | 任务超时阈值(秒),3600~259200 |
| callback_url | string | 否 | 任务终态回调地址(需平台开启托管回调功能) |
| tools | array | 否 | 工具配置,如 [{"type":"web_search"}] |
| frames | integer | 否 | 帧数(部分模型) |
文本对象
{ "type": "text", "text": "描述期望生成的视频内容" }
图片对象
{
"type": "image_url",
"image_url": { "url": "https://example.com/frame.jpg" },
"role": "first_frame"
}
role 可选:first_frame(首帧)、last_frame(尾帧)、reference_image(参考图)。也支持 asset://{素材ID} 引用平台素材库(须为当前用户拥有的素材)。
结果返回示例
{ "id": "cgt-2025xxxxxx-xxxx" }
仅返回任务 ID,不包含视频 URL。
查询任务状态与结果。仅可查询当前 API Key 所属用户创建的任务。平台对同一任务有进程内查询缓存与最小间隔限制,轮询过快返回 429(响应头含 Retry-After)。
| 参数 | 类型 | 说明 |
|---|---|---|
| task_id | string | 创建任务时返回的 id |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 任务 ID |
| model | string | 模型 ID |
| status | string | queued / running / succeeded / failed / cancelled / expired |
| internal_status | string | 平台内部状态(与对外 status 映射不一致时出现) |
| content.video_url | string | 成功时的视频 URL,请及时转存 |
| content.last_frame_url | string | 尾帧图片 URL(如创建时开启) |
| usage.total_tokens | integer | Token 消耗(用于计费) |
| error | object | 失败时的错误信息 |
| created_at / updated_at | integer | Unix 时间戳 |
请求
curl https://api.xzzgm.cn/api/v1/video/generations/cgt-2025xxxxxx-xxxx \
-H "Authorization: Bearer YOUR_API_KEY"
取消排队中的任务。仅 queued 状态可取消;响应结构与查询接口相同,返回取消后的任务状态。
请求
curl -X POST https://api.xzzgm.cn/api/v1/video/generations/cgt-2025xxxxxx-xxxx/cancel \
-H "Authorization: Bearer YOUR_API_KEY"
面向火山方舟(Volcano Ark)素材库的统一代理接口,用于将图片、视频、音频等参考素材入库,并在生视频请求中通过 asset://{素材ID} 引用。平台使用服务端配置的 AK/SK 访问上游 Assets API,下游仅需平台 API Key,不可在 URL 中指定上游账号(如 ?account=...)。
GroupId、ProjectName);生视频 /video/generations 使用小写字段(如 model、content)。请勿混用命名风格。
403。Result 字段中;空列表返回结构化空结果,而非报错。CreateAssetGroup — 创建素材组,记录返回的 Result.Id。CreateAsset — 提交公网可访问的素材 URL,记录 Result.Id(素材 ID)。GetAsset — 每 3~5 秒轮询,直到 Status 为 Active(失败为 Failed)。POST /video/generations — 在 content 的 image_url.url / video_url.url / audio_url.url 中填写 asset://{素材ID}。以下操作均为 POST,路径中的 {Action} 与表内名称一致。
| Action | 说明 |
|---|---|
CreateAssetGroup | 创建素材组 |
ListAssetGroups | 查询当前用户的素材组列表 |
GetAssetGroup | 查询单个素材组 |
UpdateAssetGroup | 更新素材组名称或描述 |
CreateAsset | 在指定素材组下提交素材(异步入库) |
ListAssets | 查询当前用户的素材列表 |
GetAsset | 查询单个素材状态与 URL |
UpdateAsset | 更新素材名称 |
DeleteAsset | 删除单个素材(暂不支持删除素材组) |
| Header | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer YOUR_API_KEY |
Content-Type | 是 | application/json |
| 字段 / 枚举 | 说明 |
|---|---|
ProjectName | 项目名,默认 default;创建素材时须与所属素材组一致 |
GroupType | 素材组类型,当前固定 AIGC |
AssetType | Image / Video / Audio |
Status | Processing(入库中)→ Active(可用于生视频)/ Failed |
PageNumber / PageSize | 列表分页;PageSize 最大 100 |
POST https://api.xzzgm.cn/api/v1/assets/CreateAssetGroup
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Name | string | 是 | 素材组名称,建议不超过 64 字符 |
| Description | string | 否 | 描述,建议不超过 300 字符 |
| GroupType | string | 是 | 固定传 AIGC |
| ProjectName | string | 否 | 默认 default |
请求
curl -X POST https://api.xzzgm.cn/api/v1/assets/CreateAssetGroup \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"Name": "brand-hero-v1",
"Description": "品牌主视觉素材组",
"GroupType": "AIGC",
"ProjectName": "default"
}'
响应示例
{
"Result": {
"Id": "group-202604020001"
}
}
POST https://api.xzzgm.cn/api/v1/assets/CreateAsset
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| GroupId | string | 是 | 所属素材组 ID,须为当前用户已创建的组 |
| URL | string | 是 | 公网可访问素材地址(当前仅支持 URL,不支持 Base64) |
| AssetType | string | 是 | Image / Video / Audio |
| Name | string | 否 | 素材名称,便于列表检索 |
| ProjectName | string | 否 | 须与素材组一致,默认 default |
成功仅表示已提交预处理队列;新素材默认 Processing,须轮询 GetAsset 至 Active 后再用于生视频。图片/视频/音频的格式与大小限制以火山方舟素材库文档为准。
请求
curl -X POST https://api.xzzgm.cn/api/v1/assets/CreateAsset \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"GroupId": "group-202604020001",
"URL": "https://example.com/hero-face.png",
"Name": "hero-face-closeup",
"AssetType": "Image",
"ProjectName": "default"
}'
响应示例
{
"Result": {
"Id": "asset-202604020001"
}
}
POST https://api.xzzgm.cn/api/v1/assets/GetAsset
curl -X POST https://api.xzzgm.cn/api/v1/assets/GetAsset \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"Id": "asset-202604020001",
"ProjectName": "default"
}'
响应示例(可用)
{
"Result": {
"Id": "asset-202604020001",
"Name": "hero-face-closeup",
"URL": "https://example-cdn.com/asset/hero-face.png",
"AssetType": "Image",
"GroupId": "group-202604020001",
"Status": "Active",
"ProjectName": "default",
"CreateTime": "2026-04-02T09:03:00Z",
"UpdateTime": "2026-04-02T09:03:20Z"
}
}
Result.URL 通常短期有效,请及时用于下载或生视频;入库轮询建议间隔 3~5 秒。
ListAssets — 仅返回当前用户拥有的素材;Filter.GroupType 必填 AIGC,可按 GroupIds、Statuses、Name 过滤。
ListAssets 请求示例
curl -X POST https://api.xzzgm.cn/api/v1/assets/ListAssets \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"Filter": {
"GroupIds": ["group-202604020001"],
"GroupType": "AIGC",
"Statuses": ["Active"]
},
"PageNumber": 1,
"PageSize": 20,
"SortBy": "CreateTime",
"SortOrder": "Desc",
"ProjectName": "default"
}'
ListAssetGroups、GetAssetGroup、UpdateAssetGroup、UpdateAsset、DeleteAsset 路径分别为 /assets/{Action},请求体字段与火山方舟 Assets API 一致,由平台透传并维护本地归属记录。
素材 Status 为 Active 后,在创建视频任务时使用 asset:// 前缀(须为当前用户拥有的素材 ID):
curl -X POST https://api.xzzgm.cn/api/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "人物看向镜头,电影感写实风格。"
},
{
"type": "image_url",
"image_url": { "url": "asset://asset-202604020001" },
"role": "reference_image"
}
],
"resolution": "720p",
"ratio": "16:9",
"duration": 5
}'
提示词中建议用「图片1」「视频1」等顺序指代参考素材,勿将裸 Asset ID 写入提示词正文。仅支持素材引用的火山视频模型可使用 asset://;可灵等其它上游返回 400 类错误。
| HTTP | 典型 detail | 说明 |
|---|---|---|
403 | 当前用户无权调用素材库 API | 未开通火山类视频模型权限 |
503 | 当前素材库服务暂时不可用 | 后台未配置或未启用素材库账号、AK/SK 解密失败等 |
404 | 素材组不存在 / 素材不存在 | ID 无效或不属于当前用户;ProjectName 不匹配时亦可能表现为 404 |
400 | 不支持的素材库操作 / 不支持指定 account 参数 | Action 不在白名单;URL 勿带 ?account= |
502 / 504 | 上游连接失败 / 响应超时 | 火山素材库链路异常,可稍后重试 |
部分上游业务错误会以原 HTTP 状态码与响应体透传,平台不做二次包装。
客户可使用平台登录账号和密码查询账户余额。账号即注册邮箱。该接口不会创建登录会话,也不会返回 API Key 或访问令牌;请不要将密码放入 URL Query。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| account | string | 二选一 | 登录邮箱;与 email 等价,推荐用 account |
| string | 二选一 | account 的别名 | |
| password | string | 是 | 平台登录密码 |
| 字段 | 类型 | 说明 |
|---|---|---|
| account | string | 账户邮箱 |
| balance | number | 账户总余额(元),保留 4 位小数 |
| reserved_balance | number | 已冻结额度(元),如视频任务预冻结 |
| available_balance | number | 可用余额 = balance − reserved_balance |
请求
curl -X POST https://api.xzzgm.cn/api/v1/user/balance \
-H "Content-Type: application/json" \
-d '{
"account": "user@example.com",
"password": "YourLoginPassword1"
}'
结果返回示例
{
"account": "user@example.com",
"balance": 100.0,
"reserved_balance": 12.5,
"available_balance": 87.5
}
account + client_ip 在 10 分钟内连续 5 次密码错误将被锁定 15 分钟(429)。请使用 POST JSON 传递密码,切勿写入 URL。
下列列表与 模型广场 同步,展示 TokenFusion 平台当前可用模型。完整能力说明、参数约束与价格请前往模型广场查看。
| 显示名 | Model ID | 能力标签 |
|---|---|---|
| doubao-seed-2-0-lite-260428 | doubao-seed-2-0-lite-260428 |
深度思考、文本生成、多模态理解、工具调用 |
| doubao-seed-2-0-mini-260428 | doubao-seed-2-0-mini-260428 |
文本生成、多模态理解、深度思考、工具调用 |
| doubao-seed-2-0-pro-260215 | doubao-seed-2-0-pro-260215 |
深度思考、文本生成、多模态理解、工具调用 |
| doubao-seed-2-0-lite-260215 | doubao-seed-2-0-lite-260215 |
深度思考、文本生成、多模态理解、工具调用、结构化输出 |
| doubao-seed-2-0-mini-260215 | doubao-seed-2-0-mini-260215 |
深度思考、文本生成、多模态理解、工具调用、结构化输出 |
| doubao-seed-2-0-code-preview-260215 | doubao-seed-2-0-code-preview-260215 |
深度思考、文本生成、多模态理解、工具调用 |
| glm-5.1 | glm-5.1 |
文本生成、深度思考 |
| 显示名 | Model ID | 能力标签 |
|---|---|---|
| doubao-seedream-5-0-260128 | doubao-seedream-5-0-260128 |
文生图、图生图 |
| doubao-seedream-4-5-251128 | doubao-seedream-4-5-251128 |
文生组图、单图生组图、多参考图生组图 |
| doubao-seedream-4-0-250828 | doubao-seedream-4-0-250828 |
生成组图、文生组图、单图生组图、多参考图生组图 |
| doubao-seedream-5-0-lite-260128 | doubao-seedream-5-0-lite-260128 |
文生图、多参考图生图、生成组图 |
| 显示名 | Model ID | 能力标签 |
|---|---|---|
| Seedance 2.0 | doubao-seedance-2-0-260128 |
文生视频、图生视频、首尾帧、有声视频、联网搜索、多模态参考、视频编辑 |
| Seedance 2.0 Fast | doubao-seedance-2-0-fast-260128 |
文生视频、图生视频、首尾帧、有声视频、联网搜索、快速出片 |
| Seedance 1.5 Pro | doubao-seedance-1-5-pro-251215 |
文生视频、图生视频、首尾帧、有声视频、样片模式 |
| Seedance 1.0 Pro Fast | doubao-seedance-1-0-pro-fast-251015 |
文生视频、图生视频、快速出片 |
/video/generations 引用 asset:// 时按视频模型规则计费。402。usage.total_tokens 与平台模型单价配置。管理接口返回的 available_balance 可用于判断视频任务是否可创建。
| HTTP 状态码 | 典型场景 | 响应体格式 |
|---|---|---|
200 | 请求成功(含模型服务业务错误透传时的 HTTP 200 + error 字段,见生文/生图说明) | 业务 JSON 或 SSE |
400 | 参数不合法、视频任务创建被模型服务拒绝 | {"detail": ...} |
401 | API Key 无效/缺失;余额查询账号或密码错误 | {"detail":"..."} |
402 | 视频任务创建时 TokenFusion 可用余额不足(需预冻结) | {"detail":"..."} |
403 | 账户已禁用;无权调用素材库;无权访问素材引用;模型 ACL 拒绝 | {"detail":"..."} |
404 | 视频任务不存在;素材组/素材不存在(或不属于当前用户) | {"detail":"..."} |
422 | 请求体 JSON Schema 校验失败(如缺少必填字段、类型错误) | {"detail":[...]} |
429 | 视频任务查询轮询过频;余额查询密码错误次数过多 | {"detail":"..."} |
502 / 504 | 平台服务、模型通道或素材库上游不可用/超时 | {"detail":"..."} 或上游原文 / OpenAI error |
503 | 素材库服务未配置;对应模型能力暂未开放;无可用模型通道 | {"detail":"..."} |
stream: true,按 SSE 规范解析 data: 行;深度推理时同时监听 delta.reasoning_content 与 delta.content。assistant 消息填前缀,并设 continue_final_message: true、add_generation_prompt: false。doubao-seed-2-0-lite-260428,勿在 Chat 中使用 audio_url。stream: true 并传 Accept: text/event-stream;监听 image_generation.partial_succeeded 逐张渲染,以 data: [DONE] 结束。image 与 sequential_image_generation 组合切换;联网搜索须使用 Seedream 5.0(doubao-seedream-5-0-260128)。429 时遵循 Retry-After 退避。CreateAsset 后轮询 GetAsset 至 Active 再调用生视频;素材库用 PascalCase,生视频用小写字段。Active 的素材。detail)与 OpenAI 兼容格式的模型错误(error 对象);生图 503 model_not_found 多为 Model ID 未在模型广场绑定渠道。