API 指南
GPT Image 2 VIP API 接入
本页展示 YingTu 当前使用的 API 设置,代码示例不会包含你的真实 Key。
快速开始
- 1
创建或选择一个 LaoZhang API Key。
- 2
复制模型 ID 与代码示例。
- 3
先执行一个小请求并检查响应,再扩大调用。
请求信息
- 生成接口
- POST /v1/images/generations
- 编辑接口
- POST /v1/images/edits
- Base URL
- https://api2.laozhang.ai
- 认证方式
- Bearer API Key
- 请求格式
- OpenAI Images
- 参考图
- 支持
- 参考图数量
- YingTu 最多选择 5 张(不是上游提供方上限)
- 验证状态
- 尚未验证——目前没有可核对的验证日期。
Python 示例
替换占位 Key 与你自己的提示词;需要参考图时按文档使用编辑接口。
文生图示例
cURL
export LAOZHANG_API_KEY="replace-with-your-key"
curl --fail-with-body --max-time 500 \
-X POST 'https://api2.laozhang.ai/v1/images/generations' \
-H "Authorization: Bearer ${LAOZHANG_API_KEY}" \
-H "Content-Type: application/json" \
--data '{"model":"gpt-image-2-vip","prompt":"极简咖啡海报,准确显示标题“COFFEE MADE SIMPLE”,高对比排版,温暖自然光,干净商业版式。","size":"2048x2048","quality":"high"}'
# The JSON response can contain base64 image data or an image URL.
# If this request times out, check request and billing logs before retrying.参考图编辑示例
gpt-image-2-vip · edit
import base64
import mimetypes
import os
import sys
import requests
API_KEY = os.environ.get("LAOZHANG_API_KEY")
if not API_KEY:
raise RuntimeError("Set the LAOZHANG_API_KEY environment variable before running this example.")
REQUEST_TIMEOUT_SECONDS = 500
headers = {"Authorization": f"Bearer {API_KEY}"}
def extension_for_mime(mime_type):
return {
"image/jpeg": "jpg",
"image/png": "png",
"image/webp": "webp",
"image/gif": "gif",
}.get(mime_type, "bin")
def decode_base64_image(value, fallback_mime="image/png"):
mime_type = fallback_mime
encoded = value
if value.startswith("data:"):
header, encoded = value.split(",", 1)
mime_type = header[5:].split(";", 1)[0] or fallback_mime
return base64.b64decode(encoded, validate=True), mime_type
def parse_json_response(response):
try:
result = response.json()
except ValueError as error:
print("API returned a non-JSON response.", file=sys.stderr)
raise SystemExit(1) from error
if not isinstance(result, dict):
print("API returned an unexpected JSON shape.", file=sys.stderr)
raise SystemExit(1)
return result
def extract_image(result):
if not isinstance(result, dict):
return None
images = result.get("data") or []
first_image = images[0] if images and isinstance(images[0], dict) else {}
encoded = first_image.get("b64_json")
if isinstance(encoded, str) and encoded:
return decode_base64_image(encoded)
image_url = first_image.get("url")
if isinstance(image_url, str) and image_url:
image_response = requests.get(image_url, timeout=REQUEST_TIMEOUT_SECONDS)
image_response.raise_for_status()
mime_type = image_response.headers.get("Content-Type", "image/png").split(";", 1)[0]
return image_response.content, mime_type
return None
def save_result_image(result):
extracted = extract_image(result)
if not extracted:
keys = sorted(result.keys()) if isinstance(result, dict) else []
print(f"No image data in response. Top-level keys: {keys}", file=sys.stderr)
raise SystemExit(1)
image_bytes, mime_type = extracted
output_path = f"output.{extension_for_mime(mime_type)}"
with open(output_path, "wb") as output_file:
output_file.write(image_bytes)
print(f"Image saved: {output_path} ({mime_type})")
API_URL = "https://api2.laozhang.ai/v1/images/edits"
data = {
"model": "gpt-image-2-vip",
"prompt": "极简咖啡海报,准确显示标题“COFFEE MADE SIMPLE”,高对比排版,温暖自然光,干净商业版式。",
"size": "2048x2048",
"quality": "high"
}
opened_files = []
files = []
image_1_path = "image_1.jpg" # Replace with your reference image path
image_1_mime = mimetypes.guess_type(image_1_path)[0] or "image/jpeg"
image_1_file = open(image_1_path, "rb")
opened_files.append(image_1_file)
files.append(("image", (image_1_path, image_1_file, image_1_mime)))
try:
try:
response = requests.post(
API_URL,
headers=headers,
data=data,
files=files,
timeout=REQUEST_TIMEOUT_SECONDS,
)
except requests.Timeout as error:
print(
"Request timed out after 500 seconds. The result status may be unknown; "
"check call and billing logs before retrying.",
file=sys.stderr,
)
raise SystemExit(1) from error
finally:
for image_file in opened_files:
image_file.close()
if response.status_code != 200:
print(f"API error {response.status_code}: {response.text}", file=sys.stderr)
raise SystemExit(1)
save_result_image(parse_json_response(response))
正式调用前,请在 LaoZhang 账户确认实时价格、余额和模型权限。
请求参数摘要
以下字段与当前 YingTu 客户端及代码示例保持一致。
参数发送方式
- model
- 必填。使用本页显示的精确模型 ID。
- prompt
- 必填。填写图片指令,不要把 API Key 写进提示词。
- 输出控制
size使用模型注册表中配置的精确尺寸。- quality
- 可选。使用此路线已配置的质量档位。
- 参考图
- 可选。YingTu 浏览器最多 5 张,以 multipart
image字段发送到编辑接口。
响应与超时处理
- 图片响应
- 客户端解码
data[0].b64_json(包括 data URL),或下载data[0].url并保留其 MIME 类型。 - 非图片响应
- 没有
b64_json或url时不会判为成功;如有 API 消息则直接显示。
客户端 500 秒超时
现有 YingTu 客户端在 500 秒后终止等待;此时上游结果与扣费状态仍可能未知。
不自动重试
YingTu 不会自动重试。再次发起付费调用前,先检查请求与计费日志。
常见错误路径
- 认证
- 确认环境变量中是预期的 Key,并通过 Bearer 认证头发送。
- 权限或余额
- 在 LaoZhang 检查模型权限、当前余额、计费和账户限制。
- 限流
- 降低并发,并先查看返回的上游或账户消息。
- 非图片或空结果
- 检查拦截原因、结束原因、API 消息与 response ID;仅在响应说明原因时再针对性调整提示词。
- 超时
- 最终状态可能未知;再次请求前先检查调用与计费日志。
已知限制
使用生成结果前,请重点检查以下内容。
- 检查下载文件的实际尺寸;配置的输出控制不能替代结果核验。
- 逐字检查生成图片中的文字、数字和标点。
- 使用前检查主体身份、Logo、包装、颜色与细小品牌元素。
- 可用性与延迟会随上游容量变化。
- 实时价格、余额、权限和扣费以 LaoZhang 账户为准。
API 常见问题
API Key 应放在哪里?
使用代码示例中的环境变量。不要提交、打印,也不要把完整 Key 写入提示词。
超时是否代表请求失败?
不一定。500 秒后 YingTu 停止等待,但上游结果或扣费仍可能未知;重试前先检查日志。
参考图数量是提供方上限吗?
不是。本页显示的是 YingTu 当前限制,不代表上游提供方最大值。
在哪里确认价格和权限?
当前价格、余额、模型权限和扣费以 LaoZhang 账户为准。
价格与计费
本页显示参考价格;实时价格、余额、权限和扣费以 LaoZhang 账户为准。
模型信息
- 模型 ID
- gpt-image-2-vip
- 参考价格
- $0.03/ 次
- 输出尺寸
- 1K / 2K / 4K
- 精确输出尺寸
- 30 个可选尺寸
- 质量档位
- low / medium / high
- API 类型
- OpenAI Images
在图片工作室测试
以下是图片工作室当前可用的设置。
YingTuLaoZhang