> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GPT Image 2 API：令牌分组、计费、生成与编辑

> 维护已有的 gpt-image-2 与 gpt-image-2-vip 集成：按令牌分组区分按次与官转计费，查看尺寸质量参数、生成编辑请求和图片保存方法。

老张API的 `gpt-image-2` 按次还是按 token 计费，由令牌分组决定，只改请求里的 `model` 不会改变计费方式。这里的说明面向已有的 GPT Image 2 集成。

<Info>
  新接入请优先使用 [GPT Image 2.5](/api-capabilities/gpt-image-2-5)。已有集成一般只需换 `model`，并确认令牌可以调用新模型：

  * `gpt-image-2-vip` 换成 2.5 的 `-vip` 模型；
  * 官转集成换成 `gpt-image-2.5-flare` 或 `gpt-image-2.5-sunburst`。
</Info>

## 令牌分组与计费

`gpt-image-2` 和 `gpt-image-2-vip` 通过 OpenAI 兼容的 Images 接口调用：生成用 `POST /v1/images/generations`，编辑用 `POST /v1/images/edits`。

官方 API 转发（官转）指请求经老张API转发到官方 API 服务，并按官方的 token 口径计费。创建令牌时选择的分组和计费模式决定了线路：

| 令牌分组 | 计费模式 | `model` | `size` 与 `quality` | 计费 |
| - | - | - | - | - |
| `default` 或其他图像分组（名称见控制台） | 按次计费 | `gpt-image-2` | 不支持 | \$0.03/次 |
| `default` 或其他图像分组（名称见控制台） | 按次计费 | `gpt-image-2-vip` | 支持 | \$0.03/次 |
| `Sora2Official` | 按量计费 | `gpt-image-2` | 支持 | 按 token |
| `GPTImage2 Sora2 Enterprise` | 按量计费 | `gpt-image-2` | 支持 | 按 token |

价格来自 2026 年 9 月 24 日公开价格配置（见[模型与价格总表](/models)）。官转按量计费，`Sora2Official` 分组与 OpenAI 官方同价，每 1M tokens 单价为：

* 文本输入 \$5，缓存文本输入 \$1.25；
* 图像输入 \$8，缓存图像输入 \$2；
* 图像输出 \$30。

`GPTImage2 Sora2 Enterprise` 分组为官方价加 20%（分组倍率 1.2）。实际扣费以[调用日志](/faq/call-logs)为准，企业报价联系支持团队确认。

两个官转分组的区别：

* `Sora2Official`：官转分组，与 OpenAI 官方同价，上游为 Azure OpenAI 与 OpenAI 官方密钥混合。
* `GPTImage2 Sora2 Enterprise`：只使用 OpenAI 官方密钥，价格为官方价加 20%，适合对稳定性和官方参数一致性要求更高的生产调用。

分组只在[令牌管理](https://api.laozhang.ai/token)创建令牌时选择，不写进请求体的 `model`。发现扣费方式与预期不符时，先检查这个 Key 在控制台中的分组和计费模式；只改请求里的 `model` 不会改变计费方式。

## 参数支持

### default 分组的 gpt-image-2

按次线路，不支持 `size` 和 `quality`。需要按次计费并控制尺寸时，改用 `gpt-image-2-vip`。

### gpt-image-2-vip

* `size`：常用 `1024x1024`、`2048x2048`、`3840x2160`。
* 竖版 4K 可尝试 `size` 为 `2160x3840`，以返回图片的实际尺寸为准。
* `quality`：`low`、`medium`、`high`。
* 默认返回 `data[0].b64_json`。

### 官转分组的 gpt-image-2

按 OpenAI 官方参数编写请求，只替换 base URL 和 API Key。常用取值：

| 参数 | 取值 |
| - | - |
| `size`（方形） | `1024x1024`、`2048x2048` |
| `size`（横版） | `1536x1024`、`2048x1152`、`3840x2160` |
| `size`（竖版） | `1024x1536`、`2160x3840` |
| `size`（自动） | `auto` |
| `quality` | `low`、`medium`、`high`、`auto` |

其他字段按官方文档编写，正式使用前先在目标分组用少量请求确认。

`quality` 会明显影响生成耗时和输出 token 量。批量预览可先用 `low` 或 `medium`，定稿再用 `high`。

## 配置密钥与依赖

```bash theme={null}
export LAOZHANG_API_KEY="替换为你的老张API密钥"
export BASE_URL="https://api.laozhang.ai/v1"
python -m pip install pillow
```

按次示例使用 `default` 分组的按次计费令牌，官转示例使用 `Sora2Official` 或 `GPTImage2 Sora2 Enterprise` 分组的按量计费令牌。`pillow` 供后面的保存脚本识别图片格式。

## 生成图片

以下示例都把响应写入 `generation.json`。按你的令牌分组任选一个运行，再用[保存脚本](#保存返回的图片)取出图片。

### default 分组：gpt-image-2

不传 `size` 或 `quality`：

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "生成一张白色陶瓷马克杯放在灰色桌面上的产品图，柔和自然光，简洁背景"
  }' \
  -o generation.json
```

### default 分组：gpt-image-2-vip

需要按次计费并控制尺寸时，在请求体中传入 `size` 和 `quality`：

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2-vip",
    "prompt": "生成一张白色陶瓷马克杯放在灰色桌面上的产品图，柔和自然光，简洁背景",
    "size": "2048x2048",
    "quality": "high"
  }' \
  -o generation.json
```

### 官转分组：gpt-image-2

使用 `Sora2Official` 或 `GPTImage2 Sora2 Enterprise` 分组的令牌，参数按官方写法：

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "生成一张白色陶瓷马克杯放在灰色桌面上的产品图，柔和自然光，简洁背景",
    "size": "1536x1024",
    "quality": "high"
  }' \
  -o generation.json
