GPT Image 2:最初のImage APIリクエスト
BetterToken経由で最初のGPT Image 2リクエストを送り、b64_json画像を保存し、Key・モデル・残高のエラーを解決します。
目次
BetterTokenで最初の画像を生成するのに必要なのは、HTTPリクエスト1回だけです。 自分のAPI Keyと、https://www.bettertoken.ai/v1/images/generationsへのPOSTリクエストを用意します。リクエスト本文でモデルをgpt-image-2に指定し、テキストによる説明を渡してください。応答には画像がb64_jsonで返るため、これをデコードしてファイルに保存します。
BetterTokenはOpenAI互換のImage APIを提供しますが、独立したサービスです。Key、残高、リクエスト履歴はOpenAIではなくBetterTokenアカウントに属します。開始前にBetterToken DashboardでKeyを作成し、モデルと料金のページで現在の条件を確認してください。
必要なもの
- リクエストを送るための
curl; - 自分のBetterToken API Key;
- 正確なBase URL
https://www.bettertoken.ai/v1; - このImage API用の
gpt-image-2モデル; - Base64デコーダー、または短いPythonスクリプト。
実際のKeyをソースコード、スクリーンショット、あるいはShell履歴に残るコマンドへ書き込まないでください。環境変数に保存します。
export BETTERTOKEN_API_KEY="your_api_key_here"
上記の値はプレースホルダーです。自分のKeyを使い、公開しないでください。
最初のGPT Image 2リクエスト
自分のKeyでリクエストを実行する準備はできましたか? BetterTokenアカウントを作成し、API Keyを取得してソースコードの外に保管してください。BetterTokenアカウントを作成
画像生成Endpointへリクエストを送ります。
curl https://www.bettertoken.ai/v1/images/generations \
-H "Authorization: Bearer $BETTERTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean editorial illustration of a coding desk at night, green and graphite palette",
"n": 1,
"size": "1024x1024",
"response_format": "b64_json",
"output_format": "png"
}' \
-o image-response.json
これは同期コントラクトです。示した最初のリクエストに別の task ID、polling、callback は不要です。data[0].b64_json を読み、デコードして PNG を保存します。
画像を保存する
次の例はJSONを読み、Base64値をデコードしてbettertoken-image.pngを作成します。Python標準ライブラリだけを使います。
import base64
import json
with open("image-response.json", "r", encoding="utf-8") as source:
payload = json.load(source)
image_base64 = payload["data"][0]["b64_json"]
with open("bettertoken-image.png", "wb") as target:
target.write(base64.b64decode(image_base64))
print("Saved: bettertoken-image.png")
ファイルを開き、promptに合っているか確認してください。HTTP 200はリクエストが成功したことを示しますが、結果の目視確認に代わるものではありません。
2回目のリクエストを改善する
最初のテストでは、次の4要素を持つ短いpromptを使います。
- 被写体またはシーン;
- ビジュアルスタイル;
- 構図;
- 配色または照明。
例:
Editorial illustration of a developer reviewing an API response,
clean geometric style, centered composition, dark graphite background
with restrained green accents, no text, no logos
相反する要件を長く列挙するところから始めないでください。まず基本の構図を確認し、その後は1回に1つのパラメーターだけを変更します。どの表現が結果に影響したかを判断しやすくなります。
サイズ、quality、format は現在のパラメーターです。2回目のリクエスト前に、現在の Image API Docs で対応値を選んでください。このコントラクトは非同期 task/callback、batch processing、seller templates、画像品質の保証を確認するものではありません。
よくあるエラー
401:Keyが拒否される
BETTERTOKEN_API_KEYが現在の端末で設定され、AuthorizationヘッダーにBearerプレフィックスが含まれていることを確認します。echoでKeyを表示したり、完全な値をサポートに送ったりしないでください。
402 または残高不足
BetterToken Dashboardを開き、利用可能な残高を確認します。支払い済みのBetterToken残高は月末に自動でリセットされませんが、各リクエストには十分な残高が必要です。
404:パスが正しくない
画像生成では次の完全なパスを使います。
https://www.bettertoken.ai/v1/images/generations
Chat Completions Endpointに置き換えたり、api.openai.comを使ったりしないでください。BetterToken KeyはBetterToken Endpointで使用します。
400:モデルまたはパラメーターが正しくない
まず必須フィールドのmodelとpromptだけで試します。このガイドではgpt-image-2を使います。APIがモデルを利用できないと返す場合は、現在のModel IDとパラメーターをImage APIドキュメントと照合してください。
429 または 5xx
無限のリトライループを始めないでください。HTTP status、時刻、応答の安全な一部を記録し、待機後に再試行します。BetterToken Dashboardでは時刻で照合し、model、status、actual charge だけを確認します。
アプリケーションへ組み込む前の確認
リクエストをバックエンドや自動化フローへ移す前に、次を確認してください。
- Keyが環境変数またはsecrets managerに保存されている;
- リクエスト先が他社のEndpointではなくBetterTokenである;
- モデルとパラメーターが現在のドキュメントに基づく;
- Base64 payloadがエラーなくデコードできる;
- アプリケーションがリトライを制限し、non-2xx応答を処理する;
- コストを古いレビューではなく現在の価格ページで確認している。
要点
最初に動くフローは3ステップです。BetterToken Image APIへPOSTリクエストを送り、data[0].b64_jsonを読み、ファイルにデコードします。リクエスト実行前に現在のパラメーターと料金を確認してください。