API 说明文档

TokenFusion 平台 RESTful API 接入指南

产品介绍

TokenFusion 是一个 AI 视频生成与多模态处理平台,面向内容创作、媒体生产与行业级视频应用场景,提供覆盖文生视频、文生图、文本对话、图像生成等的完整能力链路。通过统一的 API,帮助企业快速构建低成本、高质量、可规模化的 AIGC 应用。

当前已支持火山方舟(Volcano Ark)的 Seedance 系列、Seed 系列、Seedream 系列,以及可灵 AI(Kling AI)等模型。TokenFusion 提供统一的 RESTful API 接口,分为 AI 模型接口管理接口 两大类。所有 API 调用均通过标准 HTTP 请求完成,请求和响应体均为 JSON 格式(生文流式模式除外,返回 SSE)。

接口分类

AI 模型接口

提供各类 AI 能力的调用,包括:

  1. 文本生成(生文):OpenAI 兼容 Chat Completions;支持默认对话、流式、续写、图片/视频/音频理解与深度推理
  2. 图像生成(生图):OpenAI 兼容 Images Generations 接口;Seedream 支持文生图、图生图、多图融合、组图、流式与联网搜索(5.0)
  3. 视频生成(生视频):异步任务创建、查询与取消
  4. 素材库(Assets):火山方舟素材组/素材入库,供 Seedance 等模型通过 asset:// 引用

管理接口

用于下游系统查询账户信息,目前提供:

  1. 用户账户:查询账户余额接口

平台入门 · 登录开发者控制台

访问 控制台 > API Keys,创建 API 密钥并命名管理,支持一键复制 API Key。

重要提示:
  1. 立即复制并妥善保存 API Key(页面关闭后不可再次查看完整密钥);
  2. 建议通过「API 密钥命名」标注用途,便于后续管理,每个账户最多 10 个 Key。

鉴权认证

用 API Key 组装成 Authorization,填写到 Request Header 里,组装方式为:

代码块

Authorization: Bearer YOUR_API_KEY

其中 Bearer 与 API Key 之间需要保留一个空格。

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}(如 CreateAssetGroupCreateAsset

管理接口路径示例:

https://api.xzzgm.cn/api/v1/user/balance

下文示例中的路径均相对于上述 Base URL。生产环境请将域名替换为实际对外地址(当前为 https://api.xzzgm.cn)。

完整请求示例(生视频异步流程)

以下以文生视频为例,演示「创建任务 → 轮询查询 → 获取结果」的完整流程。

1. 创建视频生成任务

请求

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"
}

2. 查询任务结果

提交异步任务后,使用返回的任务 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
}

任务进行中时 statusqueuedrunning,请间隔 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 账号 + 密码 同步

模型调用 · 生文(Chat Completions)

POST /chat/completions

OpenAI 兼容的对话补全接口。TokenFusion 校验 API Key 与模型权限后,将请求体原样转发至上游文本模型服务(火山方舟 Seed 系列等),响应 JSON / SSE 亦原样透传。

对齐火山方舟 对话(Chat) API;多模态理解详见图片视频音频文档;续写模式见续写模式

能力概览(Seed 生文,经平台联调验证):
  • 默认对话:纯文本 messages,非流式返回完整 JSON
  • 流式输出stream: true,SSE 增量返回 delta.content / delta.reasoning_content
  • 续写模式:末条 assistant 消息作为前缀,配合 continue_final_message 等参数续写
  • 图片理解contentimage_url
  • 视频理解contentvideo_url
  • 音频理解contentinput_audio(Base64);须模型支持
  • 深度推理reasoning_effort: "high";响应可能含 reasoning_content

能力模式对照

模式关键参数推荐模型
默认对话messages 纯文本;stream: false 或不传doubao-seed-2-0-lite-260215
流式输出stream: true;可选 stream_options.include_usageSeed 2.0 Lite / Pro 等
续写模式末条 role: assistant + continue_final_message: trueSeed 2.0 系列
图片理解contentimage_urldoubao-seed-2-0-pro-260215 等多模态模型
视频理解contentvideo_urldoubao-seed-2-0-pro-260215
音频理解contentinput_audiodoubao-seed-2-0-lite-260428 等(Pro 260215 通常不支持)
深度推理reasoning_effort: "low" | "medium" | "high"doubao-seed-2-0-lite-260215 等推理模型

具体 Model ID 与能力标签以模型广场为准;未绑定上游渠道时返回 503 model_not_found