```

## 编辑图片

编辑使用 `multipart/form-data` 上传本地图片：

* 先把要编辑的图片保存为当前目录下的 `source.png`；
* 使用 `-F` 时由 cURL 自动设置 `Content-Type`，不要再加 `application/json`；
* 以下示例都把响应写入 `edit.json`。

### default 分组：gpt-image-2

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -F "model=gpt-image-2" \
  -F "prompt=使用提供的图片作为源图。保留主体、构图和文字，只把杯身贴纸改成红色，并给杯口加一条很细的金色边。" \
  -F "image=@source.png" \
  -o edit.json
```

### default 分组：gpt-image-2-vip

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -F "model=gpt-image-2-vip" \
  -F "prompt=使用提供的图片作为源图。保留主体、构图和文字，只把贴纸改成蓝色。" \
  -F "image=@source.png" \
  -o edit.json
```

### 官转分组：gpt-image-2

```bash theme={null}
curl --fail-with-body "$BASE_URL/images/edits" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -F "model=gpt-image-2" \
  -F "prompt=使用提供的图片作为源图。保留主体、构图和文字，只把贴纸改成绿色。" \
  -F "image=@source.png" \
  -F "size=1024x1024" \
  -F "quality=high" \
  -o edit.json
```

## 保存返回的图片

响应的 `data[]` 中，每一项是下面两种之一：

* `b64_json`：Base64 图片内容，可能带 `data:image/png;base64,` 这类前缀，也可能缺少末尾的 `=`。
* `url`：图片下载地址，会过期，收到响应后要尽快下载。

将以下代码保存为 `save_images.py`，它会处理上述情况，并按实际格式命名文件：

```python theme={null}
import base64
import io
import json
import sys
import urllib.request
from pathlib import Path
from PIL import Image

if len(sys.argv) != 3:
    raise SystemExit("用法：python save_images.py 响应文件.json 输出文件前缀")


def decode_b64(value):
    # 去掉可能存在的 data:image/...;base64, 前缀，并补齐缺失的 = 填充
    if value.startswith("data:"):
        value = value.split(",", 1)[1]
    value = "".join(value.split())
    value += "=" * (-len(value) % 4)
    return base64.b64decode(value, validate=True)


response_path = Path(sys.argv[1])
output_prefix = sys.argv[2]
payload = json.loads(response_path.read_text(encoding="utf-8"))
if payload.get("error"):
    raise RuntimeError(payload["error"])
items = payload.get("data") or []
if not items:
    raise RuntimeError("响应中没有图片结果，请检查错误信息和调用日志")

for index, item in enumerate(items, start=1):
    if item.get("b64_json"):
        raw = decode_b64(item["b64_json"])
    elif item.get("url"):
        with urllib.request.urlopen(item["url"], timeout=60) as download:
            raw = download.read()
    else:
        raise RuntimeError(f"第 {index} 项缺少图片内容或下载地址")

    with Image.open(io.BytesIO(raw)) as picture:
        picture.load()
        extension = {"PNG": "png", "JPEG": "jpg", "WEBP": "webp"}.get(
            picture.format
        )
        if extension is None:
            raise RuntimeError(f"无法保存图片格式：{picture.format}")
        output = Path(f"{output_prefix}-{index}.{extension}")
        output.write_bytes(raw)
        print(f"已保存 {output}，尺寸 {picture.width} × {picture.height}")
