真实计费:使用 gpt-image-2-vip 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gpt-image-2-vip",
"prompt": "深色石材上的银色腕表,克制的影棚光线,不要文字。"
}
'import requests
url = "https://api.yingtu.ai/v1/images/generations"
payload = {
"model": "gpt-image-2-vip",
"prompt": "深色石材上的银色腕表,克制的影棚光线,不要文字。"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'gpt-image-2-vip', prompt: '深色石材上的银色腕表,克制的影棚光线,不要文字。'})
};
fetch('https://api.yingtu.ai/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"created": 1788307200,
"data": [
{
"b64_json": "iVBORw0KGgo="
}
],
"usage": {
"input_tokens": 24,
"output_tokens": 1756,
"total_tokens": 1780,
"input_tokens_details": {
"text_tokens": 24,
"image_tokens": 0
},
"output_tokens_details": {
"text_tokens": 0,
"image_tokens": 1756
}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Insufficient balance for this request",
"type": "new_api_error",
"param": "",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}GPT Image 2 VIP
GPT Image 2 VIP 调用示例
复制 gpt-image-2-vip 的 quality 生图、幂等异步任务、单图或多图输入、原生结果解析和非法值处理。
POST
/
v1
/
images
/
generations
真实计费:使用 gpt-image-2-vip 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "gpt-image-2-vip",
"prompt": "深色石材上的银色腕表,克制的影棚光线,不要文字。"
}
'import requests
url = "https://api.yingtu.ai/v1/images/generations"
payload = {
"model": "gpt-image-2-vip",
"prompt": "深色石材上的银色腕表,克制的影棚光线,不要文字。"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'gpt-image-2-vip', prompt: '深色石材上的银色腕表,克制的影棚光线,不要文字。'})
};
fetch('https://api.yingtu.ai/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"created": 1788307200,
"data": [
{
"b64_json": "iVBORw0KGgo="
}
],
"usage": {
"input_tokens": 24,
"output_tokens": 1756,
"total_tokens": 1780,
"input_tokens_details": {
"text_tokens": 24,
"image_tokens": 0
},
"output_tokens_details": {
"text_tokens": 0,
"image_tokens": 1756
}
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Insufficient balance for this request",
"type": "new_api_error",
"param": "",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}生成一张 medium 方图
import fs from "node:fs";
const response = await fetch("https://api.yingtu.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.YINGTU_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-image-2-vip",
prompt: "深色石材上的银色腕表,克制的摄影棚光线,不要文字",
size: "1024x1024",
quality: "medium",
n: 1,
}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const body = await response.json();
const encoded = body.data?.[0]?.b64_json;
if (!encoded) throw new Error("响应中没有图片数据");
fs.writeFileSync("watch.png", Buffer.from(encoded, "base64"));
异步生成 4K 横图
import base64
import os
import time
from pathlib import Path
import requests
headers = {
"Authorization": f"Bearer {os.environ['YINGTU_API_KEY']}",
"Idempotency-Key": "vip-station-001",
}
submitted = requests.post(
"https://api.yingtu.ai/v1/images/tasks",
headers=headers,
json={
"model": "gpt-image-2-vip",
"action": "generate",
"prompt": "雪山脚下的现代车站,电影感横幅,不要文字",
"size": "3840x2160",
"quality": "high",
"n": 1,
},
timeout=30,
)
submitted.raise_for_status()
if submitted.status_code != 202:
raise RuntimeError(f"异步提交应返回 HTTP 202,实际为 {submitted.status_code}")
task_id = submitted.json()["task_id"]
end_at = time.monotonic() + 300
while time.monotonic() < end_at:
polled = requests.get(
f"https://api.yingtu.ai/v1/tasks/{task_id}", headers=headers, timeout=30
)
polled.raise_for_status()
task = polled.json()
if task["status"] == "completed":
items = task.get("result", {}).get("data") or []
encoded = items[0].get("b64_json") if items else None
if not encoded:
raise RuntimeError("任务完成但没有返回图片数据")
Path("station.png").write_bytes(base64.b64decode(encoded))
break
if task["status"] in {"failed", "expired"}:
raise RuntimeError(task.get("error", {}).get("message", "任务失败"))
time.sleep(3)
else:
raise TimeoutError("等待任务完成超时")
上传来源图进行编辑
import base64
import os
from pathlib import Path
import requests
with open("room.png", "rb") as image:
response = requests.post(
"https://api.yingtu.ai/v1/images/edits",
headers={"Authorization": f"Bearer {os.environ['YINGTU_API_KEY']}"},
data={
"model": "gpt-image-2-vip",
"prompt": "保留家具布局,把墙面换成浅蓝色",
"size": "2048x2048",
"quality": "high",
"n": "1",
},
files={"image": ("room.png", image, "image/png")},
timeout=180,
)
response.raise_for_status()
body = response.json()
items = body.get("data") or []
encoded = items[0].get("b64_json") if items else None
if not encoded:
raise RuntimeError("响应中没有图片数据")
Path("room-edited.png").write_bytes(base64.b64decode(encoded))
用两张参考图提交异步任务
import fs from "node:fs";
const room = fs.readFileSync("room.png").toString("base64");
const style = fs.readFileSync("style.jpg").toString("base64");
const submitted = await fetch("https://api.yingtu.ai/v1/images/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.YINGTU_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
model: "gpt-image-2-vip",
action: "edit",
prompt: "保留家具布局,把墙面换成浅蓝色",
input_images: [
{ mime_type: "image/png", data: room },
{ mime_type: "image/jpeg", data: style },
],
size: "2048x2048",
quality: "high",
n: 1,
}),
});
if (submitted.status !== 202) throw new Error(`提交失败:${submitted.status}`);
const { task_id } = await submitted.json();
console.log(task_id);
task_id 后复用前面的轮询逻辑,成功图片在 24 小时后过期。
发送前校验 quality
只允许low、medium、high、auto。例如 ultra 会返回 HTTP 400,不会产生图片费用。
在线测试
表单固定使用gpt-image-2-vip,默认 1K 与 low。只有真实交付需要时再提高尺寸或质量。
在线测试会按当前价格产生真实 USD 0.05 费用。请使用开发密钥,不要分享带密钥的 cURL。
授权
YingTu API Key。
请求体
application/json
可用选项:
gpt-image-2-vip 示例:
"gpt-image-2-vip"
Minimum string length:
1示例:
"浅色桌面上的蓝色陶瓷茶壶,不要文字"
当前公开支持三档尺寸。请明确传入 size 以获得可预测的像素尺寸;4K 横图使用 3840x2160。
可用选项:
1024x1024, 2048x2048, 3840x2160 示例:
"1024x1024"
两个 GPT Image 接口都会转发该值;实际效果由所选上游决定。
可用选项:
low, medium, high, auto 示例:
"low"
当前文档子集返回一张图片。
可用选项:
1 最后修改于 2026年9月3日