Генерация изображений gpt-image-2

OpenAI-совместимое API генерации изображений gpt-image-2: переключите base_url и используйте, мульти-регион, единый биллинг через QCode-ключ

Генерация изображений gpt-image-2

QCode.cc предоставляет полностью OpenAI-совместимое API gpt-image-2 для генерации изображений из текста. gpt-image-2 — это новейшая модель text-to-image от OpenAI (выпущена в апреле 2026 года) с сильнейшим на сегодня рендерингом текста внутри изображения среди публичных моделей (стабильно отрисовывает английские и китайские символы внутри картинки).

Что добавляет QCode.cc:

  • Drop-in для OpenAI SDK — меняется только base_url; форматы запроса и ответа на 100% идентичны
  • Мульти-регион: HK / Япония / США / Европа / прямое подключение Шэньчжэня — выбирайте ближайший узел
  • Единый API-ключ: используется ваш существующий ключ QCode.cc (cr_…) — общая квота с Claude Code, Codex и Gemini CLI
  • Единый просмотр использования: вызовы изображений и чата объединены в дашборде клиента + отдельная страница самообслуживания

Типичные сценарии: постеры, иллюстрации, изображения товаров, UI-моки, материалы для соцсетей.


Быстрый старт

Три строки 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,  # одно изображение 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 основан на reasoning и работает заметно дольше традиционных моделей text-to-image (см. Время генерации и timeout).


Точки доступа

gpt-image-2 доступен на всех точках доступа QCode.cc — добавьте /qcode-img/v1 к хосту:

Регион Рекомендуемый base_url Протокол Примечания
Материковый Китай http://103.236.53.153/qcode-img/v1 HTTP Прямое подключение Шэньчжэня, без 100-секундного лимита CDN; обязателен для quality medium / high
Материковый Китай (только HTTPS) https://api.qcode.cc/qcode-img/v1 HTTPS Через глобальный CDN; medium / high могут давать 524 (см. Жёсткий лимит CDN 100 с)
HK / Юго-Восточная Азия 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 — это путь, выделенный для генерации изображений, параллельный путям /api (Anthropic), /openai/v1 (OpenAI) и /gemini (Google).


Спецификация API

Эндпоинт

POST {base_url}/images/generations

Заголовки

Header Обязателен Значение
Authorization Bearer cr_xxxxxxxxxxxxxxxx (ваш API-ключ QCode.cc)
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 – 4)

Ответ

{
  "created": 1777135432,
  "data": [
    {
      "b64_json": "iVBORw0KGgo...(base64 PNG, 1-3 MB)",
      "revised_prompt": "A small ceramic vase with sunflower..."
    }
  ]
}
  • b64_json: PNG в base64. Можно отрендерить напрямую через <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 размер не поддерживается (только три варианта выше)
429 crs_daily_exhausted Достигнут дневной бюджет аккаунта
429 crs_total_exhausted Достигнут общий бюджет аккаунта
429 image_daily_limit Достигнут дневной лимит 100 картинок на ключ (по умолчанию, можно повысить)
429 concurrency_exhausted Достигнут лимит параллельных запросов 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 / день / ключ Сброс в 00:00 по Пекину
Параллельные запросы 2 в работе Превышение даёт 429 concurrency_exhausted
Бюджет аккаунта Общий с dailyCostLimit / totalCostLimit главного QCode-аккаунта Превышение даёт 429 crs_daily_exhausted

Для подавляющего большинства пользователей значений по умолчанию хватает. Для повышения — обратитесь в поддержку.

Просмотр использования

  • Дашборд клиента: вызовы изображений объединены с чатом (последняя активность, дневная стоимость, накопленная стоимость, разбивка по моделям)
  • Страница самообслуживания: https://api.qcode.cc/qcode-img/usage — введите ключ для просмотра статистики за 30 дней, детального журнала вызовов и графика ECharts (ключ хранится только в вашем браузере, на сервер не загружается)

Биллинг

