https://api.cgcm-api.comSeeAPI 开发文档
创建生成任务、接入素材并交付结果。按目录查看各模型的参数与请求示例。
开始接入
认证与安全
外部 API 使用 API Key 认证。创建 API Key 时,完整密钥只展示一次;之后控制台只展示 key_prefix, 请在服务端安全保存密钥,不要放进前端代码、日志、截图或工单。
- 所有公开 API 请求都带
Authorization: Bearer sk_live_...。 - API Key 无效返回
401 invalid_api_key;被暂停或禁用返回 403 系列错误。 - 可在控制台为每个 API Key 选择模型范围;该范围只能缩小当前客户分组已有权限,不能开通分组外模型。 未选择模型时,Key 保持对当前分组全部模型的访问。
- 使用受限 Key 请求范围外模型时,会在创建任务和扣费前返回
403 model_not_available; 携带该 Key 调用GET /v1/models只返回它可访问的模型。 - 建议每次提交任务都带业务侧唯一
Idempotency-Key,例如订单号或请求流水号。
模型列表GET/v1/models
返回当前账户可调用的模型和输入能力 schema;示例为响应节选。
curl https://api.cgcm-api.com/v1/models \
-H "Authorization: Bearer sk_live_xxx"
# 响应示例
{
"object": "list",
"data": [
{
"id": "seedance-2.0",
"object": "model",
"code": "seedance-2.0",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "duration", "aspect_ratio", "resolution"],
"properties": {
"duration": { "enum": [-1, 4, 5, 6, "...", 15] },
"resolution": { "enum": ["480p", "720p", "1080p", "4k"] },
"aspect_ratio": { "enum": ["adaptive", "16:9", "4:3", "1:1", "3:4", "9:16", "21:9"] },
"count": { "enum": [1, 2, 4], "default": 1 },
"mode": { "enum": ["text2video", "singleImage2video", "frames2video", "image2video", "mixed2video"] },
"generate_audio": { "type": "boolean", "default": true },
"search_enabled": { "type": "boolean", "default": true },
"reference_image_urls": { "type": "array", "maxItems": 9 },
"reference_video_urls": { "type": "array", "maxItems": 3 },
"reference_audio_urls": { "type": "array", "maxItems": 3, "description": "MP3 or WAV; requires an image or video reference" }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "seedance-2.0-fast",
"object": "model",
"code": "seedance-2.0-fast",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "duration", "aspect_ratio", "resolution"],
"properties": {
"duration": { "enum": [-1, 4, 5, 6, "...", 15] },
"resolution": { "enum": ["480p", "720p"] },
"count": { "enum": [1, 2, 4], "default": 1 },
"generate_audio": { "type": "boolean", "default": true },
"search_enabled": { "type": "boolean", "default": true }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "happy-horse-1.1",
"object": "model",
"code": "happy-horse-1.1",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "duration", "aspect_ratio", "resolution"],
"properties": {
"duration": { "enum": [3, 4, 5, "...", 15] },
"resolution": { "enum": ["720p", "1080p"] },
"aspect_ratio": { "enum": ["16:9", "9:16", "1:1", "4:3", "3:4"] },
"count": { "enum": [1], "default": 1 },
"mode": { "enum": ["text2video", "frames2video", "image2video"] },
"reference_image_urls": { "type": "array", "maxItems": 9 }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "minimax-h3",
"object": "model",
"code": "minimax-h3",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "duration", "aspect_ratio", "resolution"],
"properties": {
"duration": { "enum": [5,6,7,8,9,10,11,12,13,14,15] },
"resolution": { "enum": ["768P","2K"] },
"aspect_ratio": { "enum": ["adaptive","21:9","16:9","4:3","1:1","3:4","9:16"] },
"count": { "enum": [1,2,4], "default": 1 },
"mode": { "enum": ["text2video","singleImage2video","frames2video","mixed2video"] },
"reference_image_urls": { "type": "array", "maxItems": 9 },
"reference_video_urls": { "type": "array", "maxItems": 3 },
"reference_audio_urls": { "type": "array", "maxItems": 3, "description": "MP3 or WAV; requires an image or video reference" }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "image-2-pro",
"object": "model",
"code": "image-2-pro",
"owned_by": "seeapi",
"modality": "image",
"execution_mode": "sync",
"input_schema": {
"oneOf": [
{
"type": "object",
"required": [
"model",
"prompt",
"size"
],
"properties": {
"model": {
"const": "image-2-pro"
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"n": {
"type": "integer",
"enum": [
1
],
"default": 1
},
"response_format": {
"type": "string",
"enum": [
"b64_json",
"url"
],
"default": "b64_json"
},
"output_format": {
"type": "string",
"enum": [
"jpeg",
"png"
],
"default": "jpeg"
},
"quality": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"moderation": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x864",
"1360x1024",
"1536x1024",
"864x1536",
"1024x1360",
"1024x1536",
"2048x2048",
"3072x1728",
"2720x2048",
"3072x2048",
"1728x3072",
"2048x2720",
"2048x3072",
"3840x2160",
"3264x2448",
"3520x2336",
"2160x3840",
"2448x3264",
"2336x3520"
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"model",
"prompt",
"size",
"input_reference"
],
"properties": {
"model": {
"const": "image-2-pro"
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"n": {
"type": "integer",
"enum": [
1
],
"default": 1
},
"response_format": {
"type": "string",
"enum": [
"b64_json",
"url"
],
"default": "b64_json"
},
"output_format": {
"type": "string",
"enum": [
"jpeg",
"png"
],
"default": "jpeg"
},
"quality": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"moderation": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x864",
"1360x1024",
"1536x1024",
"864x1536",
"1024x1360",
"1024x1536",
"2048x2048",
"3072x1728",
"2720x2048",
"3072x2048",
"1728x3072",
"2048x2720",
"2048x3072",
"3840x2160",
"3264x2448",
"3520x2336",
"2160x3840",
"2448x3264",
"2336x3520"
]
},
"input_reference": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 29360128,
"pattern": "^data:image\\/(png|jpeg|jpg|webp);base64,[A-Za-z0-9+/]+={0,2}$"
},
{
"type": "string",
"minLength": 1,
"maxLength": 4096,
"format": "uri",
"pattern": "^https:\\/\\/.+"
}
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"model",
"prompt",
"size",
"input_references"
],
"properties": {
"model": {
"const": "image-2-pro"
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"n": {
"type": "integer",
"enum": [
1
],
"default": 1
},
"response_format": {
"type": "string",
"enum": [
"b64_json",
"url"
],
"default": "b64_json"
},
"output_format": {
"type": "string",
"enum": [
"jpeg",
"png"
],
"default": "jpeg"
},
"quality": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"moderation": {
"type": "string",
"enum": [
"auto"
],
"default": "auto"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1536x864",
"1360x1024",
"1536x1024",
"864x1536",
"1024x1360",
"1024x1536",
"2048x2048",
"3072x1728",
"2720x2048",
"3072x2048",
"1728x3072",
"2048x2720",
"2048x3072",
"3840x2160",
"3264x2448",
"3520x2336",
"2160x3840",
"2448x3264",
"2336x3520"
]
},
"input_references": {
"oneOf": [
{
"type": "array",
"minItems": 1,
"maxItems": 6,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 29360128,
"pattern": "^data:image\\/(png|jpeg|jpg|webp);base64,[A-Za-z0-9+/]+={0,2}$"
}
},
{
"type": "array",
"minItems": 1,
"maxItems": 6,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"format": "uri",
"pattern": "^https:\\/\\/.+"
}
}
]
}
},
"additionalProperties": false
}
]
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "seedream-5.0-pro",
"object": "model",
"code": "seedream-5.0-pro",
"owned_by": "seeapi",
"modality": "image",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt"],
"properties": {
"size": { "type": "string", "pattern": "^(?:1K|2K|4K|[1-9][0-9]{0,4}x[1-9][0-9]{0,4})$", "default": "2K" },
"n": { "enum": [1], "default": 1 },
"response_format": { "enum": ["url"], "default": "url" },
"output_format": { "enum": ["png"], "default": "png" },
"watermark": { "type": "boolean", "default": false },
"input_reference": { "type": "string", "description": "one active asset://ref_... image" },
"input_references": { "type": "array", "minItems": 1, "maxItems": 6, "description": "active asset://ref_... images" }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "grok-imagine-video-1.5-preview",
"object": "model",
"code": "grok-imagine-video-1.5-preview",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "input_reference", "seconds", "size"],
"properties": {
"input_reference": { "description": "single base64 image data URL or HTTPS image URL" },
"seconds": { "enum": [1, 2, 3, "...", 15] },
"size": { "enum": ["1280x720", "720x1280"] }
}
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "grok-imagine-video-1.5-preview-pro",
"object": "model",
"code": "grok-imagine-video-1.5-preview-pro",
"owned_by": "seeapi",
"modality": "video",
"execution_mode": "async",
"input_schema": {
"required": ["model", "prompt", "seconds", "size"],
"properties": {
"input_reference": { "description": "single base64 image data URL or HTTPS image URL" },
"input_references": { "description": "1 to 7 base64 image data URLs or HTTPS image URLs", "minItems": 1, "maxItems": 7 },
"seconds": { "enum": [1, 2, 3, "...", 15] },
"size": { "enum": ["1280x720", "720x1280"] }
},
"oneOf": [
{ "required": ["input_reference"] },
{ "required": ["input_references"] }
]
},
"pricing_rule": { "currency": "credits" }
},
{
"id": "gpt-5.5",
"object": "model",
"code": "gpt-5.5",
"owned_by": "seeapi",
"modality": "text",
"execution_mode": "sync",
"input_modalities": ["text", "image"],
"input_schema": {
"required": ["model", "messages"],
"properties": {
"messages": { "type": "array", "description": "text and image content parts only" },
"max_completion_tokens": { "type": "integer" },
"stream": { "type": "boolean" }
}
},
"pricing_rule": { "currency": "credits" }
}
]
}查询余额GET/v1/credits
返回账户余额、币种和因余额不足暂停的 API Key 数量。
curl https://api.cgcm-api.com/v1/credits \
-H "Authorization: Bearer sk_live_xxx"
# 响应示例
{
"balance_units": 12000000,
"currency": "credits",
"price_tier": "retail",
"paused_api_keys": 0
}视频生成
提交视频任务POST/v1/video/generations
创建异步视频生成任务。成功时返回 202 Accepted 和任务 ID。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20260510-0001" \
-d '{
"model": "seedance-2.0",
"prompt": "基于产品参考图生成一段自然柔光下的展示视频。",
"reference_image_urls": [
"https://media.example.com/reference/product.jpg"
],
"reference_video_urls": [
"https://media.example.com/reference/action.mp4"
],
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "720p",
"count": 1,
"generate_audio": true,
"search_enabled": true,
"callback_url": "https://client.example.com/webhooks/seeapi"
}'视频任务字段
| 字段 | 要求 | 说明 |
|---|---|---|
model | 必填 | 模型 ID,以当前 API Key 调用 /v1/models 的结果为准。 |
prompt | 必填 | 视频提示词,最多 60,000 字符。Happy Horse 1.1 最多 4,000 字符。 |
reference_image_urls | 按模式 | 参考图片数组。可用类型和数量见各模型章节。 |
reference_video_urls | 按模式 | 参考视频数组。可用类型、数量和时长见各模型章节。 |
reference_audio_urls | 按模式 | 参考音频数组。可用类型、数量和时长见各模型章节。 |
duration | 必填 | 输出时长。普通生成填写模型支持的整数秒,其他取值见模型章节。 |
aspect_ratio | 必填 | 画幅比例。使用模型支持的取值,例如 16:9。 |
resolution | 通常必填 | 输出分辨率。按各模型章节提供的大小写填写。 |
count | 可选 | 输出条数。默认为 1,各模型的可用条数见模型章节。 |
mode | 按模型 | 生成模式。可用取值和推断规则见各模型章节。 |
generate_audio | 按模型 | 是否生成声音。Seedance 和 Wan 3.0 默认开启。 |
search_enabled | 按模型 | 是否使用搜索增强。Seedance 默认开启。 |
callback_url | 可选 | 接收任务 Webhook 通知的 HTTPS 地址。 |
Seedance 输入模式
使用 POST /v1/video/generations。请求头和通用参数见 视频任务字段。
模型规格与参考素材
| model | resolution | duration | 图片 / 视频 / 音频上限 |
|---|---|---|---|
| seedance-2.0 | 480p、720p、1080p、4k | 4~15 秒整数;智能时长传 -1 | 9 / 3 / 3,合计 15 |
| seedance-2.0-fast | 480p、720p | 4~15 秒整数;智能时长传 -1 | 9 / 3 / 3,合计 15 |
| seedance-2.0-mini | 480p、720p | 4~15 秒整数;智能时长传 -1 | 9 / 3 / 3,合计 15 |
| seedance-2.5 | 480p、720p、1080p | 4~30 秒整数;智能时长传 -1;编辑传 0 | 30 / 10 / 10,合计 50 |
| 字段 | 素材格式 | 单文件体积上限 |
|---|---|---|
| reference_image_urls | PNG、JPG/JPEG、WebP | 30 MiB |
| reference_video_urls | MP4、MOV | 384 MiB |
| reference_audio_urls | MP3、WAV | 25 MiB |
素材可使用公网 HTTPS 文件直链、当前账号有效的 asset_uri,或在同一请求中组合两种方式。
- 使用可直接下载的公网 HTTPS 文件链接,无需登录、Cookie 或额外认证请求头;网盘分享页和网页预览地址不属于文件直链。
- 支持有效签名链接,有效期应覆盖提交及素材读取过程。URL 最长 2048 字符,使用默认 HTTPS 端口,不含用户名、密码或 # 片段;不接受内网、回环和本地文件地址。
- 同一请求素材体积合计不超过 1 GiB,1 MiB = 1,048,576 字节。不使用的素材字段直接省略,不传空数组、空字符串或 null;同一字段内不重复链接或 URI。
- 图片短边至少 300 像素,宽/高比例在 0.39~2.5 之间,文件须可正常解码。
- Seedance 2.0 系列每段参考视频最长 15 秒;2.5 每段最长 30 秒且所有视频合计不超过 30 秒。输入时长由文件信息读取,不需要另传时长字段。
- 参考音频时长单独校验:2.0 系列每段及所有音频合计均不超过 15.2 秒;2.5 每段及合计均不超过 30 秒,恰好 30 秒可用。
- 本地文件可上传至 素材库,再用当前账号有效的
asset_uri。API 上传、查询和删除见 Seedance 素材库。
选择模式
常规生成可选 1、2 或 4 条,默认 1。画幅支持 adaptive、16:9、4:3、1:1、3:4、9:16、21:9。视频编辑沿用输入视频画幅。
自动判断时直接省略 mode,不要填写 auto、空字符串或 null。系统按素材类型、数量和 duration 判断,不按提示词猜测编辑意图。
| Seedance 2.0 / Fast / Mini 请求素材 | 省略 mode 时的模式 |
|---|---|
| 无参考 | text2video |
| 仅一张图片 | singleImage2video |
| 仅多张图片 | image2video |
| 含视频,或图片与音频组合 | mixed2video |
2.0 系列音频必须搭配至少一张图片或一段视频。两张图片自动按普通多图参考处理;需要首尾帧时显式传 frames2video,数组第一张是首帧、第二张是尾帧,只有一张时表示首帧。
| 2.0 系列显式 mode | 用途 | 素材要求 |
|---|---|---|
| text2video | 文生视频 | 不传任何参考素材。 |
| singleImage2video | 单图生视频 | 只传 1 张参考图。 |
| frames2video | 首帧 / 首尾帧生视频 | 只传 1 到 2 张参考图;1 张表示首帧,2 张时数组第一张是首帧、第二张是尾帧。 |
| image2video | 多图参考生视频 | 只传 1 到 9 张普通参考图;图片用于主体、场景或风格参考,不表示首尾帧。 |
| mixed2video | 全能 / 多模态参考生视频 | 可组合图片、视频和音频,合计 1 到 15 个;音频不能单独使用。 |
| Seedance 2.5 请求条件 | 省略 mode 时的模式 |
|---|---|
| 无参考素材,整数输出秒数或 duration=-1 | text2video |
| 图片、视频、音频任意一种或组合,整数输出秒数或 duration=-1 | mixed2video |
| duration=0、恰好一段视频、aspect_ratio=adaptive,无音频 | videoEdit2video |
| 2.5 显式 mode | 用途 | 素材要求 |
|---|---|---|
| text2video | 文生视频 | 不传任何参考素材。 |
| mixed2video | 全能生视频 | 至少传入图片、视频或音频中的一种;三类素材可以任意组合。 |
| videoEdit2video | 视频编辑 | 必须传 1 段视频,可再传最多 30 张图片,不传音频;duration=0、aspect_ratio=adaptive 表示自动。 |
| frames2video | 首帧 / 首尾帧生视频 | 显式传 mode=frames2video,只传 1 到 2 张图片;第一张为首帧,第二张为尾帧,不传视频或音频。 |
2.5 支持纯音频参考,可传 1~10 段音频,每段及合计均不超过 30 秒;仅有音频时省略 mode 或显式传 mixed2video。视频编辑可附加最多 30 张图片,输出时长和画幅由输入视频决定,时长可能存在轻微差异;编辑素材使用 4~30 秒视频。 普通视频参考生成使用指定的整数秒数或智能时长确定的整数秒数,输入与输出时长可以不同。duration=-1 不会选择视频编辑;2.5 首尾帧须显式传 frames2video,只传 1~2 张图片,按首帧、尾帧顺序;不传视频或音频。省略 mode 时图片仍按全能参考处理;2.5 不使用 singleImage2video 或 image2video。
智能时长
传 JSON 整数 -1,由模型在上表范围内选定输出时长。多条输出共用本次选定的时长。提交前估算仅供参考,创建响应的 estimated_cost 为本次任务金额。需要固定时长时,直接填写整数秒。
样片与正片
用 seedance-2.5 和 draft: true 生成一条 480p 样片,count 固定为 1,省略 resolution 时默认 480p。支持文生、全能参考和首尾帧。全能参考可组合图片、视频和音频,视频也可来自素材库。
- 查询样片,等状态为
succeeded。响应含draft_final_available: true时,可在有效期内申请转正片。 - 调用
POST /v1/video/drafts/{draft_id}/final/estimate,取得estimated_cost。正片独立计费,以当前账号报价为准。 - 将报价返回的整数
amount_units放入confirmed_amount_units,调用POST /v1/video/drafts/{draft_id}/final。返回202和新的正片任务 ID,用该 ID 查询结果。相同样片重复确认返回原正片任务。
正片为 1080p,沿用原样片的提示词、参考素材、时长和画幅。需要调整内容时,请先生成新样片。404 draft_final_unavailable 表示这条样片当前不可转,409 customer_pricing_changed 表示需要重新报价。也可在 视频制作 的样片结果中查看报价并确认。
文生样片请求示例
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-25-draft-order-20261026-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "镜头缓慢推进,展示晨光下静止的蓝色陶瓷杯,保持画面连续。",
"duration": 4,
"aspect_ratio": "16:9",
"resolution": "480p",
"count": 1,
"mode": "text2video",
"draft": true
}'带视频参考的样片与转正片示例
BASE_URL="https://api.cgcm-api.com"
# 创建带视频参考的样片,保存响应的 id
curl "$BASE_URL/v1/video/generations" \
-H "Authorization: Bearer $SEEAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: sample-business-task-001" \
-d '{"model":"seedance-2.5","prompt":"参考运镜,生成海边日出","draft":true,
"mode":"mixed2video","duration":4,"aspect_ratio":"16:9","reference_video_urls":["asset://ref_xxx"]}'
DRAFT_ID="job_xxx"
# 查询样片任务,等待可转正片
curl "$BASE_URL/v1/tasks/$DRAFT_ID" -H "Authorization: Bearer $SEEAPI_API_KEY"
# 取得 1080p 正片报价
curl -X POST "$BASE_URL/v1/video/drafts/$DRAFT_ID/final/estimate" \
-H "Authorization: Bearer $SEEAPI_API_KEY"
# 将报价响应的 estimated_cost.amount_units 填入下方
FINAL_AMOUNT_UNITS="<amount_units>"
curl -X POST "$BASE_URL/v1/video/drafts/$DRAFT_ID/final" \
-H "Authorization: Bearer $SEEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d "$(printf '{"confirmed_amount_units":%s}' "$FINAL_AMOUNT_UNITS")"Seedance 智能时长(duration=-1)POST/v1/video/generations
用整数 -1 让模型选择输出时长。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: smart-duration-business-task-0001" \
-d '{
"model": "seedance-2.0-fast",
"prompt": "产品在自然柔光下缓慢旋转展示,镜头平稳推进。",
"duration": -1,
"aspect_ratio": "9:16",
"resolution": "720p",
"mode": "text2video",
"count": 1
}'Seedance 首尾帧生视频POST/v1/video/generations
示例展示 Seedance 2.0 的首尾帧顺序。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-frames-order-20260807-0001" \
-d '{
"model": "seedance-2.0-mini",
"prompt": "从首帧自然运动到尾帧,保持人物、服装和场景连续。",
"reference_image_urls": [
"https://media.example.com/reference/first.jpg",
"https://media.example.com/reference/last.jpg"
],
"duration": 4,
"aspect_ratio": "9:16",
"resolution": "480p",
"count": 1,
"mode": "frames2video",
"generate_audio": false
}'Seedance 多模态参考生视频POST/v1/video/generations
示例组合图片、视频和音频。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-mixed-order-20260807-0001" \
-d '{
"model": "seedance-2.0-mini",
"prompt": "综合图片主体、视频动作和音频节奏生成连续镜头。",
"reference_image_urls": [
"https://media.example.com/reference/product.jpg"
],
"reference_video_urls": [
"https://media.example.com/reference/action.mp4"
],
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 4,
"aspect_ratio": "9:16",
"resolution": "480p",
"count": 1,
"mode": "mixed2video",
"generate_audio": true
}'Seedance 2.5 首尾帧生视频POST/v1/video/generations
显式指定 frames2video,按首帧、尾帧顺序填写两张图片。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-25-frames-order-20261007-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "从首帧自然运动到尾帧,保持主体与场景连续。",
"reference_image_urls": [
"https://media.example.com/reference/first.jpg",
"https://media.example.com/reference/last.jpg"
],
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1,
"mode": "frames2video",
"generate_audio": false
}'Seedance 2.5 文生视频POST/v1/video/generations
不传参考素材;mode 可省略,也可以明确指定 text2video。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-25-text-order-20260814-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "生成一段自然光下的城市街景镜头,运镜平稳,画面连续。",
"duration": 12,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1,
"mode": "text2video",
"generate_audio": true,
"search_enabled": true
}'Seedance 2.5 全能生视频POST/v1/video/generations
显式选择 mixed2video,并组合三种参考素材。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-25-mixed-order-20260814-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "综合参考素材中的主体、动作和音乐节奏,生成风格统一的连续镜头。",
"reference_image_urls": [
"https://media.example.com/reference/product.jpg"
],
"reference_video_urls": [
"https://media.example.com/reference/action.mp4"
],
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 12,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1,
"mode": "mixed2video",
"generate_audio": true,
"search_enabled": true
}'Seedance 2.5 单音频参考POST/v1/video/generations
仅填写音频直链,其他参考字段省略。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-audio-business-task-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "根据音频的音乐节奏生成连续画面,动作与节奏自然同步。",
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 12,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1,
"generate_audio": true
}'Seedance 2.5 视频编辑POST/v1/video/generations
恰好一段视频,可附加图片,不传音频。duration=0、aspect_ratio=adaptive 时,省略 mode 会自动选择 videoEdit2video;输出时长和画幅由输入视频决定。示例展示显式模式。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedance-25-edit-order-20260814-0001" \
-d '{
"model": "seedance-2.5",
"prompt": "保持原视频主体和动作连续性,按参考图片调整整体视觉风格。",
"reference_video_urls": [
"https://media.example.com/reference/source.mp4"
],
"reference_image_urls": [
"https://media.example.com/reference/style.jpg"
],
"duration": 0,
"aspect_ratio": "adaptive",
"resolution": "720p",
"count": 1,
"mode": "videoEdit2video",
"generate_audio": true,
"search_enabled": true
}'Wan 3.0
wan3.0-video 与 wan3.0-video-prime 都通过统一的视频任务接口创建异步任务。 当前账号的最终可用状态和精确价格,以携带该账号 API Key 调用 GET /v1/models 的返回为准。
| 输入形态 | 使用方式 | 计费秒数 |
|---|---|---|
| 不含参考视频 | text2video 不传素材;frames2video 传 1 到 2 张首尾帧图片;mixed2video 可使用图片或图片加音频。 | 输出时长 |
| 含参考视频 | 使用 mixed2video 并传 reference_video_urls;可再组合图片和音频参考。 | 输出时长 + 参考视频总时长 |
- 输出时长为 2 到 30 秒,支持
480P、720P、1080P。 - 画幅支持
adaptive、16:9、4:3、1:1、3:4、9:16,每次固定生成 1 条视频。 text2video不传参考素材;frames2video传 1 到 2 张首尾帧图片;mixed2video可组合图片、视频和音频。- 最多 10 张图片、5 段视频、5 段音频,三类合计最多 15 个参考素材。
- 每段参考视频为 1 到 15 秒,参考视频总时长不超过 15 秒,参考视频总时长加输出时长不超过 30 秒。
- 不含参考视频:费用 = 输出时长 × 对应模型和分辨率的每计费秒单价。
- 含参考视频:费用 =(输出时长 + 参考视频总时长)× 对应模型和分辨率的每计费秒单价。
- 图片和音频参考本身不增加时长费用;是否生成声音也不改变单价。
- 例如输出 2 秒并使用 5 秒参考视频,共按 7 秒计费。
Wan 3.0 不含参考视频POST/v1/video/generations
Prime 的最小文生视频请求。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: wan30-prime-order-20260827-0001" \
-d '{
"model": "wan3.0-video-prime",
"prompt": "生成一段具有电影感的城市夜景推进镜头,运动自然、画面稳定。",
"duration": 2,
"aspect_ratio": "16:9",
"resolution": "480P",
"count": 1,
"mode": "text2video",
"generate_audio": false
}'Wan 3.0 含参考视频POST/v1/video/generations
使用本账号的有效视频素材引用。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: wan30-video-reference-order-20260827-0001" \
-d '{
"model": "wan3.0-video",
"prompt": "参考已有视频的镜头运动和节奏,生成一段新的城市夜景镜头。",
"reference_video_urls": [
"asset://ref_video_xxx"
],
"duration": 2,
"aspect_ratio": "16:9",
"resolution": "480P",
"count": 1,
"mode": "mixed2video",
"generate_audio": false
}'可灵 4.0
kling-4.0 支持文生视频和图片、视频全能参考。使用 POST /v1/videos 提交,成功后取得任务 ID,可通过 GET /v1/videos/{task_id} 查询。
resolution可传720p或1080p,duration为 3 到 30 秒的整数,count可传1、2或4。aspect_ratio支持16:9、9:16、1:1和21:9。全能参考还支持adaptive。mode为text2video时不传参考素材。使用mixed2video时至少传 1 个素材,支持最多 10 张图片和 5 段视频,合计最多 15 个。- 参考素材先通过 普通参考素材接口 上传。把当前账号的有效
asset_uri填入reference_image_urls或reference_video_urls。每段参考视频为 3 到 30 秒,支持 MP4 和 MOV。
可灵 4.0 文生视频POST/v1/videos
用提示词创建一条 5 秒的 720p 视频。
curl https://api.cgcm-api.com/v1/videos \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: kling4-text-0001" \
-d '{
"model": "kling-4.0",
"prompt": "清晨的海边,镜头平稳推进,海浪轻拍礁石。",
"mode": "text2video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1
}'可灵 4.0 全能参考生视频POST/v1/videos
组合一张参考图和一段参考视频。不需要参考图时可省略 reference_image_urls。
curl https://api.cgcm-api.com/v1/videos \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: kling4-reference-0001" \
-d '{
"model": "kling-4.0",
"prompt": "参考视频中的镜头运动和节奏,生成一段雨后城市街景。",
"mode": "mixed2video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"count": 1,
"reference_image_urls": [
"asset://ref_image_xxx"
],
"reference_video_urls": [
"asset://ref_video_xxx"
]
}'MiniMax H3
minimax-h3 使用统一的视频任务接口。以下能力、输入模式、素材限制和计费规则构成完整客户契约; 当前账号是否可用以及精确单价,始终以携带该账号 API Key 调用 GET /v1/models 的返回为准。
| 能力 | 客户边界 |
|---|---|
| 输出规格 | 支持 768P、2K,支持 5 到 15 秒。 |
| 画幅 | adaptive、21:9、16:9、4:3、1:1、3:4、9:16。 |
| 生成数量 | count 支持 1、2、4;素材输入和费用按 count 共同乘算。 |
| 参考图 | 最多 9 张。 |
| 参考视频 | 最多 3 段;每段 2 到 15 秒,总时长不超过 15 秒。 |
| 参考音频 | 最多 3 段,只支持 MP3/WAV,必须同时提供图片或视频参考。 |
| 混合素材总数 | 图片、视频和音频合计最多 15 个。 |
| mode | 用途 | 素材要求 |
|---|---|---|
text2video | 文生视频 | 不传参考素材。 |
singleImage2video | 单图生视频 | 传 1 张参考图,aspect_ratio 必须为 adaptive。 |
frames2video | 首尾帧生视频 | 传 1 到 2 张参考图,aspect_ratio 必须为 adaptive。 |
mixed2video | 全能参考生视频 | 可组合图片、视频和音频;音频不能单独使用。 |
- 参考图片、视频和音频都先上传到
/v1/assets/references/upload,任务中使用当前账号获得的asset_uri。 - 参考视频时长从上传后记录的可信素材元数据读取,客户不需要额外填写时长。
- 费用公式为:
count ×(输出秒数 × 输出每秒单价 + 参考视频总秒数 × 输入每秒单价)。 - 图片和音频参考本身不增加每秒费用;参考视频输入按实际总秒数计费。
- 请求会在任务创建、扣费和提交生成服务前校验素材数量、组合方式和参考视频时长。
MiniMax H3 全能参考生视频POST/v1/video/generations
完整示例同时使用图片、视频和音频参考;不需要的素材字段可以删除,但 mode 必须与实际素材组合一致。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: minimax-h3-order-20260804-0001" \
-d '{
"model": "minimax-h3",
"prompt": "保持人物、服装和场景一致,生成自然连续的电影感动作。",
"duration": 8,
"aspect_ratio": "16:9",
"resolution": "768P",
"count": 1,
"mode": "mixed2video",
"reference_image_urls": [
"asset://ref_image_xxx"
],
"reference_video_urls": [
"asset://ref_video_xxx"
],
"reference_audio_urls": [
"asset://ref_audio_xxx"
],
"callback_url": "https://client.example.com/webhooks/seeapi"
}'Happy Horse 1.1
happy-horse-1.1 支持文生视频、单图首帧及 1–9 张参考图。输出为 720p 或 1080p、3–15 秒,每次 1 条。画幅支持 16:9、9:16、1:1、4:3 和 3:4。参考素材仅接受普通图片。
Grok 图片参考生视频POST/v1/videos
preview 要求单张图片参考;preview-pro 要求 1–7 张图片参考,不支持纯文生视频。两者都支持横竖 720P 和 1–15 秒任意整数。
curl https://api.cgcm-api.com/v1/videos \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: video-order-20260703-0001" \
-d '{
"model": "grok-imagine-video-1.5-preview",
"prompt": "让参考图中的画面产生轻微电影感推进,保持自然、简洁。",
"input_reference": "https://client.example.com/reference.png",
"seconds": 4,
"size": "1280x720"
}'图片参考生视频字段
| 字段 | 要求 | 说明 |
|---|---|---|
model | 必填 | 推荐使用 grok-imagine-video-1.5-preview 或 grok-imagine-video-1.5-preview-pro;旧 grok-imagine-video 仅作兼容入口。 |
prompt | 必填 | 视频提示词,1 到 4000 字符。 |
input_reference | 条件必填 | 两个模型都不支持纯文生视频。preview 必须传 1 张图;preview-pro 传 1 张图时可用 input_reference,传 1 到 7 张图时可用 input_references,两个字段不能同时传。推荐使用非敏感、可公开访问的 HTTPS 图片 URL。Base64 data URL 只建议用于 700 KB 以内的小图。 |
seconds | 必填 | 两个新模型支持 1 到 15 秒任意整数;旧兼容入口仍为 4 到 15 秒。 |
size | 必填 | 当前支持 1280x720 和 720x1280。 |
callback_url | 可选 | 接收任务 Webhook 通知的地址;生产环境请使用 HTTPS。 |
图片生成
同步图片生成POST/v1/images/generations
创建同步图片生成任务。成功响应会返回 base64 图片内容,客户侧可保存为图片文件。
curl https://api.cgcm-api.com/v1/images/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-order-20260703-0001" \
-d '{
"model": "image-2-pro",
"prompt": "一张干净的产品主图,白色背景,柔和自然光。",
"size": "1024x1024",
"n": 1,
"response_format": "b64_json"
}'Image2 Pro
image-2-pro 和 image-2.5 提供同步与异步两种入口,默认 n=1、quality=auto、moderation=auto。Image2 Pro 默认 output_format=jpeg;Image2.5 仅支持 PNG,默认 output_format=png。当前请求尺寸以鉴权后的模型列表为准;生成结果的实际宽高可能由模型微调,以返回图像为准。
- 同步
/v1/images/generations默认返回 b64_json,也可指定 url;JSON 参考图使用同一种 HTTPS 或 data URL,不接受 asset://。本地文件使用 multipart/v1/images/edits。 - 异步
/v1/images/generations/async只返回任务 ID 和最终 URL。参考图先上传到普通素材接口,只接受当前账号有效的 asset://ref_...;不直接传 HTTPS 或 data URL。无参考图时省略素材字段。 - 两种入口的单图 input_reference 与多图 input_references 互斥,最多 6 张,同一请求全部参考图合计(按解码后的文件字节)不超过 30 MiB;每次创建需提供 Idempotency-Key。异步任务通过
/v1/tasks/{task_id}查询结果。
Image2 Pro 异步图片生成POST/v1/images/generations/async
必须提供 Idempotency-Key。省略参考字段为文生图;单图或多图参考只能使用上传后属于当前账号的 asset://ref_...。默认且仅支持 response_format=url。
curl https://api.cgcm-api.com/v1/images/generations/async \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-async-20260906-0001" \
-d '{
"model": "image-2-pro",
"prompt": "一张白色背景的产品图片",
"size": "1024x1024"
}'图片参考改图POST/v1/images/generations
提交 1 到 6 张图片参考和提示词,生成保持参考图主体、构图或风格的新图片。参考图建议使用公网 HTTPS 图片 URL。
curl https://api.cgcm-api.com/v1/images/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-order-20260703-0002" \
-d '{
"model": "image-2-pro",
"prompt": "综合参考图主体和风格,调整为高端商业摄影质感。",
"size": "2160x3840",
"input_references": [
"https://client.example.com/reference-1.png",
"https://client.example.com/reference-2.jpg"
],
"n": 1,
"response_format": "b64_json"
}'Seedream 5.0 Pro
精确输出尺寸用 WIDTHxHEIGHT 表示,具体范围见下表。
seedream-5.0-pro 通过 POST /v1/images/generations/async 创建异步图片任务。 提交成功后使用返回的任务 ID 查询 /v1/tasks/{task_id},直到状态进入成功或退款终态。
- 自适应输出:
size可传1K、2K、4K;这三种写法不保证一个固定画幅。 - 严格指定画幅:把
size写成精确的宽x高,例如2560x1440。总像素必须在 1,048,576 到 16,777,216 之间,宽高比必须在 1:16 到 16:1 之间(含边界)。 - 官方常用推荐尺寸包括:1:1 的
2048x2048;4:3 / 3:4 的2304x1728/1728x2304;3:2 / 2:3 的2496x1664/1664x2496;16:9 / 9:16 的2560x1440/1440x2560;21:9 / 9:21 的3024x1296/1296x3024。合法范围内的其他精确尺寸同样支持。 - 精确尺寸按总像素是否超过 2,610,000 分档。自适应尺寸按所选规格计费。 首张参考图包含在基础费用内,从第 2 张起按参考图数量另计,最多 6 张。 用
GET /v1/models查看当前账号的计费规则。 - 纯文生图:不要传
input_reference或input_references。 - 参考图编辑:先通过普通参考素材上传接口取得已激活的
asset://ref_...,单图使用input_reference,多图使用input_references。 - 局部修改:当前不支持独立 mask 遮罩字段。请先在参考图上画框、箭头或涂写标注,再在提示词中说明只修改标注区域。
- 当前不提供图层分离;如需人物、背景或商品分层,请在客户侧另行处理。
- 当前固定
n=1、response_format=url、output_format=png,可选watermark。
Seedream 5.0 Pro 异步图片生成POST/v1/images/generations/async
示例用 size=2560x1440 严格指定 16:9,并使用一张已上传且激活的普通参考图;纯文生图时删除 input_references 字段。
curl https://api.cgcm-api.com/v1/images/generations/async \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: seedream-5-pro-order-20260822-0001" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "保留参考图主体与构图,只修改标注区域内的商品颜色。",
"size": "2560x1440",
"n": 1,
"response_format": "url",
"output_format": "png",
"watermark": false,
"input_references": [
"asset://ref_image_xxx"
]
}'Nano Banana 图片生成POST/v1/images/generations
Nano Banana 使用 image_size 和 aspect_ratio 选择输出规格。当前支持 Flash 和 Pro 两档。
curl https://api.cgcm-api.com/v1/images/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: nano-banana-order-20260708-0001" \
-d '{
"model": "nano-banana-flash",
"prompt": "一张高质感产品海报,柔和灯光,干净背景。",
"image_size": "2K",
"aspect_ratio": "9:16",
"n": 1,
"response_format": "b64_json"
}'Nano Banana 图片参考编辑POST/v1/images/generations
提交 1 到 6 张图片参考。
curl https://api.cgcm-api.com/v1/images/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: nano-banana-order-20260708-0002" \
-d '{
"model": "nano-banana-pro",
"prompt": "保持参考图产品外观一致,生成高端电商详情页场景图。",
"image_size": "4K",
"aspect_ratio": "3:4",
"input_references": [
"https://client.example.com/product-reference.png"
],
"n": 1,
"response_format": "b64_json"
}'图片任务字段
| 字段 | 要求 | 说明 |
|---|---|---|
model | 必填 | 使用 image-2-pro 或 image-2.5;实际可见模型以 GET /v1/models 为准。 |
prompt | 必填 | 图片提示词,1 到 4000 字符。 |
size | 必填 | 请求尺寸使用当前模型契约列出的精确值;生成结果的实际宽高可能由模型微调,以返回图像为准。 |
input_reference | 图生图可选 | 旧版单图字段;不要和 input_references 同时传。 |
input_references | 图生图可选 | 1 到 6 张;数组内只能全部为 HTTPS URL 或全部为 Base64 data URL;同一请求全部参考图解码后合计不超过 30 MiB。 |
n | 可选 | 当前固定为 1。 |
response_format | 可选 | b64_json(默认)或 url。url 返回 seeAPI 托管的短期签名地址,不暴露供应商原始地址。 |
output_format | 可选 | image-2-pro:jpeg 或 png,默认 jpeg;image-2.5:仅 png,默认 png。 |
quality | 可选 | 当前固定为 auto。 |
moderation | 可选 | 当前固定为 auto。 |
image_size | Nano Banana 必填 | Nano Banana 尺寸档位,当前支持 1K、2K、4K。 |
aspect_ratio | Nano Banana 必填 | Nano Banana 画幅比例,当前支持 1:1、16:9、9:16、4:3、3:4、3:2、2:3。 |
图片尺寸
下表由 Image2 Contract Hub 生成,与 Registry seed、管理员配置校验和 /v1/models 使用同一份尺寸定义。 线上实际可用值仍以当前账号从 /v1/models 取得的激活结果为准。
| model | 1K 方图 | 1K 横屏 | 1K 竖屏 | 2K 方图 | 2K 横屏 | 2K 竖屏 | 4K 横屏 | 4K 竖屏 |
|---|---|---|---|---|---|---|---|---|
image-2-pro | 1024x1024 | 1536x864、1360x1024、1536x1024 | 864x1536、1024x1360、1024x1536 | 2048x2048 | 3072x1728、2720x2048、3072x2048 | 1728x3072、2048x2720、2048x3072 | 3840x2160、3264x2448、3520x2336 | 2160x3840、2448x3264、2336x3520 |
image-2.5 | 1024x1024 | 1536x864、1360x1024、1536x1024 | 864x1536、1024x1360、1024x1536 | 2048x2048 | 3072x1728、2720x2048、3072x2048 | 1728x3072、2048x2720、2048x3072 | 3840x2160、3264x2448、3520x2336 | 2160x3840、2448x3264、2336x3520 |
Nano Banana 使用 image_size 和 aspect_ratio,不使用 Image2 的 size 字段。nano-banana-flash 和 nano-banana-pro 当前支持同一组规格。
| image_size | 1:1 | 16:9 | 9:16 | 4:3 | 3:4 | 3:2 | 2:3 |
|---|---|---|---|---|---|---|---|
1K | 1024x1024 | 1536x864 | 864x1536 | 1360x1024 | 1024x1360 | 1536x1024 | 1024x1536 |
2K | 2048x2048 | 3072x1728 | 1728x3072 | 2720x2048 | 2048x2720 | 3072x2048 | 2048x3072 |
4K | 2880x2880 | 3840x2160 | 2160x3840 | 3328x2496 | 2496x3328 | 3520x2336 | 2336x3520 |
图片参考素材
| 项目 | 边界 |
|---|---|
| 格式 | PNG、JPEG/JPG、WebP。 |
| 数量 | Image2、Nano Banana 和 Seedream 5.0 Pro 支持 1 到 6 张;Grok preview 支持 1 张,preview-pro 支持 1 到 7 张。 |
| Image2 HTTPS URL | 推荐方式。URL 必须公网可访问,不能是内网地址、需要登录的地址、带账号密码的地址或过期签名地址;同一请求的所有参考图合计(按解码后的文件字节)不超过 30 MiB。平台按当前适配链路处理,客户请求格式保持稳定。 |
| Seedream 5.0 Pro | 仅接受已激活的 PNG/JPEG 普通参考素材 asset://ref_...;单图用 input_reference,多图用 input_references,两个字段不能同时传,且不能重复引用同一素材。 |
| 其他图片模型 HTTPS URL | URL 必须公网可访问;具体数量与体积限制以对应模型契约为准。 |
| Grok HTTPS URL | URL 会随请求提交给图片参考生视频服务。请使用非敏感、可公开访问的 HTTPS 图片 URL,不要使用私有地址、登录态 URL 或带敏感签名参数的 URL。 |
| Base64 data URL | 仅建议用于 700 KB 以内的小图,格式为 data:image/png;base64,...、data:image/jpeg;base64,... 或 data:image/webp;base64,...。较大图片请压缩或改用 HTTPS URL,否则可能返回 413。 |
素材与复用
参考素材规则
参考素材的数量、格式和时长取决于模型。查看 Seedance、Wan 3.0、可灵 4.0、MiniMax H3 或 图片模型。
- Seedance 可使用公网 HTTPS 文件直链或素材库引用。Wan 3.0、可灵 4.0、Happy Horse 和 MiniMax H3 使用已上传的普通参考素材。
- 素材须属于当前账号且在有效期内,同一字段内不得重复。素材无效或与模型不兼容时,任务创建前会返回错误。
- 旧真人素材及 portrait URI 仅适用于模型列表中明确支持的旧模型。为 Seedance 使用旧图时,请重新上传原图。
Seedance 素材库
用同一账号登录 素材库 管理图片、视频和音频。在 视频制作 选择 Seedance 2.5,即可在素材库里把已就绪的素材加入全能参考,用于样片或普通视频。
- 创建直传授权。用
POST /v1/assets/references/direct-upload-authorizations提交kind、content_type、content_length_bytes和文件的sha256。kind可取image、video或audio。 - 上传文件。
upload_required为 true 时,将全部form_fields原样加入表单,最后加入file,直接 POST 到返回的upload_url。为 false 时直接确认上传。 - 确认上传。用
POST /v1/assets/references/direct-upload-completions提交{"upload_id":"ref_xxx"}。若返回processing,在列表中查询,待reusable: true后再引用。 - 引用素材。把有效的
asset_uri分别填入reference_image_urls、reference_video_urls或reference_audio_urls。素材须属于当前账号,并满足所选模型的限制。转正片时沿用原样片的参考素材。
GET /v1/assets/references?kind=video&limit=20 按类型查素材,使用 next_cursor 继续分页。DELETE /v1/assets/references/ref_xxx 删除当前账号的指定素材。通过素材库上传的文件也可以直接从网页复制引用。
上传普通图片参考POST/v1/assets/references/upload
上传图片文件并读取返回的素材引用。
curl https://api.cgcm-api.com/v1/assets/references/upload \
-H "Authorization: Bearer sk_live_xxx" \
-F "kind=image" \
-F "file=@./product-reference.png"
# 成功响应示例
{
"id": "ref_xxx",
"object": "reference.asset",
"kind": "image",
"asset_uri": "asset://ref_xxx",
"status": "active",
"mime_type": "image/png",
"size_bytes": 123456,
"created_at": "2026-06-26T08:00:00.000Z"
}上传视频/音频参考素材POST/v1/assets/references/upload
分别上传 MP4/MOV 视频或 MP3/WAV 音频。
curl https://api.cgcm-api.com/v1/assets/references/upload \
-H "Authorization: Bearer sk_live_xxx" \
-F "kind=video" \
-F "file=@./motion-reference.mp4"
curl https://api.cgcm-api.com/v1/assets/references/upload \
-H "Authorization: Bearer sk_live_xxx" \
-F "kind=audio" \
-F "file=@./audio-reference.mp3"
# 视频成功响应示例
{
"id": "ref_video_xxx",
"object": "reference.asset",
"kind": "video",
"asset_uri": "asset://ref_video_xxx",
"status": "active",
"mime_type": "video/mp4",
"size_bytes": 1234567,
"duration_seconds": 6,
"created_at": "2026-06-26T08:00:00.000Z"
}复用已生成视频作为参考POST/v1/video/generations
任务 succeeded 后,从 /v1/tasks/{task_id} 的 output.generated_reference_uri 取值,放入下一次 reference_video_urls。同一账号、成功任务且可复用的视频才会通过校验。
curl https://api.cgcm-api.com/v1/video/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20260510-0002" \
-d '{
"model": "seedance-2.0",
"prompt": "延续上一条视频的动作节奏,生成同风格的新镜头。",
"reference_video_urls": [
"asset://generated-video/job_xxx"
],
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "720p"
}'对话
流式对话POST/v1/chat/completions
为已开通 GPT 文本模型的账户创建对话响应,支持文字和图片输入。传 stream: true 时会返回 text/event-stream;视频、音频和通用文件会本地拒绝且不扣费。
curl -N https://api.cgcm-api.com/v1/chat/completions \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-order-20260704-0001" \
-d '{
"model": "gpt-5.5",
"messages": [
{
"role": "user",
"content": "请把这段产品介绍改写成更适合短视频口播的版本。"
}
],
"max_completion_tokens": 800,
"stream": true,
"stream_options": {
"include_usage": true
}
}'流式对话字段
| 字段 | 要求 | 说明 |
|---|---|---|
model | 必填 | 受邀账户当前可用 gpt-5.5;以 /v1/models 返回为准。 |
messages | 必填 | 对话消息数组,支持 system、developer、user、assistant 角色;用户内容支持文字和图片。 |
max_completion_tokens | 必填 | 本次回复最大输出 token 数;也可使用兼容字段 max_tokens。 |
temperature | 可选 | 0 到 2 的采样温度。 |
stream | 推荐 | 传 true 时返回 text/event-stream,客户侧可边接收边展示。 |
stream_options | 可选 | 建议传 { include_usage: true },便于平台按响应的 usage 做结算。 |
不支持 | 固定 | GPT 对话不支持视频、音频或通用文件输入;此类请求会在本地 400 拒绝且不扣费。 |
任务与交付
查询任务GET/v1/tasks/{task_id}
轮询任务状态,直到进入 succeeded、refunded、failed 或 canceled。Seedance 成功结果返回 usage.completion_tokens 与 usage.total_tokens,可用于下游计量;创建任务响应不包含 usage。
curl https://api.cgcm-api.com/v1/tasks/job_xxx \
-H "Authorization: Bearer sk_live_xxx"
# 成功响应示例
{
"id": "job_xxx",
"object": "task",
"status": "succeeded",
"model": "seedance-2.0",
"output": {
"video_url": "https://cdn.example.com/users/usr_xxx/jobs/job_xxx/output/video.mp4",
"generated_reference_uri": "asset://generated-video/job_xxx",
"assets": [
{
"type": "output_video",
"url": "https://cdn.example.com/users/usr_xxx/jobs/job_xxx/output/video.mp4",
"mime_type": "video/mp4",
"size_bytes": "12345678",
"checksum": "sha256:..."
}
]
},
"usage": {
"completion_tokens": 40176,
"total_tokens": 40176
},
"error": null,
"cost": {
"estimated_units": 1234567,
"charged_units": 1234567,
"refunded_units": 0,
"currency": "credits"
},
"created_at": "2026-05-10T08:00:00.000Z",
"finished_at": "2026-05-10T08:01:00.000Z"
}任务状态
| 状态 | 含义 |
|---|---|
created | 任务已持久化,等待入队;提交响应中会按 queued 展示。 |
queued | 已进入队列,等待处理。 |
running | 正在生成或等待结果回传。 |
succeeded | 任务成功,余额正式结算,output 中返回平台存储后的结果地址。 |
failed | 任务失败的中间状态;平台会继续处理退款。 |
refunded | 任务失败或取消后已退款,cost.refunded_units 展示退款数量。 |
canceled | 任务已取消;如果已预扣,后续会进入退款流程。 |
成品备用下载链接POST/v1/tasks/{task_id}/backup-links
仅限当前账号已成功的图片或视频任务。返回 data 数组,包含 asset_id、type、read_url、expires_at、method、mime_type、size_bytes 和 checksum;read_url 绕过 CDN,直接下载同一份成品。默认有效 5 分钟,以 expires_at 为准,过期后重新调用即可。使用 GET 下载,可带 Range,不要用 HEAD。原 output 链接与 Webhook 保持兼容,不重新生成或重复扣费。临时链接持有者可在到期前下载,请勿记录到日志或公开分享。
curl -X POST https://api.cgcm-api.com/v1/tasks/job_xxx/backup-links \
-H "Authorization: Bearer sk_live_xxx"Webhook 事件与签名
提交任务时传入 callback_url 后,可用 Webhook 接收任务通知。当前 MVP 稳定投递 task.succeeded;核心事件格式已覆盖 task.refunded、task.failed和 task.canceled,这些非成功终态会在后续版本升级为稳定投递承诺。请始终以 /v1/tasks/{task_id} 作为最终状态兜底;Webhook 投递失败不会改变任务最终状态, 也不会再次触发扣费或退款。
- Header:
x-webhook-id、x-webhook-timestamp、x-webhook-signature。 - 签名算法:
HMAC_SHA256(secret, "{timestamp}.{rawBody}"),Header 值格式为v1=hex_hmac_sha256。 - 验签时必须使用收到的原始请求体 raw body,不要使用重新序列化后的 JSON。
Webhook PayloadPOSTclient callback_url
succeeded 事件会包含 output;refunded、failed、canceled 的事件格式中 output 为 null,并包含 error。当前 MVP 请不要依赖非成功终态一定投递。
{
"id": "evt_xxx",
"type": "task.succeeded",
"created_at": "2026-05-10T08:01:00.000Z",
"data": {
"id": "job_xxx",
"status": "succeeded",
"model": "seedance-2.0",
"output": {
"video_url": "https://cdn.example.com/users/usr_xxx/jobs/job_xxx/output/video.mp4"
},
"error": null
}
}Node.js Webhook 验签NODEx-webhook-signature
示例使用 Node.js 内置 http 和 crypto。请将 SEEAPI_WEBHOOK_SECRET 配置为平台为你的回调地址分配的密钥。
import { createHmac, timingSafeEqual } from "node:crypto";
import http from "node:http";
const WEBHOOK_SECRET = process.env.SEEAPI_WEBHOOK_SECRET;
function verifySignature(rawBody, timestamp, signature) {
if (!WEBHOOK_SECRET || !timestamp || !signature?.startsWith("v1=")) return false;
const expected = "v1=" + createHmac("sha256", WEBHOOK_SECRET)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
const receivedBuffer = Buffer.from(signature);
const expectedBuffer = Buffer.from(expected);
return receivedBuffer.length === expectedBuffer.length
&& timingSafeEqual(receivedBuffer, expectedBuffer);
}
http.createServer((req, res) => {
if (req.method !== "POST") {
res.writeHead(405).end();
return;
}
const chunks = [];
req.on("data", (chunk) => chunks.push(chunk));
req.on("end", () => {
const rawBody = Buffer.concat(chunks).toString("utf8");
const timestamp = req.headers["x-webhook-timestamp"];
const signature = req.headers["x-webhook-signature"];
if (!verifySignature(rawBody, String(timestamp ?? ""), String(signature ?? ""))) {
res.writeHead(401).end("invalid signature");
return;
}
const event = JSON.parse(rawBody);
console.log(req.headers["x-webhook-id"], event.type, event.data.id);
res.writeHead(204).end();
});
}).listen(3000);Node.js 提交并轮询NODE/v1/video/generations
适用于 Node.js 18+,API Key 从服务端环境变量读取。
const BASE_URL = "https://api.cgcm-api.com";
const API_KEY = process.env.SEEAPI_API_KEY;
async function main() {
const submit = await fetch(`${BASE_URL}/v1/video/generations`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "order-20260510-0001"
},
body: JSON.stringify({
"model": "seedance-2.0",
"prompt": "基于产品参考图生成一段自然柔光下的展示视频。",
"reference_image_urls": [
"https://media.example.com/reference/product.jpg"
],
"reference_video_urls": [
"https://media.example.com/reference/action.mp4"
],
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "720p",
"count": 1,
"generate_audio": true,
"search_enabled": true,
"callback_url": "https://client.example.com/webhooks/seeapi"
})
});
const task = await submit.json();
if (!submit.ok) throw new Error(JSON.stringify(task));
while (true) {
const res = await fetch(`${BASE_URL}/v1/tasks/${task.id}`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
const current = await res.json();
if (!res.ok) throw new Error(JSON.stringify(current));
if (["succeeded", "refunded", "failed", "canceled"].includes(current.status)) {
console.log(current);
return;
}
await new Promise((resolve) => setTimeout(resolve, 3000));
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});Python 提交并轮询PYTHON/v1/video/generations
示例使用 requests;API Key 从服务端环境变量 SEEAPI_API_KEY 读取。
import os
import time
import requests
BASE_URL = "https://api.cgcm-api.com"
API_KEY = os.environ["SEEAPI_API_KEY"]
payload = {
"model": "seedance-2.0",
"prompt": "基于产品参考图生成一段自然柔光下的展示视频。",
"reference_image_urls": [
"https://media.example.com/reference/product.jpg"
],
"reference_video_urls": [
"https://media.example.com/reference/action.mp4"
],
"reference_audio_urls": [
"https://media.example.com/reference/music.mp3"
],
"duration": 5,
"aspect_ratio": "9:16",
"resolution": "720p",
"count": 1,
"generate_audio": True,
"search_enabled": True,
"callback_url": "https://client.example.com/webhooks/seeapi"
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"Idempotency-Key": "order-20260510-0001",
}
submit = requests.post(f"{BASE_URL}/v1/video/generations", json=payload, headers=headers, timeout=30)
submit.raise_for_status()
task = submit.json()
while True:
res = requests.get(
f"{BASE_URL}/v1/tasks/{task['id']}",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=30,
)
res.raise_for_status()
current = res.json()
if current["status"] in ["succeeded", "refunded", "failed", "canceled"]:
print(current)
break
time.sleep(3)计费与排错
幂等、计费与恢复规则
- 同一用户使用同一个
Idempotency-Key和相同请求体,会返回同一个任务,不会重复扣费。 - 同一个
Idempotency-Key搭配不同请求体,会返回409 idempotency_conflict。 - 平台在创建任务前预扣预计费用;任务成功后按已预扣金额正式结算。
- 模型价格以当前账户的
GET /v1/models返回值为准。 当pricing_rule.type为conditional_reference_video时, 无视频输入使用base_pricing_rule,含视频输入使用reference_video中的时长、像素、Token 单价和最低用量规则。 普通含视频参考会核对每段素材的精确时长,以输入秒数加输出秒数、所选画幅像素和 24 fps 计算 Token; 最低用量生效后,按所选价档与输出秒数对应的 Token 单价计算,单份金额四舍五入再乘生成数量。 可用单价以当前账号返回的reference_video.token_rates或token_rates_by_output_seconds为准。 视频编辑以账号生效的报价规则计费。已创建任务的幂等重试沿用原金额。 - 任务失败或取消后,平台会自动退款,任务最终通常表现为 refunded。
- 余额不足返回
402 insufficient_credits,不会创建任务,并会把当前账户下 active API Key 暂停为balance_paused。 - 充值后只恢复
balance_paused的 API Key,不恢复user_disabled、admin_disabled或risk_blocked。
Seedance Token 用量
- 四款 Seedance 模型的成功查询结果通过
usage.completion_tokens返回视频 Token 用量,usage.total_tokens为总用量;两者相同,单位为整数 Token。 - 用量按视频时长、输出分辨率、宽高比及24fps口径确定;含参考视频时计入参考视频时长,并适用最低用量。提示词、参考图片及音频不单独增加 Token。
- 多视频结果按实际返回的视频汇总。
adaptive宽高比使用 16:9 用量口径;智能时长使用任务确定的输出时长。 /v1/tasks/{task_id}与/v1/videos/{task_id}返回相同用量。处理中、失败、退款或缺少必要参数的历史任务不返回此字段;读取前请检查字段是否存在。- Token 用量供下游计量使用,本站费用仍以
cost字段为准。
统一错误格式
所有平台错误都使用统一结构;message 可用于排查,业务判断请优先依赖稳定的 code。
{
"error": {
"code": "insufficient_credits",
"message": "Insufficient credits.",
"type": "billing_error",
"request_id": "req_xxx"
}
}| 错误码 | 类型 | HTTP | 说明 |
|---|---|---|---|
invalid_api_key | authentication_error | 401 | API Key 缺失、格式错误或不存在。 |
api_key_disabled | authorization_error | 403 | API Key 被用户、管理员或风控禁用。 |
api_key_paused_insufficient_balance | authorization_error | 403 | API Key 因余额不足暂停;充值后会自动恢复该类 Key。 |
validation_error | invalid_request_error | 400 | 请求字段不符合 input_schema,或 ReferenceAsset 缺失、已过期、不属于当前账号。修正或重新上传素材后使用新的 Idempotency-Key。 |
asset_provider_incompatible | invalid_request_error | 400 | 当前模型不能使用该素材来源,且不应重试。请通过普通参考素材接口重新上传原始图片,再使用新的 asset://ref_...。 |
unsupported_input_modality | invalid_request_error | 400 | GPT 对话只支持文字和图片输入;不要传视频、音频或通用文件。 |
insufficient_credits | billing_error | 402 | 余额不足,平台不会创建任务,并会暂停当前账户下 active API Key。 |
idempotency_conflict | invalid_request_error | 409 | 同一 Idempotency-Key 已用于不同请求体。 |
idempotent_stream_replay_unavailable | task_error | 409 | 同一流式请求不能回放原始字节流;请使用新的 Idempotency-Key 重新生成。 |
model_not_found | model_error | 404 | 模型不存在。 |
model_disabled | model_error | 403 | 模型已禁用。 |
provider_not_configured | model_error | 500 | 模型服务未配置。 |
task_not_found | task_error | 404 | 任务不存在,或当前 API Key 不属于该任务用户。 |
task_timeout | task_error | 503 | 任务处理超时;如已扣费,平台会走退款流程。 |
provider_auth_failed | provider_error | 502 | 服务配置异常,请联系平台处理,不要重复提交大量请求。 |
provider_invalid_request | provider_error | 422 | 生成服务认为请求无效。 |
provider_generated_output_safety_rejected | provider_error | 422 | 生成结果未通过安全检查。 |
reference_media_compliance_incomplete | provider_error | 422 | 参考素材合规校验未能在任务受理前完成;不等同于素材被判违规。异步任务会进入退款终态。 |
reference_media_compliance_rejected | provider_error | 422 | 参考素材未通过校验,异步任务会进入退款终态。 |
reference_media_asset_registration_failed | provider_error | 422 | 参考素材未能在任务受理前就绪;异步任务会进入退款终态。 |
reference_media_compliance_unavailable | provider_error | 422 | 参考素材合规校验服务暂不可用且任务尚未受理;异步任务会进入退款终态。 |
reference_media_compliance_timeout | provider_error | 422 | 参考素材合规校验在任务受理前超时;异步任务会进入退款终态。 |
real_person_reference_requires_asset | provider_error | 422 | 仅适用于 input_schema 明确支持旧真人素材流程的旧模型;不要将真人素材接口用于 seedance-2.0 或 seedance-2.0-fast。 |
provider_task_failed | provider_error | 502 | 生成任务失败;请查询任务状态确认是否已退款。 |
asset_library_not_configured | provider_error | 500 | 真人素材上传服务未配置,请联系平台处理。 |
asset_upload_failed | provider_error | 502 | 真人素材上传失败;文件直传模式请稍后重试。 |
storage_file_too_large | invalid_request_error | 413 | 真人素材图片过大,请压缩后重新上传。 |
asset_activation_timeout | provider_error | 504 | 真人素材已上传但未及时完成校验,请稍后重试或联系平台。 |
provider_unavailable | provider_error | 502 | 生成服务确实暂不可用;该错误不表示素材缺失、过期、跨账号或来源不兼容。 |
provider_rate_limited | provider_error | 429 | 生成服务限流。 |
provider_timeout | provider_error | 503 | 生成服务超时。 |
storage_upload_failed | storage_error | 502 | 结果文件写入平台存储失败;请查询任务状态确认是否已退款。 |
internal_error | internal_error | 500 | 平台内部错误。 |
常见处理建议
| 情况 | 建议动作 |
|---|---|
401 / 403 | 先检查 API Key 是否复制完整、是否放在服务端、账户余额是否已耗尽。 |
402 insufficient_credits | 停止重试,联系平台充值;充值后 balance_paused 的 Key 会恢复。 |
409 idempotency_conflict | 换一个新的 Idempotency-Key,或使用原请求体查询旧任务。 |
400 asset_provider_incompatible | 不要重试原请求。重新上传原始图片,并把新的 asset://ref_... 放入 reference_image_urls。 |
400 validation_error(素材) | 确认 ReferenceAsset 存在、未过期且属于当前账号;修正后使用新的 Idempotency-Key。 |
422 real_person_reference_requires_asset | 仅对明确支持旧真人素材流程的旧模型使用 /v1/assets/portraits/upload;seedance-2.0 和 seedance-2.0-fast 使用公网 HTTPS 直链或普通参考素材上传。 |
422 reference_media_compliance_incomplete | 不要把它解读为素材违规;确认任务已退款后,再检查素材格式、登记状态或稍后使用新的幂等键重试。 |
422 provider_generated_output_safety_rejected | 生成结果未通过安全检查。修改提示词或随机种子后,使用新的幂等键重新提交。 |
429 / 503 | 按指数退避重试任务查询;提交接口不要高频重复打。 |
refunded | 任务已结束且退款完成,可以用新的幂等键重新提交。 |
succeeded 但下载失败 | 保留原 CDN 链接;调用 POST /v1/tasks/{task_id}/backup-links 获取备用下载地址,用 GET 下载。过期后重新调用,不要重新生成任务。 |