wuyeai.cn 对接文档
本站为标准 OpenAI 兼容接口。换模型只改 model 的值,接口路径、字段名、鉴权方式都不变。当前提供视频生成(Dola Seedance 系列)与图片生成(GPT-Image 系列)两类任务模型。
Base URL : https://www.wuyeai.cn SDK 地址 : https://www.wuyeai.cn/v1 鉴权 : Authorization: Bearer sk-your-api-key
https://www.wuyeai.cn/keys)→ 新建令牌。注意区分两个东西:令牌(sk-开头)用于调用本页所有 /v1/* 接口;账号密码只用于登录控制台后台。创建令牌时请选择对应分组:default(视频模型)、生图(图片模型)。接口总览
| 类型 | 接口 |
|---|---|
| 查询模型 | GET /v1/models |
| 视频提交 | POST /v1/videos |
| 视频查询 | GET /v1/videos/{task_id} |
| 视频下载 | GET /v1/videos/{task_id}/content |
| 文生图(出图) | POST /v1/images/generations |
| 图生图 / 图片编辑(参考图) | POST /v1/images/edits |
本页仅包含当前已上线的模型与接口;新模型接入后,以 GET /v1/models 实际返回为准。
查询模型
curl "https://www.wuyeai.cn/v1/models" \ -H "Authorization: Bearer sk-your-api-key"
当前上线模型(仅示例,实际以接口返回为准):
| 模型 ID | 类型 | 计费 | 时长范围 | 分辨率 | 参考图上限 | 参考音频上限 |
|---|---|---|---|---|---|---|
dola-seedance-2.0-fast | 视频 | ¥1.3 / 次 | 4–15 秒 | 720p | 9 张 | 3 个 |
dola-seedance-2.5 | 视频 | ¥1.6 / 次 | 4–30 秒 | 720p | 30 张 | 10 个 |
gpt-image-2 | 图片 | ¥0.08 / 次 | — | — | — | — |
gpt-image-2.5-flare | 图片 | ¥0.08 / 次 | — | — | — | — |
gpt-image-2.5-sunburst | 图片 | ¥0.08 / 次 | — | — | — | — |
No available channel for model … under group …。视频生成
视频是异步任务,流程固定三步:提交拿任务 ID → 每 5~10 秒轮询状态 → completed 后下载。
1. 提交任务
curl "https://www.wuyeai.cn/v1/videos" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "dola-seedance-2.5",
"prompt": "让 @图1 的人物穿上 @图2 的衣服,走进 @图3 的场景;运镜与配音分别参考所传的视频、音频素材",
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"referenceImages": [
"https://example.com/person.jpg",
"https://example.com/clothes.jpg",
"https://example.com/scene.jpg"
],
"referenceVideos": ["https://example.com/camera-move.mp4"],
"referenceAudios": [
"https://example.com/voice.mp3",
"https://example.com/bgm.mp3"
]
}'请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 视频模型 ID:dola-seedance-2.0-fast / dola-seedance-2.5 |
prompt | string | 是 | 视频提示词 |
duration | integer | 是 | 时长秒数(整数)。可用范围:dola-seedance-2.0-fast 4–15 秒;dola-seedance-2.5 4–30 秒 |
resolution | string | 是 | 本站视频模型固定 720p,且必须显式传入:不传会被拒绝,传其它档位会直接报错 |
ratio | string | 否 | 画幅,如 16:9 / 9:16 / 1:1;不传由模型决定 |
referenceImages | string[] | 否 | 参考图,公网 http(s) URL 数组;提示词里用 @图N 引用(见下)。上限见上表(9 / 30 张) |
referenceVideos | string[] | 否 | 参考视频,公网 http(s) URL 数组 |
referenceAudios | string[] | 否 | 参考音频,公网 http(s) URL 数组。上限见上表(3 / 10 个) |
first_frame_image | string | 否 | 首帧图,公网 URL。和参考图是两套东西,见下 |
last_frame_image | string | 否 | 尾帧图,公网 URL。和参考图是两套东西,见下 |
兼容字段:seconds(与 duration 等价,本站会规范化后转发;两者同时传时必须一致)。为避免歧义,推荐统一使用 duration。
referenceImages / referenceVideos / referenceAudios。以下名字会被直接拒绝(多数会报出正确写法):reference_images、reference_image_urls、reference_videos、reference_audios、duration_seconds、aspect_ratio、images、image_urls、size、generate_audio。上表之外的任何字段同样会被整单拒绝 —— 本站对字段做严格校验,宁可报错也不会静默丢弃你的参数。@图N 与首尾帧(最容易踩的一条)
规则:提示词里的 @图1、@图2 … 只对应 referenceImages 数组;首尾帧(first_frame_image / last_frame_image)不算数组项。两套写法不要混用。
| 你发的字段 | 提示词里写 | 结果 |
|---|---|---|
referenceImages: [图1, 图2] | @图1 @图2 | 通过(推荐) |
referenceImages: [图1, 图2] | 只写 @图1 | 提交失败:数组第 2 项没有对应的 @图2 |
first_frame_image + last_frame_image | @图1 @图2 | 提交失败:提示词里的 @图N 没有对应的参考素材 |
first_frame_image + last_frame_image | 不写 @图N | 提交能过;能否出片以模型为准,出不了片就改用参考图写法 |
- 一一对应,宁多勿少:给了 N 张图,提示词里就要写到
@图N。 - 想要"首帧 → 尾帧"的效果,最稳的写法是把首帧图放第 1 张、尾帧图放第 2 张,走
referenceImages+@图1 @图2。 - 字段名必须一字不差:写成
first_image/last_image不会当首尾帧处理,会直接报错。 - 有些模型必须给参考图,只发文字提示词会被拒绝,报「参考图缺失」。
- 参考图 / 参考音频数量超上限会被直接拒绝(如
referenceImages supports at most 30 items)。
只有首帧 / 尾帧两张图时,用这套写法(提示词里不要写 @图N):
{
"model": "dola-seedance-2.5",
"prompt": "人物从画面左侧自然走向右侧,镜头缓慢推近",
"duration": 5,
"ratio": "16:9",
"resolution": "720p",
"first_frame_image": "https://example.com/first.jpg",
"last_frame_image": "https://example.com/last.jpg"
}上传本地素材(multipart/form-data)
本地文件走 multipart,字段名和 JSON 完全一样(驼峰):
curl "https://www.wuyeai.cn/v1/videos" \ -H "Authorization: Bearer sk-your-api-key" \ -F "model=dola-seedance-2.5" \ -F "prompt=让 @图1 的人物穿上 @图2 的衣服,走进 @图3 的场景" \ -F "duration=5" \ -F "ratio=16:9" \ -F "resolution=720p" \ -F "referenceImages=@person.jpg" \ -F "referenceImages=@clothes.jpg" \ -F "referenceImages=@scene.jpg" \ -F "referenceVideos=@camera-move.mp4" \ -F "referenceAudios=@voice.mp3" \ -F "referenceAudios=@bgm.mp3"
同一个字段重复出现就是多个素材:上面 3 张图对应提示词里的 @图1 ~ @图3,视频 / 音频同理。除 referenceImages / referenceVideos / referenceAudios 外,其它字段只能出现一次。
素材要求
- 必须是公网可访问的 http 或 https 地址,不能依赖登录状态、Cookie、内网地址或临时签名。
Content-Type必须与文件类型一致:图片image/*、视频video/*、音频audio/*;不要统一返回application/octet-stream,会因无法识别类型被拒绝。- 文件名扩展名要与内容一致(.jpg / .png / .mp4 / .mp3 / .wav)。
- 具体模型是否支持图片 / 视频 / 音频参考、以及允许的数量和大小,以该模型当前能力为准。
提交成功返回:
{
"id": "task_xxxxxxxx",
"object": "video",
"model": "dola-seedance-2.5",
"status": "queued",
"progress": 0,
"created_at": 1789591899
}id,然后轮询查询接口。不要重复调用 POST /v1/videos —— 本站按次计费,每调用一次就生成一次、扣一次费。2. 轮询查询
curl "https://www.wuyeai.cn/v1/videos/task_xxxxxxxx" \ -H "Authorization: Bearer sk-your-api-key"
每 5~10 秒查一次即可。查询是纯 GET:不要带请求体,也不要再传 model、prompt 等生成字段,系统会用 task_id 恢复任务对应的模型与渠道。查询必须使用创建任务时的同一个令牌。
| 状态 | 怎么处理 |
|---|---|
queued | 排队中,继续查原任务,不要重新提交 |
in_progress | 生成中,继续等待 |
completed | 停止轮询,去下载视频 |
failed | 停止轮询,看 error.message,改提示词或素材后新建任务 |
408 / 409 / 425 / 429 / 5xx,只表示这一次查询没成功,保留 task_id 继续轮询即可;只有状态明确是 failed 才算失败。任务完成时的响应示例:
{
"id": "task_xxxxxxxx",
"object": "video",
"model": "dola-seedance-2.5",
"status": "completed",
"progress": 100,
"created_at": 1789591899,
"completed_at": 1789592086
}完成时响应可能还会带上额外的地址 / 元数据字段(例如 video_url、metadata.url,以实际返回为准);下载推荐统一使用下面的本站下载接口。
3. 下载视频
- 本站下载接口(推荐):
GET https://www.wuyeai.cn/v1/videos/{task_id}/content,带同一个令牌即可下载,地址始终在本站域名下、支持 Range 断点续传,返回视频文件(video/mp4)。 - 响应里的地址字段(如有):查询响应中若返回
video_url等地址,也可直接使用(以实际返回为准)。
curl "https://www.wuyeai.cn/v1/videos/task_xxxxxxxx/content" \ -H "Authorization: Bearer sk-your-api-key" \ --output video.mp4
任务未完成时下载会报 Task is not completed yet, current status: IN_PROGRESS,等状态变为 completed 再下载。只使用接口返回的下载地址,不要自己拼路径。若显示 completed 但暂时取不到片,稍等几秒重试即可。
图片生成(文生图 / 图生图)
gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst,均 ¥0.08 / 次。这些模型位于「生图」分组——请使用该分组下的令牌调用,否则会返回 No available channel for model … under group …。不确定自己的令牌能用哪些模型,先调 GET /v1/models 查询。curl "https://www.wuyeai.cn/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一只在雨天窗台上的橘猫",
"n": 1,
"size": "1024x1024"
}'| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 图片模型 ID |
prompt | string | 是 | 图片描述 |
n | integer | 否 | 生成张数,默认 1(正整数) |
size | string | 否 | 尺寸,如 1024x1024 / 1024x1536 / 1536x1024,可用值以模型为准 |
response_format | string | 否 | url 或 b64_json,以模型实际支持为准;返回内容原样透传 |
data[0].url 或 data[0].b64_json 取图,客户端两种都兼容最稳。注意:图片这条路的画幅字段是 size,视频那条路是 ratio,别搞混。size 建议按 宽x高 形式传(如 1024x1024),参数支持范围以模型实际返回为准(上游不识别的参数可能被拒绝)。图生图 / 图片编辑(参考图生成)
curl "https://www.wuyeai.cn/v1/images/edits" \ -H "Authorization: Bearer sk-your-api-key" \ -F "model=gpt-image-2" \ -F "prompt=保持主体不变,改成电影海报风格" \ -F "image=@reference.png" \ -F "size=1024x1024" \ -F "n=1"
素材文件字段用 image,必须走 multipart 上传,不能把本地路径写进 JSON;编辑接口必须至少上传一张图,否则会被上游以缺少图片为由拒绝。多图参考请按同一字段名重复传 -F "image=@a.png" -F "image=@b.png"(可用性以模型为准)。文生图接口不接受文件上传——要传图请走 /v1/images/edits。
计费
所有调用按额度计费。当前上线的 5 个模型均为按次计费:每提交一次任务,按固定单价扣费一次;轮询查询与下载视频不额外计费。
| 模型 | 计费方式 | 价格 |
|---|---|---|
dola-seedance-2.0-fast | 按次 | ¥1.3 / 次 |
dola-seedance-2.5 | 按次 | ¥1.6 / 次 |
gpt-image-2 | 按次 | ¥0.08 / 次 |
gpt-image-2.5-flare | 按次 | ¥0.08 / 次 |
gpt-image-2.5-sunburst | 按次 | ¥0.08 / 次 |
常见错误
| 报错 | 原因与处理 |
|---|---|
401 无效的令牌 | 用的不是 sk- 开头的令牌,或令牌被禁用 / 过期。去控制台「令牌」重新建一个。 |
404 Invalid URL (GET /v1/…) | 请求路径写错,对照上面的接口总览改。 |
No available channel for model … under group … | 该模型在你的令牌分组没有可用渠道。当前 default 分组=视频模型、生图 分组=图片模型;确认令牌所在分组。 |
resolution is required for … and must be 720p (no silent default) | 视频模型必须显式传 resolution,本站固定 720p,不传会被拒绝。 |
resolution for dola-seedance-2.5 must be 720p (got 1080p) | 分辨率只支持 720p,其它档位直接报错。 |
duration is required for … / duration for … must be between 4 and 15 / 4 and 30 seconds (got …) | 时长必填且需在模型范围内(2.0-fast 4–15 秒;2.5 4–30 秒)。 |
field "reference_images" is not supported; use "referenceImages" instead | 用了旧字段名。按提示改成驼峰写法(视频素材字段见上表)。 |
field "watermark" is not supported; supported fields: … | 请求里带了不支持的字段,被整单拒绝。删掉多余字段,只保留文档列出的字段。 |
referenceImages supports at most 30 items for this model (got 31) | 参考图 / 参考音频数量超上限(见模型表),减少素材数量。 |
referenceImages[0] must be a public http(s) URL (private address rejected): … | 素材 URL 要公网可访问、未过期、不依赖登录 / Cookie / 内网地址。 |
prompt is required | 没传提示词。 |
图片参数错误(size / n 等) | 检查 size 是否为 宽x高 格式、n 是否为正整数;具体报错以实际返回为准。 |
bad_response_status_code(上游返回 4xx) | 图片请求被上游拒绝(多为参数问题),按返回的错误信息调整后重试。 |
| 图片编辑缺少图片文件 | 图片编辑需 multipart 上传 image 文件。 |
| 文生图接口不接受文件上传 | 要传参考图请走 /v1/images/edits。 |
400 task_not_exist | 查询要用创建任务时的同一个令牌,或 task_id 写错。 |
Task is not completed yet, current status: IN_PROGRESS | 任务未完成就调用了下载接口,等状态变为 completed 再下载。 |
素材下载失败 / 素材类型无效 | 素材 URL 要公网可访问;Content-Type 必须与文件一致(image/* / video/* / audio/*),不要返回 application/octet-stream。 |
查询时返回 408 / 409 / 425 / 429 / 5xx | 只是这一次查询失败,不代表任务失败;保留 task_id 继续轮询。 |
余额不足 | 账号额度用完了,去控制台充值或兑换。 |
文档版本 2026-10-10 · 模型与价格以控制台实时配置为准。