```

生成或编辑请求结束后分别执行：

```bash theme={null}
python save_images.py generation.json generated
python save_images.py edit.json edited
```

输出文件名类似 `generated-1.png`，并打印实际尺寸。打开图片检查内容，再到[控制台调用日志](https://api.laozhang.ai/log)核对模型、分组和扣费。

## 常见问题

### 同一个 gpt-image-2 为何计费不同？

因为线路由令牌分组决定，参数范围也随之不同：

* `default` 分组：按次计费，不支持尺寸和质量参数。
* `Sora2Official` 与 `GPTImage2 Sora2 Enterprise` 分组：走官转，按 token 计费，参数按官方写法。

各分组的对照见[令牌分组与计费](#令牌分组与计费)。扣费方式与预期不符时，到[调用日志](https://api.laozhang.ai/log)核对每次请求的分组和扣费。

### 不带 -vip 的按次线路能传 size 吗？

不能，`default` 分组的 `gpt-image-2` 不支持尺寸参数。需要按次计费并控制尺寸时，使用 `gpt-image-2-vip`；需要官方参数写法时，使用官转分组的 `gpt-image-2`。

### gpt-image-2-vip 能输出 4K 吗？

可以。横版 4K 使用 `3840x2160`；竖版 4K 可以尝试 `2160x3840`，先用正式提示词测试，并以返回图片的实际尺寸为准。

### 已有 OpenAI 官方代码，怎样迁移到官转？

保留官方请求体，只换令牌和 base URL：

1. 创建 `Sora2Official` 或 `GPTImage2 Sora2 Enterprise` 分组的按量计费令牌；需要只走 OpenAI 官方密钥时，选择 `GPTImage2 Sora2 Enterprise`。
2. 保留 `model="gpt-image-2"`，把 base URL 改为 `https://api.laozhang.ai/v1`。
3. API Key 换成老张API令牌。

### 官转传 response\_format 报错怎么办？

删掉 `response_format` 和 `input_fidelity` 这两个字段。按 OpenAI 的规则：

* GPT Image 模型始终返回 Base64 图片，不支持 `response_format`；
* `gpt-image-2` 会自动以高保真处理每张输入图片，不允许修改 `input_fidelity`。

从 DALL·E 或更早的 GPT Image 模型迁移过来的代码常带着这两个字段。

需要图片链接时，把 `b64_json` 解码后上传到自己的存储，不要依赖接口返回 URL。

### 官转编辑图片为什么比文生图贵？

因为参考图也按 token 计费。`gpt-image-2` 会自动以高保真处理每张输入图片，参考图按图片输入 token 计费，所以带参考图的编辑请求输入 token 可能明显多于纯文生图，参考图越多，输入费用越高。输出部分仍由尺寸和质量决定。

预算时用几次代表性编辑请求的 `usage` 估算，实际扣费以[调用日志](/faq/call-logs)为准。按次线路不受参考图影响，仍按上表的单次价格扣费。

### b64\_json 解码失败怎么办？

常见原因是返回值带有 `data:image/png;base64,` 前缀或末尾缺少 `=`，[保存脚本](#保存返回的图片)会先处理这两种情况再解码；仍然失败时，检查响应是否其实是错误 JSON。

### 已有集成需要迁移到 GPT Image 2.5 吗？

不必立即迁移，需要 2.5 的效果时再按页首提示替换模型 ID，接口和结果处理保持不变。官转换成 2.5 后，同名 `quality` 档位的 token 用量和耗时可能变化，上线前先用正式提示词重新测试。完整说明见 [GPT Image 2.5 API](/api-capabilities/gpt-image-2-5) 及其[常见问题](/api-capabilities/gpt-image-2-5#常见问题)。

## 相关文档与来源

* [GPT Image 2.5 API](/api-capabilities/gpt-image-2-5)：新接入推荐的模型与线路
* [Images API 参考](/api-reference/images)：通用请求、响应与错误处理
* [图像生成 API 选型与价格](/api-capabilities/image-generation-guide)：与其他图像模型对比
* [OpenAI GPT Image 2](https://developers.openai.com/api/docs/models/gpt-image-2)与 [OpenAI 图像生成指南](https://developers.openai.com/api/docs/guides/image-generation)：官方模型说明与参数
* [OpenAI Images API 参考](https://developers.openai.com/api/reference/resources/images)：`response_format` 等官方字段说明
* [控制台模型价格](https://api.laozhang.ai/account/pricing)：当前单价与可用分组


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.