请求头(Request Headers)

Header必填说明
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json
Accept流式时建议 text/event-stream

请求体(Request Body)

下表为 OpenAI 兼容字段及火山 Seed 常用扩展。TokenFusion 对未列出的上游支持字段允许透传extra 不拦截)。

参数类型必填默认值说明
modelstring模型 ID,须为模型广场已上架生文模型,如 doubao-seed-2-0-lite-260215
messagesarray对话消息列表,至少 1 条;见下方「messages 格式」
streambooleanfalsetrue 时返回 SSE;必须为布尔值,字符串 "true" 会返回 422
stream_optionsobject流式选项,如 {"include_usage": true} 在最后一块返回 usage
continue_final_messageboolean续写模式。true 时,以 messages 最后一条 assistant 内容为前缀继续生成
add_generation_promptboolean续写时通常设为 false,避免额外插入生成提示
reasoning_effortstring推理强度:low / medium / high(深度推理模型)
max_tokensinteger最大生成 Token 数,≥ 1;日常建议 256~8192
max_completion_tokensintegermax_tokens 语义相近,部分模型优先识别本字段
temperaturenumber1采样温度,0~2
top_pnumber1核采样,0~1
ninteger1生成候选条数,≥ 1
stopstring | array停止序列
presence_penaltynumber0存在惩罚,-2~2
frequency_penaltynumber0频率惩罚,-2~2
toolsarray工具定义(OpenAI 格式)
tool_choicestring | object工具选择策略
response_formatobject结构化输出,如 {"type":"json_object"}
seedinteger随机种子
modalitiesarray输出模态(部分多模态模型)
audioobject请求级输出音频配置;输入侧音频理解请用 input_audio
userstring终端用户标识

messages 格式

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/generationscontent 使用 audio_url 表示参考音频;生文 Chat 的音频理解须使用 input_audio,二者不可混用。传入 audio_url 到 Chat 会返回 400 InvalidParameter

续写模式

在已有文本前缀基础上继续生成,适用于故事续写、代码补全等。将最后一条消息的 role 设为 assistantcontent 填入希望模型接续的前缀,并在请求体设置 continue_final_message: trueadd_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

客户端应同时监听两者,避免误判「长时间无输出」。设置 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 不足
400InvalidParameterChat 中使用了 audio_url 等无效 type
400audio input is not supported by this model当前模型不支持 input_audio,请换用如 doubao-seed-2-0-lite-260428
400MissingParameter多模态 text 缺失或为空
404ModelNotOpen模型未在上游开通
503model_not_foundModel 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 常用 mp3wav。建议用 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
  }'

实际字段与错误码以模型服务返回为准;平台不做二次包装。

模型调用 · 生图(Images Generations)

POST /images/generations

OpenAI 兼容的图像生成接口。TokenFusion 校验 API Key 与模型权限后,将请求体原样转发至上游图像模型服务(火山方舟 Seedream 等),响应 JSON / SSE 亦原样透传。

平台当前主要接入火山方舟 Seedream 系列(如 doubao-seedream-4-5-251128doubao-seedream-5-0-260128)。除 OpenAI 标准字段外,Seedream 扩展参数(imagesequential_image_generationtools 等)可直接写入请求体,详见火山方舟图片生成 API

能力概览(Seedream,经平台联调验证):
  • 文生图:仅传 prompt
  • 图生图:传 prompt + 单张 image(URL 或 Base64)
  • 多图融合:传 image 数组(最多 14 张)+ sequential_image_generation: "disabled";prompt 可用「图1/图2」指代
  • 多参考图生组图:传多张 image + sequential_image_generation: "auto" + sequential_image_generation_options.max_images
  • 流式输出stream: true,返回 SSE 事件(见下方流式说明)
  • 联网搜索tools: [{"type":"web_search"}]仅 Seedream 5.0(如 doubao-seedream-5-0-260128)支持

能力模式对照

模式关键参数推荐模型
文生图promptSeedream 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_imagesSeedream 4.5 / 4.0
流式输出stream: trueSeedream 4.5 / 4.0 / 5.0
联网搜索tools: [{"type":"web_search"}]仅 Seedream 5.0(doubao-seedream-5-0-260128

具体 Model ID 以模型广场实时列表为准;未绑定上游渠道的模型会返回 503 model_not_found

请求头(Request Headers)

Header必填说明
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json
Accept流式时建议 text/event-stream

请求体(Request Body)

下表包含 OpenAI 兼容字段与 Seedream 常用扩展字段。TokenFusion 请求 Schema 对扩展字段允许透传extra 字段不拦截)。

