真实计费:使用 gpt-image-2-web 生成图片
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-web",
"prompt": "浅色桌面上的蓝色陶瓷茶壶,柔和影棚光线,不要文字。"
}
'import requests
url = "https://api.yingtu.ai/v1/images/generations"
payload = {
"model": "gpt-image-2-web",
"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-web', 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 Web
GPT Image 2 Web 调用示例
复制 gpt-image-2-web 的文生图、幂等异步任务、单图或多图输入、轮询和 Base64 保存代码。
POST
/
v1
/
images
/
generations
真实计费:使用 gpt-image-2-web 生成图片
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-web",
"prompt": "浅色桌面上的蓝色陶瓷茶壶,柔和影棚光线,不要文字。"
}
'import requests
url = "https://api.yingtu.ai/v1/images/generations"
payload = {
"model": "gpt-image-2-web",
"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-web', 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"
}
}用 cURL 生成 1K 图片
curl 'https://api.yingtu.ai/v1/images/generations' \
-H 'Authorization: Bearer YOUR_YINGTU_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gpt-image-2-web",
"prompt": "窗边的极简阅读灯,杂志产品摄影,不要文字",
"size": "1024x1024",
"quality": "high",
"n": 1
}' > result.json
jq -er '.data[0].b64_json' result.json | base64 --decode > lamp.png
quality 会转发,实际效果取决于所选上游。
提交异步生图并轮询
import base64
import os
import time
from pathlib import Path
import requests
headers = {
"Authorization": f"Bearer {os.environ['YINGTU_API_KEY']}",
"Idempotency-Key": "greenhouse-job-001",
}
submitted = requests.post(
"https://api.yingtu.ai/v1/images/tasks",
headers=headers,
json={
"model": "gpt-image-2-web",
"action": "generate",
"prompt": "雪地森林中的玻璃温室,黄昏光线,不要文字",
"size": "2048x2048",
"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("greenhouse.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("等待任务完成超时")
编辑一张来源图片
curl 'https://api.yingtu.ai/v1/images/edits' \
-H 'Authorization: Bearer YOUR_YINGTU_API_KEY' \
-F 'model=gpt-image-2-web' \
-F 'image=@product.png;type=image/png' \
-F 'prompt=保留产品主体,把背景换成浅蓝色' \
-F 'size=1024x1024' \
-F 'n=1' > edit.json
jq -er '.data[0].b64_json' edit.json | base64 --decode > edited.png
用两张参考图提交异步任务
import fs from "node:fs";
const product = fs.readFileSync("product.png").toString("base64");
const scene = fs.readFileSync("scene.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-web",
action: "edit",
prompt: "保留产品主体,把背景换成浅蓝色",
input_images: [
{ mime_type: "image/png", data: product },
{ mime_type: "image/jpeg", data: scene },
],
size: "1024x1024",
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 小时。
在线测试
下面的表单固定使用gpt-image-2-web,提供三档尺寸与 quality 选项。
在线测试会按当前价格产生真实 USD 0.03 费用。请使用开发密钥,不要分享带密钥的 cURL 或截图。
授权
YingTu API Key。
请求体
application/json
可用选项:
gpt-image-2-web 示例:
"gpt-image-2-web"
Minimum string length:
1示例:
"浅色桌面上的蓝色陶瓷茶壶,不要文字"
当前公开支持三档尺寸。请明确传入 size 以获得可预测的像素尺寸;4K 横图使用 3840x2160。
可用选项:
1024x1024, 2048x2048, 3840x2160 示例:
"1024x1024"
两个 GPT Image 接口都会转发该值;实际效果由所选上游决定。
可用选项:
low, medium, high, auto 示例:
"low"
当前文档子集返回一张图片。
可用选项:
1 最后修改于 2026年9月3日