Цена за изображение

size low medium high
1024×1024 $0.08 (минимум) $0.08 (минимум) $0.211
1024×1536 $0.08 (минимум) $0.08 (минимум) $0.165
1536×1024 $0.08 (минимум) $0.08 (минимум) $0.165
2048×2048 $0.08 (минимум) $0.08 (минимум) $0.285

Минимум $0.08 за вызов

  • Если фактическая стоимость < $0.08, выставляется $0.08 (low / medium обычно упираются в этот минимум)
  • Если фактическая стоимость ≥ $0.08, выставляется фактическая (без увеличения)

Несколько изображений

При n > 1 стоимость линейно увеличивается. Пример: n=2 + 1024×1024 high = 2 × $0.211 = $0.422.

Неудачи не оплачиваются

Любой запрос со статусом 4xx / 5xx не тарифицируется. Отключение клиента (закрытие соединения) тоже не тарифицируется.

Валюта

Стоимость в USD. Окончательный расчёт по валютной политике главного аккаунта QCode.cc (CNY / USD).


Время генерации и timeout

gpt-image-2 — модель на основе reasoning, значительно медленнее традиционных text-to-image (DALL·E 3 / SDXL):

quality Типично Сложный prompt p99
low 20 – 35 с ~50 с
medium 50 – 90 с ~120 с
high 70 – 120 с ~150 с

Практические рекомендации:

  • В OpenAI Python SDK короткий timeout по умолчанию — всегда явно ставьте timeout=180.0 или больше
  • В браузерном fetch нет timeout по умолчанию, но если используете AbortController, давайте минимум 180 с
  • Пользователи материкового Китая для medium / high должны использовать прямой Шэньчжэньский эндпоинт, иначе столкнутся с проблемой CDN 524 ниже

Жёсткий лимит CDN 100 с (ошибки 524)

HTTPS-запросы через api.qcode.cc / asia.qcode.cc / eu.qcode.cc / us.qcode.cc идут через глобальный CDN (CloudFlare). CDN принудительно возвращает 524, если один запрос ждёт ответа источника более 100 секунд.

quality Безопасно через CDN 100 с?
low ✅ Безопасно (< 35 с)
medium ⚠️ Эпизодические попадания в потолок
high ❌ Часто 524

Решения (рекомендуется для medium / high):

  1. Используйте Шэньчжэньский HTTP-эндпоинт http://103.236.53.153/qcode-img/v1 напрямую (без CDN, без 100-секундного лимита)
  2. Либо допускайте эпизодические 524 и добавьте автоматический retry на стороне клиента

Советы по prompt

  • Многоязычность: пишите prompt на английском, русском, китайском или смешанно — всё работает
  • Конкретность: окружение, композиция, освещение, стиль, объектив / фокусное расстояние / ракурс и т. п.
  • Избегайте брендов и публичных персон: модель может отказаться или вернуть размытый результат (контентная политика OpenAI)
  • Рендеринг текста: gpt-image-2 отлично рисует текст внутри изображения — впишите английские / русские / китайские заголовки, короткие фразы, текст постера прямо в prompt; специальный синтаксис не нужен

Пример промпта:

A vintage poster in Bauhaus style, bold black text "MORNING COFFEE" centered,
warm orange and cream color palette, geometric shapes, slightly textured paper background

Отличия от официального API OpenAI

Аспект 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 — генерация запускается сразу
  • Двуязычный UI (EN / ZH)
  • По умолчанию low (без CDN 524)
  • Встроенный API-справочник (вкладки curl / Python / JavaScript, таблица параметров, коды ошибок)
  • Скачивание PNG в один клик

Связанные документы

🚀
Начните с QCode — Claude Code & Codex
Один тариф для Claude Code и Codex, низкая задержка в Азии
Посмотреть тарифы → Создать аккаунт
Команда 3+?
Enterprise: выделенный домен + управление ключами + защита от бана, от ¥250/чел/мес
Enterprise →