gpt-image-2 画像生成
OpenAI 互換の gpt-image-2 文字から画像 API:base_url の差し替えだけで利用可能、マルチリージョン、QCode キーで統一請求
gpt-image-2 画像生成¶
QCode.cc は OpenAI 完全互換の gpt-image-2 文字から画像生成 API を提供します。gpt-image-2 は OpenAI が 2026 年 4 月に公開した最新の文字から画像モデルで、画像内の文字レンダリングは現存の公開モデルで最強(英語・中国語の文字を画像内に安定して描画可能)です。
QCode.cc 接続の特徴:
- OpenAI SDK そのまま:
base_urlだけ変更、リクエスト / レスポンス形式は 100% 互換 - マルチリージョン:HK / 日本 / 米国 / 欧州 / 深圳直結 — ネットワーク環境に応じて選択
- API キー統一:既存の QCode.cc
cr_キーを再利用、Claude Code / Codex / Gemini CLI と同一クォータ - 使用状況の統一表示:画像コールと対話コールが顧客ダッシュボードに統合表示、専用の使用状況ページも提供
主な用途:ポスター生成、挿絵、製品画像、UI モックアップ、SNS 素材。
クイックスタート¶
3 行の Python で最初の画像を:
from openai import OpenAI
import base64
client = OpenAI(
base_url="https://api.qcode.cc/qcode-img/v1",
api_key="cr_YOUR_QCODE_API_KEY",
timeout=180.0, # 1 枚 30-90 秒、最低 180 秒に設定
)
result = client.images.generate(
model="gpt-image-2",
prompt="A cyberpunk Tokyo street at night, neon reflecting in rain puddles",
size="1024x1024",
quality="low",
n=1,
)
with open("output.png", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))
⚠️
timeoutを必ず 180 秒以上に明示設定:OpenAI SDK のデフォルトは短く、gpt-image-2は推論ベースのため従来の文字から画像より大幅に時間がかかります(生成時間とタイムアウト 参照)。
接続エンドポイント¶
gpt-image-2 は QCode.cc の全接続ドメインで利用可能です。{base}/qcode-img/v1 の形式で組み立ててください:
| 利用地域 | 推奨 base_url | プロトコル | 備考 |
|---|---|---|---|
| 中国本土 | http://103.236.53.153/qcode-img/v1 |
HTTP | 深圳直結、CDN 100 秒制限なし、medium / high には必須 |
| 中国本土(HTTPS 必須) | https://api.qcode.cc/qcode-img/v1 |
HTTPS | グローバル CDN 経由、medium / high で 524 の可能性あり(CDN 100 秒上限 参照) |
| 香港 / 東南アジア | https://asia.qcode.cc/qcode-img/v1 |
HTTPS | 香港ノード |
| 欧州 | https://eu.qcode.cc/qcode-img/v1 |
HTTPS | フランクフルトノード |
| 北米 | https://us.qcode.cc/qcode-img/v1 |
HTTPS | ロサンゼルスノード |
すべてのエンドポイントは同一の請求体系にルーティングされ、使用量とクォータは統一されます。全ドメインの仕様は 接続点と API 形式 を参照。
qcode-imgは画像生成専用のパスプレフィックスで、Anthropic の/api、OpenAI の/openai/v1、Gemini の/geminiと並列です。
API 仕様¶
エンドポイント¶
POST {base_url}/images/generations
リクエストヘッダー¶
| Header | 必須 | 値 |
|---|---|---|
Authorization |
✓ | Bearer cr_xxxxxxxxxxxxxxxx(QCode.cc API キー) |
Content-Type |
✓ | application/json |
リクエストボディ¶
{
"model": "gpt-image-2",
"prompt": "A small ceramic vase with sunflower, photorealistic",
"size": "1024x1024",
"quality": "low",
"n": 1
}
| フィールド | 型 | 必須 | デフォルト | 値 |
|---|---|---|---|---|
model |
string | ✓ | — | 固定 gpt-image-2 |
prompt |
string | ✓ | — | 画像説明、多言語対応(英語 / 日本語 / 中国語など) |
size |
string | ✗ | 1024x1024 |
1024x1024(正方形)/ 1024x1536(縦)/ 1536x1024(横) |
quality |
string | ✗ | medium |
low / medium / high |
n |
integer | ✗ | 1 | 1 回の生成枚数(1 – 4) |
レスポンス¶
{
"created": 1777135432,
"data": [
{
"b64_json": "iVBORw0KGgo...(base64 PNG, 1-3 MB)",
"revised_prompt": "A small ceramic vase with sunflower..."
}
]
}
b64_json:画像の base64 PNG。<img src="data:image/png;base64,...">で直接表示可能revised_prompt:モデルが最適化したプロンプト(任意で表示)
エラーレスポンス¶
OpenAI 標準スキーマに準拠:
{
"error": {
"type": "rate_limit_error",
"code": "image_daily_limit",
"message": "Daily image generation count limit reached..."
}
}
| HTTP | code | 意味 |
|---|---|---|
| 401 | invalid_api_key |
API キー無効または無効化済み |
| 401 | key_expired |
API キー期限切れ |
| 422 | unsupported_size |
サイズ非対応(上記 3 種のみ) |
| 429 | crs_daily_exhausted |
アカウントの日次予算到達 |
| 429 | crs_total_exhausted |
アカウントの累積予算到達 |
| 429 | image_daily_limit |
1 キー 1 日 100 枚上限到達(デフォルト、引上げ可) |
| 429 | concurrency_exhausted |
1 キー同時 2 件上限到達(デフォルト、引上げ可) |
| 503 | service_overloaded |
サービス全体過負荷、しばらく後再試行 |
| 503 | image_provider_unavailable |
上流が一時的に利用不可、再試行を |
コードサンプル¶
Python(OpenAI SDK 推奨)¶
from openai import OpenAI
import base64
client = OpenAI(
base_url="https://api.qcode.cc/qcode-img/v1",
api_key="cr_YOUR_QCODE_API_KEY",
timeout=180.0,
)
result = client.images.generate(
model="gpt-image-2",
prompt="A cyberpunk Tokyo street at night, neon reflecting in rain puddles",
size="1024x1024",
quality="low",
n=1,
)
img_bytes = base64.b64decode(result.data[0].b64_json)
with open("output.png", "wb") as f:
f.write(img_bytes)
print("output.png を保存しました")
curl¶
curl https://api.qcode.cc/qcode-img/v1/images/generations \
-H "Authorization: Bearer cr_YOUR_QCODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A cyberpunk Tokyo street at night",
"size": "1024x1024",
"quality": "low",
"n": 1
}' \
| jq -r ".data[0].b64_json" | base64 -d > output.png
JavaScript / Node.js / ブラウザ¶
const r = await fetch("https://api.qcode.cc/qcode-img/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer cr_YOUR_QCODE_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-image-2",
prompt: "A cyberpunk Tokyo street at night",
size: "1024x1024",
quality: "low",
n: 1,
}),
});
const json = await r.json();
const dataUrl = "data:image/png;base64," + json.data[0].b64_json;
document.querySelector("img").src = dataUrl;
制限とクォータ¶
デフォルト制限¶
| 項目 | デフォルト | 備考 |
|---|---|---|
| 日次画像数 | 100 枚 / 日 / キー | 北京時間 0 時にリセット |
| 同時実行数 | 2 件 | 超過時 429 concurrency_exhausted |
| アカウント予算 | QCode.cc メインアカウントの dailyCostLimit / totalCostLimit と共有 |
超過時 429 crs_daily_exhausted |
デフォルトで大多数のユーザーには十分です。引上げ希望の場合はサポートまで。
使用状況の確認¶
- 顧客ダッシュボード:チャット呼び出しと統合表示(最終利用時間、当日コスト、累積コスト、モデル別内訳)
- セルフサービス画面:https://api.qcode.cc/qcode-img/usage — API キーを入力して 30 日間の使用量、詳細呼び出しリスト、ECharts トレンドグラフを表示(API キーはブラウザのローカルストレージにのみ保存、サーバーにアップロードしません)
課金ルール¶
1 枚あたりの基本価格¶
| size | low | medium | high |
|---|---|---|---|
| 1024×1024 | $0.08 (floor) | $0.08 (floor) | $0.211 |
| 1024×1536 | $0.08 (floor) | $0.08 (floor) | $0.165 |
| 1536×1024 | $0.08 (floor) | $0.08 (floor) | $0.165 |
| 2048×2048 | $0.08 (floor) | $0.08 (floor) | $0.285 |
1 回あたり最低 $0.08¶
- 実コスト < $0.08 の場合 $0.08 で課金(low / medium はほとんどこの floor に達する)
- 実コスト ≥ $0.08 の場合は実額で課金(上乗せなし)
複数枚¶
n > 1 の場合は枚数に比例して加算。例:n=2 + 1024×1024 high = 2 × $0.211 = $0.422。
失敗時は無課金¶
4xx / 5xx の失敗リクエストは課金されません。クライアント切断(接続クローズ)も無課金。
通貨¶
費用は USD 計算。最終決済は QCode.cc メインアカウントの通貨ポリシー(人民元 / 米ドル)に従います。
生成時間とタイムアウト¶
gpt-image-2 は推論ベースのモデルで、従来の文字から画像(DALL·E 3 / SDXL など)より大幅に時間がかかります:
| quality | 一般的な所要時間 | 複雑 prompt の上限 |
|---|---|---|
low |
20 – 35 秒 | 約 50 秒 |
medium |
50 – 90 秒 | 約 120 秒 |
high |
70 – 120 秒 | 約 150 秒 |
実装上の注意:
- OpenAI Python SDK のデフォルトタイムアウトは短いため、
timeout=180.0以上を明示設定必須 - ブラウザの
fetchにはデフォルトタイムアウトはありませんが、AbortControllerでタイムアウトを設定する場合は最低 180 秒 - 中国本土ユーザーが medium / high を使う場合は深圳直結エンドポイント必須、そうでないと下記の CDN 524 問題に当たります
CDN 100 秒ハード制限(524 エラー)¶
api.qcode.cc / asia.qcode.cc / eu.qcode.cc / us.qcode.cc 経由の HTTPS リクエストはグローバル CDN(CloudFlare)を通過します。CDN は 1 リクエストでオリジンの応答を 100 秒以上待つと強制的に 524 エラーを返します。
| quality | CDN 100 秒で安全? |
|---|---|
low |
✅ 安全(< 35 秒) |
medium |
⚠️ たまに上限到達(100 秒近く) |
high |
❌ 頻繁に 524 |
対策(medium / high 推奨):
- 深圳 HTTP エンドポイントを直接利用
http://103.236.53.153/qcode-img/v1(CDN 経由なし、100 秒制限なし) - または偶発的な 524 を許容してクライアント側で自動再試行
プロンプト記述のコツ¶
- 多言語対応:日本語 / 英語 / 中国語、混在も可
- 具体的に:環境、構図、ライティング、スタイル、レンズ / 焦点距離 / 視点など
- ブランド名 / 著名人物は避ける:モデルが拒否したり曖昧な結果を返す場合あり(OpenAI コンテンツポリシー)
- 文字レンダリング:
gpt-image-2は画像内の文字描画が非常に強力。日本語 / 英語 / 中国語のタイトル、短文、ポスター文字をプロンプトに直接書き込めます(特殊な構文不要)
サンプルプロンプト:
A vintage poster in Bauhaus style, bold black text "MORNING COFFEE" centered,
warm orange and cream color palette, geometric shapes, slightly textured paper background
OpenAI 公式 API との差異¶
| 項目 | OpenAI 公式 | QCode.cc |
|---|---|---|
| SDK 互換性 | — | ✅ 100% 互換、base_url 差し替えのみ |
| 課金 | トークンベース精算 | 上記の段階定価、最低 $0.08 / 枚 |
/v1/images/edits(画像編集) |
サポート | ⏳ 未対応 |
stream + partial_images(増分返却) |
サポート | ⏳ 未対応 |
/v1/images/generations メイン |
✅ | ✅ |
オンライン Playground¶
https://api.qcode.cc/qcode-img/ — ブラウザで即試用:
- API キー + Prompt 入力で即座に生成
- 中英バイリンガル切替
- デフォルト
low品質(CDN 524 回避) - 完全な API ドキュメント内蔵(curl / Python / JavaScript の 3 タブ + パラメーター表 + エラーコード表)
- 生成 PNG をワンクリックダウンロード
関連ドキュメント¶
- 接続点と API 形式 — QCode.cc の全接続ドメイン、プロトコルパス、curl 自己チェック
- 課金説明 — プラン、クォータ、料金ルール