图片生成 · API
qwen-image-2.0-pro
Unicomp AI 媒体 API · unicomp.media.v1
调用示例
正式 Base URL 为 https://www.unicompapi.com/v1;设置 UNICOMP_BASE_URL 与 UNICOMP_API_KEY 后替换素材与 Base64 占位内容。新请求使用 REQUEST_KEY,响应 X-Unicomp-Request-Id 保存为 REQUEST_ID;两者用于查询同一原单。
POST /v1/images/generations
# 仅用于新请求;未知结果时查询原单,不重新执行本段
# 需要 Python 3;保存打印的 REQUEST_KEY
REQUEST_KEY="$(python3 -c 'import uuid; print(uuid.uuid4())')"
[ -n "$REQUEST_KEY" ] || exit 1 # UUID生成失败时停止
printf 'REQUEST_KEY=%s\n' "$REQUEST_KEY"
curl "$UNICOMP_BASE_URL/images/generations" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $REQUEST_KEY" \
--data '{
"model": "qwen-image-2.0-pro",
"prompt": "白色背景上的橙色陶瓷杯",
"parameters": {
"n": 1,
"prompt_extend": true,
"size": "1024x1024",
"watermark": false
},
"response_format": "url"
}'先读取报价
POST /v1/images/quote,Bearer鉴权,JSON与生成请求相同。报价只读,不创建任务、不占额。生成请求可附 expected_price_version 和 expected_quote_amount,对应报价的 price_version 与 quoted_amount;变化返回409。
{
"object": "media.quote",
"model": "qwen-image-2.0-pro",
"price_version": "<报价返回的版本>",
"parameters": {
"n": 1,
"prompt_extend": true,
"size": "1024x1024",
"watermark": false
},
"currency": "CNY_MICRO",
"quoted_amount": "<按实际参数计算的整数微元>"
}准备本人参考素材
素材API目前仅开放个人账户的个人Key。上传不创建生成任务。此型号可用上传格式与配置如下;参考输入的角色和数量按生成方式或对应调用组合填写,不能把接口可上传格式当作模型输入能力。使用本人同账号Key上传原文件,返回data.id后填入assetIds,不能使用他人素材ID。
PNG / JPEG / WebP;原文件≤20MiB;省略X-Image-Profile。总量与轮次按对应调用组合约束。
curl "$UNICOMP_BASE_URL/assets" \
-H "Authorization: Bearer $UNICOMP_API_KEY" \
-H "Content-Type: image/png" \
-H "X-File-Name: reference.png" \
--data-binary @reference.png{
"data": {
"id": "<本人素材ID>",
"object": "asset",
"name": "reference.png",
"kind": "image",
"mime_type": "image/png",
"bytes": "<真实文件字节数>",
"sha256": "<真实SHA256>",
"created_at": "<上传时间>",
"url": "/v1/assets/<本人素材ID>/content"
}
}按上方对应格式设置X-Image-Profile;原二进制大小按该profile及模型限制,Content-Type与实际内容必须匹配;X-File-Name为URL编码文件名。模型输入还需符合本页尺寸、格式、数量和总大小限制。素材列表GET /v1/assets,本人素材内容GET/HEAD /v1/assets/<素材ID>/content。
字段与限制
| 字段 | 类型 | 范围 / 默认值 |
|---|---|---|
model | string | 精确使用 qwen-image-2.0-pro |
prompt | string | 生成描述;按所选生成方式的必填规则 |
parameters.size | string · 可选 | 1024x1024、1536x1024、1024x1536、2048x2048、2688x1536、1536x2688、2368x1728、1728x2368;默认 1024x1024 |
parameters.n | integer · 可选 | 1 – 6;默认 1 |
parameters.prompt_extend | boolean · 可选 | true / false;默认 true |
parameters.watermark | boolean · 可选 | true / false;默认 false |
parameters.seed | integer · 可选 | 0 – 2147483647 |
assetIds / generatedAssetIds | string[] · 按型号参考能力 | 0–3 张本人素材,不能重复 |
expected_price_version | string · 可选 | 原quote.price_version,防止价格版本变化 |
expected_quote_amount | integer · 可选 | 原quote.quoted_amount,正整数人民币微元 |
response_format | string · 可选 | 仅url;结果通过链接读取 |
- prompt 为文字描述,不得为空,最多 1300 字符;平台不会自动截断。
- 请求参数以本页定义为准;未知字段、超范围或不同层级冲突会被拒绝,不会静默忽略。
- 素材数量按所选生成方式填写;当前方式为 image_edit,素材数量为 0–3 件。assetIds 引用本人当前账号已上传素材;generatedAssetIds 引用本人已审核作品。两数组合计须满足本页数量和格式限制,不接受裸远程 URL。使用本人Bearer向 /v1/assets 上传文件,取得 data.id 后引用;官网已有本人素材也可复用。
- 输入图完整解码,每图≤10MiB、宽高384–2048,总输入≤20MiB。
- 千问2.0与Pro按输出张数收费,参考输入不另收费;3.0与Pro输入、输出分别按原档位实际数量计费。
- 2.0与Pro不接受 prompt_extend_mode 或 enable_thinking,请仅使用上表列出的参数。
- 计费单位:image。结果未确认时查询原任务,不要重复创建。
- 图片和视频完成后通过content私有下载;查询和下载使用创建任务的同一Key。公开分享须审核。结果处理中或未知时保留原任务,继续查询,不重复生成。
当前价格
接口金额使用整数微元:1元 = 1,000,000微元。按报价和实际用量结算。
| 规格 | 计价项 | 人民币单价 |
|---|---|---|
| 1024x1024 | 输出张 | ¥0.45/输出张 |
| 1536x1024 | 输出张 | ¥0.45/输出张 |
| 1024x1536 | 输出张 | ¥0.45/输出张 |
| 2048x2048 | 输出张 | ¥0.45/输出张 |
| 2688x1536 | 输出张 | ¥0.45/输出张 |
| 1536x2688 | 输出张 | ¥0.45/输出张 |
| 2368x1728 | 输出张 | ¥0.45/输出张 |
| 1728x2368 | 输出张 | ¥0.45/输出张 |
响应与结果
POST或GET尚未完成时返回202与真实任务状态,示意结构如下。图片仅已完成时包含OpenAI风格created/data;未完成的202任务不是images.generate已完成图片响应。
{
"id": "<原任务号>",
"object": "media.task",
"protocol": "unicomp.media.v1",
"model": "qwen-image-2.0-pro",
"status": "queued",
"poll_url": "/v1/images/<原任务号>",
"review_phase": "submitted"
}使用相同原Key GET /v1/images/<原任务号> 查询。queued/running表示处理中;reviewing表示结果处理中;submission_unknown等待核对,不能重复生成;succeeded且output_approved才交付。余额不足待结算时仍可显示 reviewing 与 output_approved;以 billing.settlement_pending=true 和 error.code=MEDIA_BALANCE_REQUIRED 识别待结算状态,补足余额后沿原任务结算,不重新生成。
{
"id": "<原任务号>",
"status": "reviewing",
"review_phase": "output_approved",
"billing": {
"currency": "CNY_MICRO",
"quoted_amount": "<原报价整数微元>",
"charged_amount": 0,
"reserved_amount": "<原预留整数微元>",
"settlement_pending": true,
"actual_amount": "<实际所需整数微元>"
},
"error": {
"code": "MEDIA_BALANCE_REQUIRED",
"message": "余额不足,请补足余额后结算原任务"
}
}{
"id": "<原任务号>",
"status": "succeeded",
"created": 1800000000,
"review_phase": "output_approved",
"data": [
{
"url": "/v1/images/<原任务号>/content?asset_id=<原作品号>",
"asset_id": "<原作品号>"
}
]
}data逐件列出批次作品。content须携带原Bearer,支持GET/HEAD/Range;未交付、跨Key/账号、撤销Key、错误asset_id均不能读取。不要将私有URL当无需鉴权的分享链接。