参数类型必填默认值说明
promptstring图像描述文本,不能为空。Seedream 建议不超过约 300 汉字 / 600 英文词
modelstring上游默认图像模型 ID;生产环境务必显式传入模型广场中的 Model ID,如 doubao-seedream-4-5-251128
imagestring / arraySeedream 扩展。参考图 URL 或 Base64(data:image/png;base64,...);支持单图或数组,最多 14 张。不传则为文生图
sizestring模型默认输出尺寸。Seedream 可用分辨率关键词 2K3K(5.0)/ 4K(4.5),或像素值如 2048x20482560x1440
sequential_image_generationstringdisabledSeedream 扩展。disabled 关闭组图(单图/融合);auto 开启组图,由模型决定张数
sequential_image_generation_optionsobject组图配置,仅 sequential_image_generation: "auto" 时生效
sequential_image_generation_options.max_imagesinteger15最多生成张数,范围 1~15;须满足「参考图数量 + 输出张数 ≤ 15」
streambooleanfalse是否流式返回;必须为布尔值,字符串 "true" 会返回 422
toolsarraySeedream 5.0 扩展。联网搜索:[{"type":"web_search"}];开启后会按需检索网络,提升时效性但增加时延
watermarkbooleantrue是否在图片右下角添加「AI生成」水印;建议生产传 false
response_formatstringurlurl 返回下载链接(24 小时内有效);b64_json 返回 Base64
output_formatstringjpegSeedream 5.0 支持 jpeg / png
optimize_prompt_optionsobject提示词优化,如 {"mode":"standard"}
ninteger1OpenAI 兼容字段;Seedream 组图请优先用 sequential_image_generation
qualitystringOpenAI 兼容(如 dall-e-3 的 hd);Seedream 通常忽略
backgroundstringOpenAI 兼容(gpt-image-1);Seedream 通常忽略
stylestringOpenAI 兼容(dall-e-3);Seedream 通常忽略
userstring终端用户标识,便于审计

参考图(image)约束

size 与分辨率(Seedream)

