qwen-image-2.0
通义千问 Qwen · 文生图
接口模型名称:qwen-image-2.0(请求体 model 必须与此完全一致)
| 项 | 值 |
|---|---|
| 类型 | 图片生成(文生图;可带参考图) |
| 调用方式 | 同步(一次请求直接返回图片结果) |
先看这几条
- 计费:按张数 / 分辨率档,单价以控制台为准
- 调用:同步,一次请求直接返回图片 URL
- 结果链接:
data.output中地址约 24 小时内有效,请及时保存 - 输入素材:参考图须 公网可访问
- 通用说明:图片模型 API
最小可跑通请求
{
"model": "qwen-image-2.0",
"content": [
{ "text": "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影" }
],
"parameters": {
"n": 1,
"size": "2048*2048",
"watermark": false
}
}
调用地址与鉴权
- URL:
https://mass.gogpu.cn/v1/images/completions - Header:
Content-Type: application/json;X-API-Key: sk-你的密钥(或Authorization: Bearer sk-你的密钥) - 超时:建议客户端 ≥ 60s(高分辨率可能十余秒)
必传 / 可选参数
顶层字段
| 字段 | 必传 | 类型 | 说明 |
|---|---|---|---|
model | 是 | string | 固定填 qwen-image-2.0(与控制台接口名一致) |
content | 是 | array | 输入内容数组;至少 1 条文本 |
parameters | 否 | object | 生成控制参数,见下表 |
conversation_id | 否 | number | 一般可不传;仅当需要写入已有对话记录时填写 |
content[](同一项不要同时填 text 与 image)
| 字段 | 必传 | 类型 | 说明 |
|---|---|---|---|
text | 文生图必填 | string | 正向提示词;整轮建议仅 1 条 text |
image | 图生/参考时 | string | 公网可访问的图片 URL |
parameters
| 字段 | 必传 | 类型 | 可选值 / 范围 | 默认 | 说明 |
|---|---|---|---|---|---|
n | 否 | int | 1~6(部分场景仅支持 1) | 1 | 生成张数 |
size | 否 | string | 须使用控制台该模型列出的尺寸(示例常用 2048*2048) | 模型默认 | 输出分辨率 |
negative_prompt | 否 | string | ≤ 500 字符 | 空 | 反向提示词(不希望出现的内容) |
prompt_extend | 否 | bool | true / false | true | 是否自动扩写提示词 |
watermark | 否 | bool | true / false | false | 是否加水印 |
seed | 否 | int | 0~2147483647 | 随机 | 随机种子,便于复现 |
TIP
若控制台该模型展示了可选分辨率,请优先使用列表中的 size,避免传不支持的尺寸。
请求体示例
文生图
{
"model": "qwen-image-2.0",
"content": [
{ "text": "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影" }
],
"parameters": {
"n": 1,
"size": "2048*2048",
"prompt_extend": true,
"watermark": false
}
}
带参考图
{
"model": "qwen-image-2.0",
"content": [
{ "image": "https://example.com/ref.png" },
{ "text": "保持构图,改成水彩风格" }
],
"parameters": {
"n": 1,
"size": "2048*2048",
"watermark": false
}
}
成功响应
{
"code": 0,
"data": {
"conversation_id": 199,
"output": [
"https://xxx/generated-xxxx.png"
],
"image_count": 1,
"request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"msg": "操作成功"
}
从 data.output[] 取图片地址并及时下载保存(约 24 小时内有效)。
代码示例
点击右上角标签切换语言(curl / Python / Node.js / Go):
curl -sS https://mass.gogpu.cn/v1/images/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: sk-你的密钥" \
-d '{
"model": "qwen-image-2.0",
"content": [{"text": "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影"}],
"parameters": {"n": 1, "size": "2048*2048", "watermark": false}
}'
import json
import urllib.request
BASE = "https://mass.gogpu.cn"
API_KEY = "sk-你的密钥"
body = {
"model": "qwen-image-2.0",
"content": [{"text": "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影"}],
"parameters": {"n": 1, "size": "2048*2048", "watermark": False},
}
req = urllib.request.Request(
f"{BASE}/v1/images/completions",
data=json.dumps(body).encode(),
method="POST",
headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
)
with urllib.request.urlopen(req, timeout=120) as r:
resp = json.loads(r.read().decode())
print(json.dumps(resp, ensure_ascii=False, indent=2))
if resp.get("code") == 0:
print("image url:", (resp.get("data") or {}).get("output", [None])[0])
const BASE = "https://mass.gogpu.cn";
const API_KEY = "sk-你的密钥";
const body = {
model: "qwen-image-2.0",
content: [{ text: "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影" }],
parameters: { n: 1, size: "2048*2048", watermark: false },
};
const resp = await fetch(`${BASE}/v1/images/completions`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": API_KEY,
},
body: JSON.stringify(body),
}).then((r) => r.json());
console.log(JSON.stringify(resp, null, 2));
if (resp.code === 0) console.log("image url:", resp.data?.output?.[0]);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
func main() {
const (
base = "https://mass.gogpu.cn"
apiKey = "sk-你的密钥"
)
var body any
if err := json.Unmarshal([]byte(`{
"model": "qwen-image-2.0",
"content": [
{ "text": "一只橘猫坐在窗台上晒太阳,温暖午后,写实摄影" }
],
"parameters": {
"n": 1,
"size": "2048*2048",
"watermark": false
}
}`), &body); err != nil {
panic(err)
}
b, err := json.Marshal(body)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, base+"/v1/images/completions", bytes.NewReader(b))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", apiKey)
client := &http.Client{Timeout: 120 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
raw, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(raw))
}
常见问题
| 现象 | 处理 |
|---|---|
| 模型不可用或不存在 | 核对 model 与控制台「接口模型名称」/ GET /v1/models |
| 余额不足 / 套餐额度不足 | 控制台充值或更换套餐 |
| 超时 | 拉长客户端超时(建议 ≥ 60s) |
| 参考图失败 | 确认图片 URL 公网可访问;size 使用控制台列出的尺寸 |
code: 7 或其他业务错误 | 阅读返回 msg;见 API 调用指南 |
