メインコンテンツへ移動

GPT Image 2 API の料金と使い方(Python サンプル付き)

LaoZhang の API キー 1 つで呼び出せ、YingTu の画像スタジオと同じエンドポイントを使います。エンドポイント、パラメータ、1 枚の料金、コピーして使えるコードをまとめました。コード例に実際のキーは入りません。2026 年 10 月 9 日時点で、このページのモデル ID はすべて 1 枚ごとの課金でサブスクはなく、1 つのキーで全部使えます。

料金 $0.03/ 枚OpenAI Images1K / 2K / 4K新規ユーザーに $0.1

重要な情報(2026 年 10 月 10 日時点)

  • 同じエンドポイントで使えるモデル ID:gpt-image-2-vip、gpt-image-2.5-flare-vip、gpt-image-2.5-sunburst-vip。LaoZhang のキー 1 つですべて使えます。
  • 1 枚あたりの料金:GPT Image 2 VIP $0.03、GPT Image 2.5 Flare $0.03、GPT Image 2.5 Sunburst $0.03。サブスクなしで、1 枚ごとに課金されます。
  • Base URL https://api2.laozhang.ai、OpenAI 形式:POST /v1/images/generations · /v1/images/edits。
  • LaoZhang の新規アカウントには $0.1 のテスト用クレジット:GPT Image 2 VIP 約 3 枚。
  • laozhang.ai でのチャージは Stripe 経由のカード払いか USDT。

3 ステップで動かす

  1. 1

    laozhang.ai で API キーを作成(新規アカウントは $0.1 付き)。

  2. 2

    下のモデル ID とコードをコピーし、キーを環境変数に入れる。

  3. 3

    まず 1 枚生成してレスポンスを確認してから、本格的に使う。

エンドポイントと認証

生成エンドポイント
POST/v1/images/generations
編集エンドポイント
POST/v1/images/edits
Base URL
https://api2.laozhang.ai
認証
Bearer API キー
リクエスト形式
OpenAI Images
参照画像
対応
参照画像数
YingTu で最大 5 枚(提供元の上限ではありません)
確認状況
未確認 — 確認できる日付の記録がありません。

コード例

プロンプトを自分のものに変えてください。参照画像を使う場合は下の編集用の例を。

テキストから画像の例

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":"A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.","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.

参照画像編集の例

Pythongpt-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": "A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.",
    "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任意。low・medium・high から選びます。
参照画像任意。YingTu ブラウザでは最大 5 枚を multipart の image として編集エンドポイントへ送信します。

レスポンスとタイムアウト

画像レスポンス
data[0].b64_json(data URL を含む)をデコードするか、data[0].url をダウンロードします。
画像以外のレスポンス
b64_json または url がなければ成功扱いにせず、API メッセージがあれば表示します。

クライアントの 500 秒タイムアウト

500 秒後に YingTu は待機を終了します。この時点では上流結果や請求が不明な場合があります。

自動再試行なし

YingTu は自動で再試行しません。再度の有料呼び出し前にリクエストと請求ログを確認します。

一般的なエラー

認証
環境変数の Key と Bearer 認証ヘッダーを確認します。
権限または残高
LaoZhang でモデル権限、残高、請求、アカウント制限を確認します。
レート制限
並列数を下げ、返された上流またはアカウントのメッセージを確認します。
画像なし
ブロック・終了理由、API メッセージ、response ID を確認します。
タイムアウト
最終状態が不明な場合があります。再試行前に呼び出しと請求ログを確認します。

既知の制約

生成結果を使う前に、次の点を確認してください。

  • ダウンロードしたファイルの実寸を確認します。
  • すべての文字、数字、記号を校正します。
  • 人物・ロゴ・包装・色・細部を使用前に確認します。
  • 利用可否と待ち時間は変動する場合があります。
  • 価格、残高、権限、請求は LaoZhang で確認します。

このエンドポイントで使える GPT Image 2 のモデル ID

エンドポイントもリクエスト形式も同じで、モデル ID だけを変えます。

モデルモデル ID料金サイズ
GPT Image 2 VIPgpt-image-2-vip$0.03/ 枚1K / 2K / 4K
GPT Image 2.5 Flaregpt-image-2.5-flare-vip$0.03/ 枚1K / 2K / 4K
GPT Image 2.5 Sunburstgpt-image-2.5-sunburst-vip$0.03/ 枚1K / 2K / 4K

API FAQ

GPT Image 2 API の料金は?

1 枚ごとの課金でサブスクなし:GPT Image 2 VIP $0.03、GPT Image 2.5 Flare $0.03、GPT Image 2.5 Sunburst $0.03。すべての課金は LaoZhang アカウントで確認できます。

GPT Image 2 の API キーはどう取得しますか?

laozhang.ai でトークンを作成します(このページ上部のトークンボタン)。1 つのキーで表のすべてのモデルを使え、新規アカウントには $0.1 のテスト用クレジットがあります。

ベース URL は?

https://api2.laozhang.ai/v1、OpenAI Images 形式:/v1/images/generations と /v1/images/edits。

GPT Image 2 API に無料枠はありますか?

テスト用の無料分があります。LaoZhang の新規アカウントには $0.1(GPT Image 2 約 3 枚分)。その後は呼び出しごとに残高から 1 枚単位で課金され、月額プランや枠の購入はありません。

GPT Image 2 API で使えるサイズは?

size には 30 種類の正確な「幅x高さ」のどれかを指定します。1K・2K・4K それぞれに 10 種類の比率があり、例は 1280x1280、2048x2048(既定)、3840x2160。quality は low・medium・high で、どのサイズ・品質も同じ $0.03 です。

API Key はどこに保存しますか?

コード例の環境変数を使い、コード、ログ、プロンプトに完全な Key を残しません。

タイムアウトは失敗ですか?

必ずしもそうではありません。500 秒後も結果や請求が不明な場合があるため、ログを確認します。

参照画像数は提供元の上限ですか?

いいえ。YingTu のブラウザ側の上限で、モデル自体の上限ではありません。

価格と権限はどこで確認しますか?

最新の価格、残高、権限、請求は LaoZhang アカウントで確認します。

料金と請求

1 枚ごとの課金です。表示は LaoZhang の現在の料金で、実際の請求・残高・使えるモデルは LaoZhang アカウントで確認できます。

モデル情報
モデル ID
gpt-image-2-vip
料金
$0.03/ 枚
出力サイズ
1K / 2K / 4K
正確な出力サイズ
30個の選択可能なサイズ
品質レベル
low / medium / high
API 形式
OpenAI Images

まずスタジオで 1 枚試す

ここにある設定はすべて YingTu の画像スタジオで使え、新規ユーザーは $0.1 分を無料で試せます。

YingTuLaoZhang