模型分辨率关键词常用像素示例
Seedream 5.0(doubao-seedream-5-0-2601282K3K2048×2048、2560×1440、3072×3072
Seedream 4.5(doubao-seedream-4-5-2511282K4K2048×2048、2560×1440、2496×1664
Seedream 4.0(doubao-seedream-4-0-2508281K2K4K1024×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
  }'
常见错误:
  • 422stream 传字符串而非布尔值;缺少 prompt
  • 503 model_not_found:Model ID 不在模型广场或未绑定上游渠道(如误用 doubao-seedream-5-0-lite-260501 等未接入 ID)
  • 4.5 / 4.0 模型传入 tools 会被上游拒绝;联网搜索须换用 Seedream 5.0

实际字段与错误码以模型服务返回为准;平台不做二次包装。

模型调用 · 创建视频生成任务

POST /video/generations

创建异步视频生成任务。TokenFusion 平台校验 API Key、模型权限与账户可用余额,预冻结费用后调用对应视频模型服务。成功时仅返回任务 ID,需轮询查询接口获取结果。

计费说明:视频任务会预冻结 TokenFusion 账户额度,任务进入终态后自动结算扣费并释放冻结。可用余额不足时返回 402

请求体(Request Body)

参数类型必填说明
modelstring模型 ID,须为当前账户有权使用的视频模型
contentarray输入内容数组,见下方 Content 对象说明
resolutionstring480p / 720p / 1080p
ratiostring16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive
durationinteger时长(秒);部分模型支持 -1 表示由模型决定
seedinteger随机种子,-1 表示随机
generate_audioboolean是否生成同步音频(支持的模型)
draftboolean样片模式(支持的模型)
camera_fixedboolean是否固定镜头
watermarkboolean是否添加水印
return_last_frameboolean是否返回尾帧图像 URL
service_tierstringdefaultflex
execution_expires_afterinteger任务超时阈值(秒),3600~259200
callback_urlstring任务终态回调地址(需平台开启托管回调功能)
toolsarray工具配置,如 [{"type":"web_search"}]
framesinteger帧数(部分模型)

Content 数组对象

文本对象

{ "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。

模型调用 · 查询视频生成任务

GET /video/generations/{task_id}

查询任务状态与结果。仅可查询当前 API Key 所属用户创建的任务。平台对同一任务有进程内查询缓存与最小间隔限制,轮询过快返回 429(响应头含 Retry-After)。

路径参数

参数类型说明
task_idstring创建任务时返回的 id

响应字段

字段类型说明
idstring任务 ID
modelstring模型 ID
statusstringqueued / running / succeeded / failed / cancelled / expired
internal_statusstring平台内部状态(与对外 status 映射不一致时出现)
content.video_urlstring成功时的视频 URL,请及时转存
content.last_frame_urlstring尾帧图片 URL(如创建时开启)
usage.total_tokensintegerToken 消耗(用于计费)
errorobject失败时的错误信息
created_at / updated_atintegerUnix 时间戳

请求示例

请求

curl https://api.xzzgm.cn/api/v1/video/generations/cgt-2025xxxxxx-xxxx \
  -H "Authorization: Bearer YOUR_API_KEY"

模型调用 · 取消视频生成任务

POST /video/generations/{task_id}/cancel

取消排队中的任务。仅 queued 状态可取消;响应结构与查询接口相同,返回取消后的任务状态。

请求

curl -X POST https://api.xzzgm.cn/api/v1/video/generations/cgt-2025xxxxxx-xxxx/cancel \
  -H "Authorization: Bearer YOUR_API_KEY"

模型调用 · 素材库(Assets API)

POST /assets/{Action}

面向火山方舟(Volcano Ark)素材库的统一代理接口,用于将图片、视频、音频等参考素材入库,并在生视频请求中通过 asset://{素材ID} 引用。平台使用服务端配置的 AK/SK 访问上游 Assets API,下游仅需平台 API Key,不可在 URL 中指定上游账号(如 ?account=...)。

字段命名与视频接口不同:素材库请求体字段使用 PascalCase(如 GroupIdProjectName);生视频 /video/generations 使用小写字段(如 modelcontent)。请勿混用命名风格。
权限与隔离:
  • 须已开通火山类视频模型访问权限(与 Seedance 等模型 ACL 一致),否则返回 403
  • 列表与查询仅返回当前 API Key 所属用户创建的素材组与素材。
  • 响应业务数据通常在 Result 字段中;空列表返回结构化空结果,而非报错。

推荐调用流程

  1. CreateAssetGroup — 创建素材组,记录返回的 Result.Id
  2. CreateAsset — 提交公网可访问的素材 URL,记录 Result.Id(素材 ID)。
  3. GetAsset — 每 3~5 秒轮询,直到 StatusActive(失败为 Failed)。
  4. POST /video/generations — 在 contentimage_url.url / video_url.url / audio_url.url 中填写 asset://{素材ID}

支持的 Action

以下操作均为 POST,路径中的 {Action} 与表内名称一致。

Action说明
CreateAssetGroup创建素材组
ListAssetGroups查询当前用户的素材组列表
GetAssetGroup查询单个素材组
UpdateAssetGroup更新素材组名称或描述
CreateAsset在指定素材组下提交素材(异步入库)
ListAssets查询当前用户的素材列表
GetAsset查询单个素材状态与 URL
UpdateAsset更新素材名称
DeleteAsset删除单个素材(暂不支持删除素材组)

请求头(Request Headers)

Header必填说明
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

通用字段

字段 / 枚举说明
ProjectName项目名,默认 default;创建素材时须与所属素材组一致
GroupType素材组类型,当前固定 AIGC
AssetTypeImage / Video / Audio
StatusProcessing(入库中)→ Active(可用于生视频)/ Failed
PageNumber / PageSize列表分页;PageSize 最大 100

创建素材组 · CreateAssetGroup

POST https://api.xzzgm.cn/api/v1/assets/CreateAssetGroup

参数类型必填说明
Namestring素材组名称,建议不超过 64 字符
Descriptionstring描述,建议不超过 300 字符
GroupTypestring固定传 AIGC
ProjectNamestring默认 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"
  }
}

创建素材 · CreateAsset

POST https://api.xzzgm.cn/api/v1/assets/CreateAsset

参数类型必填说明
GroupIdstring所属素材组 ID,须为当前用户已创建的组
URLstring公网可访问素材地址(当前仅支持 URL,不支持 Base64)
AssetTypestringImage / Video / Audio
Namestring素材名称,便于列表检索
ProjectNamestring须与素材组一致,默认 default

成功仅表示已提交预处理队列;新素材默认 Processing,须轮询 GetAssetActive 后再用于生视频。图片/视频/音频的格式与大小限制以火山方舟素材库文档为准。

请求

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"
  }
}

