AI 生图、生视频 API 接入:Qwen 生图和 MiniMax H3 视频接口调用示例
更新于 2026-10-23
想在自己的网站、小程序或者批量脚本里生成图片和视频,不用自己部署模型、也不用买显卡,调接口就行。VGEN 把站上的 Qwen 生图和 MiniMax H3 生视频开放成了 HTTP 接口,和网页上用的是同一套模型、同一个价格,按次扣积分。
这篇讲接入的完整流程:拿 API Key、生图、生视频、轮询和下载结果、怎么计费,以及最容易踩的几个坑。示例都用 curl,任何语言照着发 HTTP 请求都能调。
第一步:注册并生成 API Key
- 在电脑浏览器打开 vgen.aijoy.tech 注册账号(新用户送 10 积分,够先试几次)。
- 进入「设置 → 账户信息 → API Key」,点生成。可以建多把,分别起名字,不用的可以单独停用或删除。
- 完整的 Key 只在创建时显示一次,当场复制保存;服务器只存哈希,之后找不回来。
所有请求都在请求头里带上 Authorization: Bearer 你的Key。接口地址是 https://vgen.aijoy.tech/v1/...。
先调一次 GET /v1/models,看看现在能用哪些模型:返回里的 id 就是提交时填的模型名,kind 是 image 还是 video,还有支持的比例、清晰度、时长和价格。模型名以这个接口返回的为准。
curl https://vgen.aijoy.tech/v1/models \ -H "Authorization: Bearer $KEY"
先搞清楚:生成是「异步任务」
生图要十几秒,生视频要几分钟,所以接口不会一直挂着等结果,而是分三步:
- 提交:POST 一个请求,马上拿到一个任务 ID(比如
evt-XXXX),状态是queued。 - 轮询:每隔几秒 GET 一次这个任务,状态会从
queued(排队)变成in_progress(生成中),最后是completed(完成)或failed(失败)。 - 下载:完成后用任务 ID 取回图片或 mp4。
参数错误、积分不够、提示词违规这类问题,在提交那一步就直接返回错误,不会建任务、也不会扣积分。任务建起来以后再失败,积分会自动退回。
不想写轮询的话,可以用下面「生图同步模式」或者「完成回调」。
生图:Qwen 文生图
接口是 POST /v1/images/generations,JSON 请求体。必填 prompt;model 填 qwen-image;size 写「宽x高」,它同时决定比例和清晰度:长边小于 1800 是 1K,1800 以上是 2K。比例会对到最近的 1:1、16:9、9:16、4:3、3:4。
不写 size 默认是 1:1 的 2K。一次请求出一张图,要多张就多发几个请求。
curl -X POST https://vgen.aijoy.tech/v1/images/generations \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-image",
"prompt": "一杯冰美式放在木桌上,旁边一本翻开的书,窗外自然光,杂志摄影风格",
"size": "1024x1024"
}'
# 立刻返回任务对象:
# {"id":"evt-XXXX","object":"image","status":"queued","progress":0, ...}
生图:轮询和下载
用 GET /v1/images/{id} 查状态,建议 2–5 秒查一次。完成时返回里直接带 data[0].url;也可以用 GET /v1/images/{id}/content 直接拿图片文件。
注意:结果地址是私有的,下载时也要带同一把 Key,直接在浏览器里打开会 401。要给用户展示,先在你的服务器上下载下来再分发。
# 查状态 curl https://vgen.aijoy.tech/v1/images/evt-XXXX \ -H "Authorization: Bearer $KEY" # 完成后下载 curl -o out.png https://vgen.aijoy.tech/v1/images/evt-XXXX/content \ -H "Authorization: Bearer $KEY"
生图同步模式:加一个 wait
请求体里加 "wait": 300(秒,最多 3600),服务器会等到出图再返回,结果直接是 {"created":...,"data":[{"url":"..."}]},适合脚本里一把调完。
如果到时间还没出图,不会报错也不会丢任务,返回的还是任务对象(有 id、状态是 queued 或 in_progress),拿 id 接着轮询就行。所以代码里要区分两种返回:有 data 没有 id 是已经出图,否则继续轮询。
生图:Qwen 图生图(改图)
接口是 POST /v1/images/edits,只接受 multipart 表单上传文件。模型还是填 qwen-image,带了参考图就自动走图生图,价格和文生图一样。
Qwen 生图一次只能放 1 张参考图,单张不超过 20MB。提示词写成修改指令,比如「把背景换成白色,商品保持不变」。指令怎么写看 AI 生图教程。
curl -X POST https://vgen.aijoy.tech/v1/images/edits \ -H "Authorization: Bearer $KEY" \ -F model="qwen-image" \ -F prompt="把背景换成纯白色,商品和包装上的文字保持不变" \ -F size="2048x2048" \ -F image=@product.png
生视频:MiniMax H3
接口是 POST /v1/videos。model 填 /v1/models 里 kind 为 video 的那个 id(写这篇时是 Minimax H3 Comfy,中间有空格,照原样填);duration 是秒数,3–15 秒,默认 5;清晰度和比例写在 metadata 里:resolution 可选 480p、720p、1080p,ratio 可选 16:9、9:16、4:3、3:4。
只写 prompt 就是文生视频,画面和声音一起生成。提示词怎么写看 AI 文生视频带声音。
curl -X POST https://vgen.aijoy.tech/v1/videos \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Minimax H3 Comfy",
"prompt": "清晨的海边,一只柯基沿着浪花奔跑,镜头低角度跟拍,海浪声和狗叫声",
"duration": 5,
"metadata": { "resolution": "720p", "ratio": "16:9" }
}'
生视频:首帧、首尾帧
传 image(一张图片网址)就是用这张图当第一帧;传 images 数组放两张,第一张是首帧、第二张是尾帧,视频会从第一张过渡到第二张。最多 2 张,多了直接报错。
图片网址要能从公网访问,PNG 或 JPEG,单张不超过 20MB。没有公网地址的话,也可以用 base64 传 first_frame / last_frame。首尾帧的玩法看 AI 首尾帧生成视频。
curl -X POST https://vgen.aijoy.tech/v1/videos \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Minimax H3 Comfy",
"prompt": "从日出平滑过渡到正午,云慢慢飘过",
"images": [
"https://example.com/first.jpg",
"https://example.com/last.jpg"
],
"duration": 5,
"metadata": { "resolution": "720p" }
}'
生视频:轮询和下载 mp4
用 GET /v1/videos/{id} 查状态,视频一般要几分钟,建议 10–20 秒查一次。progress 只有 0、50、100 三档,不是真实进度,判断 status 就行。
状态是 completed 后,GET /v1/videos/{id}/content 直接返回 mp4 文件,同样要带 Key;没生成完会返回 409。
# 查状态 curl https://vgen.aijoy.tech/v1/videos/evt-XXXX \ -H "Authorization: Bearer $KEY" # 完成后下载 curl -o out.mp4 https://vgen.aijoy.tech/v1/videos/evt-XXXX/content \ -H "Authorization: Bearer $KEY"
不想轮询:用完成回调
提交时加一个 callback_url(必须是公网 http/https 地址),任务完成或失败后,服务器会把查询结果 POST 到这个地址。没收到 2xx 会按 30 秒、2 分钟、5 分钟、15 分钟、1 小时重试,一共 6 次。
两点要注意:同一个任务可能收到不止一次,按任务 id 去重;回调没有签名,要据此发货或计费的话,先用任务 id 调查询接口确认一遍,别直接信回调内容。
怎么收费
和网页上同一个价格,按次扣积分,1 元 = 100 积分:
- Qwen 生图:1K 每张 2 积分,2K 每张 3 积分;文生图、图生图一个价。
- MiniMax H3 视频:基础价 + 每秒价 × 秒数。480p 每秒 1 积分;720p 2 积分 + 每秒 1.5 积分(5 秒 9.5 积分);1080p 5 积分 + 每秒 3 积分(5 秒 20 积分)。
积分在提交时预扣,积分不够直接返回 402,响应里会写本次需要多少、余额多少。任务失败自动退回。网页和 API 用的是同一个账户余额和同一份并发额度。
常见错误码
- 400:参数不对(比如比例、清晰度、时长不在模型支持范围内)、提示词命中违禁词、参考图太多。
- 401:没带 Key,或者 Key 填错、已停用。
- 402:积分不足。
- 404:模型名写错(以
/v1/models返回的 id 为准),或者任务 ID 不是你的。 - 409:结果还没生成完就去下载。
- 413:参考图超过 20MB。
- 429:同时在跑的任务太多,等前面的完成再提交。
- 502 / 503:生成失败或暂时没有算力,积分会退回,稍后重试。
每个响应都带 X-Request-Id 响应头,遇到问题反馈时附上它和任务 ID,方便查。
常见问题
- 为什么不直接返回图片网址给前端用?结果是私有的,要带 Key 才能下载,这样别人拿不到你生成的内容。在你的服务器上下载后再存到自己的存储里分发。
- 能一次生成好几张吗?一次请求一张,要多张就并发多发几个请求,注意并发上限。
- 生成的图和视频有 AI 标识吗?有,按规定带 AI 生成标识,和网页上生成的一样。
- 反向提示词有用吗?目前视频的
negative_prompt传了不报错,但不生效。想避免什么,在正向提示词里把想要的写具体。 - 生成的内容能商用吗?看 服务条款;参考图要用你自己有权使用的图片。