
GPT Image 2 API: Полное руководство (Python, Node.js, Curl)
Полное руководство по интеграции GPT Image 2 API. Аутентификация, параметры, образцы Python/Node.js, редактирование изображений, пакетная генерация, обработка ошибок, подсказки по стоимости.
Если вы хотите интегрировать GPT Image 2 в свой собственный продукт, конвейер автоматизации или рабочий процесс создания пакетов, API — единственный способ. В этом руководстве описано все, что вам нужно — аутентификация, параметры, примеры кода для Python и Node.js, редактирование изображений, обработка ошибок и оптимизация затрат.
К концу у вас будет работающая интеграция GPT Image 2, которая будет обрабатывать реальный производственный трафик.
Предварительные условия
Прежде чем начать:
- Аккаунт разработчика OpenAI (platform.openai.com)
- Пополняемый платежный аккаунт (создание изображений оплачивается; новые аккаунты могут получать пробные кредиты)
- Ключ API — сгенерируйте его на платформе.openai.com/api-keys.
- Python 3.8+ или Node.js 18+ в зависимости от того, какой SDK вы хотите использовать.
Стабильный доступ API для производственных команд
Если ваша команда находится в регионе, где прямой доступ к OpenAI нестабильен или вам нужен один ретранслятор, который обрабатывает аварийное переключение, агрегирование счетов и гарантии SLA, вы также можете получить управляемый ключ GPT Image 2 API, отправив электронное письмоsupport@gpt-image2.art. Реле поддерживает то же название модели gpt-image-2, те же параметры, описанные ниже, и тот же формат ответа, поэтому ваш код не нужно менять.
Шаг 1. Установите SDK
Python
pip install openai pillowpillow не является обязательным, он необходим только в том случае, если вы планируете выполнять постобработку возвращаемого изображения.
Node.js
npm install openai
# or
pnpm add openaiШаг 2. Настройте ключ API
Никогда не кодируйте свой ключ API жестко. Используйте переменную среды.
Создайте файл .env:
OPENAI_API_KEY=sk-proj-your-key-hereЗатем загрузите его в свой код (Python использует python-dotenv, Node.js загружает .env изначально или с помощью dotenv).
Шаг 3: Создайте первое изображение
Python — минимальный рабочий пример
import os
from openai import OpenAI
import base64
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
result = client.images.generate(
model="gpt-image-2",
prompt="A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.",
size="1024x1024",
quality="medium",
n=1,
)
# Image is returned as base64
image_b64 = result.data[0].b64_json
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
print("Saved to output.png")Node.js — минимальный рабочий пример
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const result = await client.images.generate({
model: 'gpt-image-2',
prompt:
'A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.',
size: '1024x1024',
quality: 'medium',
n: 1,
});
const imageB64 = result.data[0].b64_json;
fs.writeFileSync('output.png', Buffer.from(imageB64, 'base64'));
console.log('Saved to output.png');Curl — для шелл-скриптов и быстрых тестов.
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A white stainless steel water bottle on a beige linen tablecloth.",
"size": "1024x1024",
"quality": "medium",
"n": 1
}'Все параметры объяснены
| Параметр | Тип | Требуется | Описание |
|---|---|---|---|
model | строка | да | Всегда gpt-image-2 |
prompt | строка | да | Описание изображения; до 32 000 символов |
size | строка | нет | Соотношение сторон (1:1, 16:9, 9:16 и т. д.) или явные пиксели (1024x1024, 1536x1024, 1024x1536) |
resolution | строка | нет | 1K (~1 МП) / 2K (~4 МП) / 4K (~8 МП) — используется некоторыми реле для явного управления разрешением |
quality | строка | нет | low, medium, high — влияет на количество и стоимость выходных токенов |
n | целое число | нет | Количество изображений на запрос, 1-10 |
image_urls | массив | нет | 1–16 эталонных изображений для редактирования изображений / преобразования изображений в изображения (each ≤50MB, JPEG / PNG / WEBP) |
output_format | строка | нет | png (по умолчанию), jpeg, webp |
output_compression | целое число | нет | 0–100, только для jpeg/webp |
background | строка | нет | transparent для PNG с альфа-каналом |
moderation | строка | нет | auto (по умолчанию) или low для более быстрой, но более строгой фильтрации |
callback_url | строка | нет | Конечная точка HTTPS для получения обратных вызовов завершения (используется асинхронными ретрансляторами) |
user | строка | нет | Стабильный идентификатор пользователя для мониторинга злоупотреблений OpenAI |
Редактирование изображений — убийственная функция
Направленное редактирование GPT Image 2 является его самым большим преимуществом API перед диффузионными моделями. Вы загружаете существующее изображение и подсказку, описывающую, что изменить.
Python
result = client.images.edit(
model="gpt-image-2",
image=open("original.png", "rb"),
prompt="Change the bottle's color from white to navy blue. Keep everything else identical.",
size="1024x1024",
quality="medium",
)
with open("edited.png", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))Node.js
import { toFile } from 'openai';
const result = await client.images.edit({
model: 'gpt-image-2',
image: await toFile(fs.createReadStream('original.png'), 'original.png'),
prompt:
"Change the bottle's color from white to navy blue. Keep everything else identical.",
size: '1024x1024',
quality: 'medium',
});Фраза**"Сохраняйте все остальное идентичным"**в подсказке имеет решающее значение — без нее модель может регенерировать несвязанные регионы.
Генерация пакетов с безопасным параллелизмом с ограничением скорости
Не отправляйте наивно Promise.all() 100 запросов — вы достигнете предела скорости. Используйте ограниченный параллелизм.
Python — использование asyncio с семафором
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key=os.environ["OPENAI_API_KEY"])
async def generate_one(prompt: str, semaphore: asyncio.Semaphore):
async with semaphore:
result = await client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
async def batch_generate(prompts: list[str], concurrency: int = 5):
semaphore = asyncio.Semaphore(concurrency)
tasks = [generate_one(p, semaphore) for p in prompts]
return await asyncio.gather(*tasks)
results = asyncio.run(batch_generate(["prompt 1", "prompt 2", ...]))Node.js — использование p-limit
import pLimit from 'p-limit';
const limit = pLimit(5); // 5 concurrent requests
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({
model: 'gpt-image-2',
prompt,
size: '1024x1024',
quality: 'medium',
});
return result.data[0].b64_json;
})
);
const results = await Promise.all(tasks);Обработка ошибок для производства
API может выйти из строя по нескольким причинам. Обработайте каждое:
from openai import OpenAI, APIError, RateLimitError, APIConnectionError, BadRequestError
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def safe_generate(prompt: str, max_retries: int = 3):
for attempt in range(max_retries):
try:
result = client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
except RateLimitError:
# 429 — wait and retry
wait = (2 ** attempt) * 5
print(f"Rate limited; waiting {wait}s")
time.sleep(wait)
except BadRequestError as e:
# 400 — usually a content policy violation, don't retry
print(f"Bad request: {e}")
return None
except APIConnectionError:
# network blip — retry
time.sleep(2 ** attempt)
except APIError as e:
# 500-level — retry with backoff
time.sleep(2 ** attempt)
return NoneОптимизация затрат — конкретная тактика
1. Выберите правильный уровень качества
| Уровень | Стоимость изображения (1024×1024) | Когда использовать |
|---|---|---|
low | ~$0,011 | Черновики, тестирование A/B, быстрая итерация |
medium | ~0,042 доллара США | Большинство случаев использования в производстве |
high | ~$0,167 | Окончательные изображения героев, ресурсы с разрешением для печати |
Большинство команд переплачивают, выбирая по умолчанию high. Используйте medium примерно для 95% работы.
2. Итерация с images.edit, а не с images.generate
Направленное редактирование стоит столько же, сколько генерация, нодаёт правильный результат за 1 попытку вместо 5. Для многораундового уточнения это экономия средств в 5 раз.
3. Детерминированное кэширование при повторении запросов
Если вы генерируете одно и то же приглашение неоднократно (например, предварительный просмотр продукта для пользователя), кэшируйте его по hash(prompt + size + quality) и обслуживайте со своего CDN.
4. Используйте low для быстрого исследования, а затем обновите
Общий рабочий процесс:
# Step 1: try 5 prompt variants at low quality ($0.05 total)
candidates = [generate(p, quality="low") for p in variants]
# Step 2: pick the best, regenerate at high quality
best_prompt = pick_winner(candidates)
final = generate(best_prompt, quality="high") # $0.167Общая стоимость: ~0,22 доллара вместо ~0,84 доллара, если бы вы использовали все 5 вариантов на максимальной мощности.
5. Установите жесткие лимиты расходов на панели управления OpenAI.
Не верьте, что в вашем коде никогда не будет ошибок — установите ограничение на использование на платформе.openai.com/account/billing/limits..
Статус создания потоковой передачи (необязательно)
Для длительных пакетов вам может потребоваться отображать прогресс. Конечная точка создания изображения не передается в потоковом режиме, но вы можете обернуть пакет в асинхронный отчет о ходе выполнения:
let completed = 0;
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({ /* ... */ });
completed++;
onProgress({ completed, total: prompts.length });
return result.data[0].b64_json;
})
);Распространенные ошибки интеграции
| Ошибка | Что происходит | Исправить |
|---|---|---|
| Жесткое кодирование ключа API | Ключевые утечки через Git | Всегда используйте переменные среды |
Сохранение в result.data[0].url | Поле не всегда присутствует (зависит от формата ответа) | Используйте b64_json и декодируйте локально |
| Отправка огромных изображений на редактирование | Медленно + дорого | Измените размер до 1024×1024 перед загрузкой |
| Игнорирование 400 ошибок | Бернс повторяет попытки при неисправимых сбоях | Отличить 4xx (не повторять попытку) от 5xx (повторить попытку) |
| Нет ограничения скорости обработки | Всплески запускают 429 каскад | Использовать параллелизм, ограниченный семафором |
| Запись полных запросов в виде открытого текста | Нарушение конфиденциальности, если предоставлено пользователем | Хэширование или редактирование перед входом в систему |
Контрольный список готовности к производству
Перед отправкой интеграции GPT Image 2:
- Ключ API в переменной среды, а не в коде или журналах.
- Уровень качества, соответствующий варианту использования (по умолчанию
medium) - Ограниченный параллелизм (ZXQ1QXZ / ZXQ2QXZ) для пакетных заданий
- Обработка ошибок отличает 4xx от 5xx
- Установлено жесткое ограничение расходов на панели управления OpenAI.
- Пользовательский ввод очищен на предмет нарушений политики в отношении контента.
- Вывод сохраняется в вашем собственном хранилище (не зависит от URL-адресов OpenAI)
- Слой кэша для повторяющихся запросов
- Мониторинг стоимости изображения и частоты ошибок
Асинхронная генерация с опросом задач (для настроек с высоким параллелизмом)
Для больших объемов производственных рабочих нагрузок некоторые реле GPT Image 2 предлагаютасинхронную модель задачи: вы отправляете запрос, немедленно получаете обратно идентификатор задачи и либо опрашиваете ее о завершении, либо получаете обратный вызов. Это позволяет избежать тайм-аутов HTTP в больших пакетах.
Типичный асинхронный поток:
# 1. Submit request → get task_id
response = client.images.generate(
model="gpt-image-2",
prompt="...",
size="1024x1024",
quality="high",
callback_url="https://your-app.com/api/image-callback", # optional
)
task_id = response.id
# 2. Poll task status every few seconds
while True:
status = client.images.retrieve(task_id)
if status.status == "completed":
image_url = status.data[0].url
break
elif status.status == "failed":
raise Exception(status.error)
time.sleep(3)Асинхронный режим идеально подходит для:
- Интернет-магазины за одну ночь генерируют сотни вариантов товаров.
- Маркетинговые команды проводят быстрые тесты A/B. – Приложения, в которых пользователи запрашивают изображения и возвращаются позже (уведомления).
GPT Image 2 API Часто задаваемые вопросы
В: Как называется модель GPT Image 2 API?
gpt-image-2. Используйте именно эту строку для всех запросов.
В: Поддерживает ли GPT Image 2 API преобразование изображения в изображение/редактирование изображений?
Да. Используйте images.edit с параметром image или передайте image_urls (массив из 1–16 эталонных изображений) реле, которые его поддерживают. Эталонные изображения необходимы для согласованности символов, дизайна интеллектуальной собственности и фотографии продукта.
В: GPT Image 2 API бесплатен? Нет, оплата производится за токен. Новые учетные записи OpenAI могут получить пробные кредиты. Некоторые сторонние реле предлагают бесплатные пробные кредиты.
В: Сколько стоит GPT Image 2 API за изображение? Примерно 0,011 доллара США/0,042 доллара США/0,167 доллара США за изображение размером 1024×1024 при низком/среднем/высоком качестве соответственно. Большие размеры и эталонные изображения стоят дороже.
Вопрос: Какова максимальная длина запроса? До 32 000 символов. На практике запросы длиной более 1500 символов показывают меньшую отдачу.
В: Как создать PNG с прозрачным фоном с помощью API?
Установите background: "transparent" и output_format: "png".
В: Какие разрешения поддерживает GPT Image 2?
Общие пресеты: 1024x1024, 1536x1024, 1024x1536. Некоторые реле предоставляют уровни разрешения 1K / 2K / 4K для явного управления.
В: Каков предел скорости? Зависит от вашего уровня OpenAI. Уровень бесплатного пользования имеет самые строгие ограничения; Уровень использования со временем увеличивается. Используйте ограниченный параллелизм (ZXQ0QXZ / ZXQ1QXZ), чтобы не выйти за пределы ограничений.
В: Как обрабатывать ошибки GPT Image 2 API? Отличайте 4xx (не повторять попытку — обычно это нарушение политики в отношении контента) и 5xx (повторить попытку с экспоненциальной задержкой). См. раздел обработки ошибок выше.
В: Могу ли я отменить запрос GPT Image 2 API во время полета?
Для запросов синхронизации — только путем закрытия соединения. Реле с поддержкой асинхронности предоставляют конечную точку cancel, которая работает, пока задача все еще находится в очереди.
В: Поддерживает ли API потоковую передачу? Сама генерация изображения не передается в потоковом режиме (в конце вы получаете полное изображение). Для пользовательского интерфейса прогресса оберните свой пакет в специальный отчет о ходе выполнения (см. «Состояние создания потоковой передачи» выше).
Хотите рабочий пример приложения?
Для полной эталонной реализации — Next.js + GPT Image 2 + Stripe + хранилище изображений — изучите gpt-image2.art и страницу исследования, где показаны реальные результаты.
Нужен управляемый ключ API с SLA?
Если вы предпочитаете пропустить настройку учетной записи, выставление счетов, проблемы с регионом и настройку ограничения скорости, вы можете приобрести управляемый ключ GPT Image 2 API, отправив электронное письмоsupport@gpt-image2.art. Мы предоставляем:
- Одна стабильная конечная точка API со встроенным аварийным переключением.
- Совокупный счет в вашей местной валюте (банковский перевод USD не требуется)
- Асинхронный режим задач + поддержка обратного вызова «из коробки» – Объемные цены для команд, генерирующих > 10 тысяч изображений/month.
- То же название модели
gpt-image-2и характеристики параметров, что и у официального API — совместимость с прямым подключением
Дальнейшее чтение
- GPT Image 2 Руководство по быстрому написанию — 7 правил, которые повышают вероятность попадания с 30% до 90%
- [Библиотека стилей GPT Image 2 — 12 подсказок готовых к производству художественных стилей] (/blog/theme)
- Что такое GPT Image 2? Полное введение
images.edit, а не с images.generate3. Детерминированное кэширование при повторении запросов4. Используйте low для быстрого исследования, а затем обновите5. Установите жесткие лимиты расходов на панели управления OpenAI.Статус создания потоковой передачи (необязательно)Распространенные ошибки интеграцииКонтрольный список готовности к производствуАсинхронная генерация с опросом задач (для настроек с высоким параллелизмом)GPT Image 2 API Часто задаваемые вопросыХотите рабочий пример приложения?Нужен управляемый ключ API с SLA?Дальнейшее чтениеЕщё статьи

GPT Image 2 vs Nano Banana 2 vs Midjourney v7: Какую нейросеть выбрать в 2026 году?
Сравнение GPT Image 2, Nano Banana 2 и Midjourney v7 для генерации изображений (AI image generation). Узнайте, какая модель лучше подходит для работы с текстом, создания постеров и фотореализма.

Можно ли использовать GPT Image 2 в коммерческих целях? Руководство по авторскому праву
Полное руководство по коммерческому использованию GPT Image 2: что разрешено, кому принадлежат права, правила Amazon/Etsy/Shopify/TikTok и как безопасно продавать ИИ-изображения.

GPT Image 2 Обратная подсказка: воспроизвести любое изображение
Практическое руководство по обратной подсказке GPT Image 2. Загрузите любое эталонное изображение и получите воспроизводимую подсказку за считанные секунды. 4 техники + копипаст шаблонов.
Generate your first image with GPT Image 2 — right now
Reliable non-Latin text rendering, directed editing, and 50+ ready-to-use prompts. No downloads — just open in your browser.