查询素材 · GetAsset

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,可按 GroupIdsStatusesName 过滤。

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"
}'

ListAssetGroupsGetAssetGroupUpdateAssetGroupUpdateAssetDeleteAsset 路径分别为 /assets/{Action},请求体字段与火山方舟 Assets API 一致,由平台透传并维护本地归属记录。

在生视频中引用素材

素材 StatusActive 后,在创建视频任务时使用 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 状态码与响应体透传,平台不做二次包装。

管理接口 · 查询账户余额

POST /user/balance

客户可使用平台登录账号和密码查询账户余额。账号即注册邮箱。该接口不会创建登录会话,也不会返回 API Key 或访问令牌;请不要将密码放入 URL Query。

请求体

参数类型必填说明
accountstring二选一登录邮箱;与 email 等价,推荐用 account
emailstring二选一account 的别名
passwordstring平台登录密码

响应体

字段类型说明
accountstring账户邮箱
balancenumber账户总余额(元),保留 4 位小数
reserved_balancenumber已冻结额度(元),如视频任务预冻结
available_balancenumber可用余额 = 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 文生视频、图生视频、快速出片

产品与计费

大语言模型(生文)

图片生成模型(生图)

素材库(Assets)

视频生成模型(生视频)

余额查询

管理接口返回的 available_balance 可用于判断视频任务是否可创建。

错误与状态码

HTTP 状态码典型场景响应体格式
200请求成功(含模型服务业务错误透传时的 HTTP 200 + error 字段,见生文/生图说明)业务 JSON 或 SSE
400参数不合法、视频任务创建被模型服务拒绝{"detail": ...}
401API Key 无效/缺失;余额查询账号或密码错误{"detail":"..."}
402视频任务创建时 TokenFusion 可用余额不足(需预冻结){"detail":"..."}
403账户已禁用;无权调用素材库;无权访问素材引用;模型 ACL 拒绝{"detail":"..."}
404视频任务不存在;素材组/素材不存在(或不属于当前用户){"detail":"..."}
422请求体 JSON Schema 校验失败(如缺少必填字段、类型错误){"detail":[...]}
429视频任务查询轮询过频;余额查询密码错误次数过多{"detail":"..."}
502 / 504平台服务、模型通道或素材库上游不可用/超时{"detail":"..."} 或上游原文 / OpenAI error
503素材库服务未配置;对应模型能力暂未开放;无可用模型通道{"detail":"..."}

集成建议

  1. 生文流式:设置 stream: true,按 SSE 规范解析 data: 行;深度推理时同时监听 delta.reasoning_contentdelta.content
  2. 生文续写:末条 assistant 消息填前缀,并设 continue_final_message: trueadd_generation_prompt: false
  3. 生文多模态:图片/视频用 Pro 模型;音频理解优先 doubao-seed-2-0-lite-260428,勿在 Chat 中使用 audio_url
  4. 生图流式:设置 stream: true 并传 Accept: text/event-stream;监听 image_generation.partial_succeeded 逐张渲染,以 data: [DONE] 结束。
  5. 生图模式选型:文生图/图生图/融合/组图通过 imagesequential_image_generation 组合切换;联网搜索须使用 Seedream 5.0(doubao-seedream-5-0-260128)。
  6. 生视频异步:创建任务后每 5~10 秒轮询查询接口;收到 429 时遵循 Retry-After 退避。
  7. 素材入库CreateAsset 后轮询 GetAssetActive 再调用生视频;素材库用 PascalCase,生视频用小写字段。
  8. asset:// 引用:仅用于支持素材引用的火山视频模型;须为当前用户已入库且状态为 Active 的素材。
  9. 及时转存:视频、生图与素材库返回的 URL 通常有时效,请在成功后尽快下载到自有存储。
  10. 错误处理:区分平台鉴权错误(detail)与 OpenAI 兼容格式的模型错误(error 对象);生图 503 model_not_found 多为 Model ID 未在模型广场绑定渠道。
  11. 余额监控:视频业务建议定期调用余额查询接口或关注控制台用量页。
  12. 模型选型:以模型广场实时列表为准,勿硬编码已下线或未接入的 Model ID。