GPT Image 2 API: Полное руководство (Python, Node.js, Curl)
2026/04/23

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, которая будет обрабатывать реальный производственный трафик.

Предварительные условия

Прежде чем начать:

  1. Аккаунт разработчика OpenAI (platform.openai.com)
  2. Пополняемый платежный аккаунт (создание изображений оплачивается; новые аккаунты могут получать пробные кредиты)
  3. Ключ API — сгенерируйте его на платформе.openai.com/api-keys.
  4. 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 pillow

pillow не является обязательным, он необходим только в том случае, если вы планируете выполнять постобработку возвращаемого изображения.

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 — совместимость с прямым подключением

Дальнейшее чтение

Предварительные условияСтабильный доступ API для производственных командШаг 1. Установите SDKPythonNode.jsШаг 2. Настройте ключ APIШаг 3: Создайте первое изображениеPython — минимальный рабочий примерNode.js — минимальный рабочий примерCurl — для шелл-скриптов и быстрых тестов.Все параметры объясненыРедактирование изображений — убийственная функцияPythonNode.jsГенерация пакетов с безопасным параллелизмом с ограничением скоростиPython — использование asyncio с семафоромNode.js — использование p-limitОбработка ошибок для производстваОптимизация затрат — конкретная тактика1. Выберите правильный уровень качества2. Итерация с images.edit, а не с images.generate3. Детерминированное кэширование при повторении запросов4. Используйте low для быстрого исследования, а затем обновите5. Установите жесткие лимиты расходов на панели управления OpenAI.Статус создания потоковой передачи (необязательно)Распространенные ошибки интеграцииКонтрольный список готовности к производствуАсинхронная генерация с опросом задач (для настроек с высоким параллелизмом)GPT Image 2 API Часто задаваемые вопросыХотите рабочий пример приложения?Нужен управляемый ключ API с SLA?Дальнейшее чтение
Free to try

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.