Claude Opus 5.5 уже доступна в SeedRouter
SeedRouter Docs

GPT Image 2

Генерируйте изображения, редактируйте референсы и применяйте маски через единую асинхронную конечную точку изображений.

View Markdown

GPT Image 2 принимает текстовый промпт и, по желанию, референсные изображения. Отправьте запрос один раз, сохраните возвращённый идентификатор задачи и запрашивайте эту задачу, чтобы получить готовые изображения. Модель доступна на двух каналах, у каждого свой ID модели; параметры у обоих одинаковые.

ID моделей

ID моделиКаналТарификация
gpt-image-2StandardФиксированная цена за каждое доставленное изображение при любом размере и качестве
gpt-image-2-officialOfficialТокены, о которых сообщает каждый рендер (входной текст и выходное изображение)

Оба ID принимают одинаковые параметры и поддерживают все режимы; отличается только тарификация. Актуальные цены — на странице модели. В примерах ниже используется gpt-image-2; замените его на gpt-image-2-official, чтобы платить за токены.

Краткий пример

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "An amber glass bottle on a cream background, studio lighting",
    "size": "1024x1024",
    "quality": "low"
  }'

Конечная точка

POST https://api.seedrouter.ai/v1/images/generations
ЗаголовокЗначение
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Одна и та же конечная точка обслуживает генерацию, редактирование по референсу и редактирование по маске. В ответе приходит идентификатор задачи, а не готовое изображение. Храните API-ключи в серверном коде.

Параметры

ИмяТипОбязательныйПо умолчаниюПримечания
modelstringДа—gpt-image-2 или gpt-image-2-official
promptstringДа—Непустая строка; до 32 000 символов.
imagesobject[]Нет—От 1 до 16 объектов вида {"image_url":"https://..."}; передача images включает режим редактирования.
maskobjectНет—{"image_url":"https://..."}; требует images.
sizestringНетautoauto или WIDTHxHEIGHT с учётом правил ниже.
qualityenumНетautoauto, low, medium, high.
backgroundenumНетautoauto, opaque, transparent.
output_formatenumНетpngpng, jpeg.
output_compressionintegerНет100 для JPEGОт 0 до 100; передавайте только с jpeg. Ноль допустим.
nintegerНет1От 1 до 10 изображений.
moderationenumНетautoauto, low.
userstringНет—Необязательный идентификатор конечного пользователя вашего приложения. Не указывайте персональные данные.

Правила размера

Распространённые значения — 1024x1024, 1536x1024 и 1024x1536. Пользовательские размеры должны соответствовать всем правилам:

  • Ширина и высота кратны 16.
  • Ни одна сторона не превышает 3840 пикселей.
  • Соотношение сторон находится в диапазоне от 1:3 до 3:1.
  • Общая площадь находится в диапазоне от 655 360 до 8 294 400 пикселей включительно.

auto оставляет выбор итоговых размеров модели. Не передавайте соотношения сторон вроде 16:9 в поле size.

В Playground есть элементы управления Auto, «Соотношение» и «Свой размер». Режим соотношения сочетает пропорции с пресетом пиксельного бюджета 1K, 2K или 4K и отправляет только вычисленный size. Это пресеты интерфейса, а не отдельные параметры API: не передавайте resolution или aspect_ratio. Например, 16:9 + 4K отправляет size: "3840x2160"; 9:16 + 4K — "2160x3840"; 1:1 + 2K — "2048x2048". Округление и ограничение стороны могут уменьшить число пикселей для выбранного уровня. Точные размеры показываются до отправки.

OpenAI называет разрешения выше 2560×1440 экспериментальными. В рамках указанных выше ограничений они принимаются, однако более высокое разрешение не гарантирует лучшую детализацию.

Уровни качества

Для черновиков используйте low и сравните результаты, прежде чем выбирать более высокий уровень. auto оставляет выбор модели; это не гарантирует конкретный уровень или стоимость.

Прозрачный фон

Прозрачность в GPT Image 2 находится в предварительном доступе. Для прозрачного фона задайте background: "transparent" и используйте PNG. JPEG не поддерживает прозрачность. Сжатие применяется только к JPEG.

user доступен для интеграций через API, но в Playground не отображается и не заполняется автоматически.

Необязательные скалярные настройки (n, size, quality, background, output_format, output_compression, moderation) принимают null как признак пропуска. Неизвестные поля отклоняются. input_fidelity для GPT Image 2 не настраивается; референсные входные данные всегда обрабатываются с высокой точностью. style и response_format относятся к другим моделям изображений и здесь не принимаются.

Режимы

Отдельного параметра режима или отдельной конечной точки редактирования выбирать не нужно.

ОперацияПараметры
Текст в изображениеprompt
Редактирование по референсуprompt + images
Редактирование по маскеprompt + images + mask

Редактирование референсных изображений

curl https://api.seedrouter.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Make the bottle blue. Preserve the composition and lighting.",
    "images": [{"image_url": "https://example.com/reference.png"}],
    "mask": {"image_url": "https://example.com/mask.png"},
    "output_format": "jpeg",
    "output_compression": 90
  }'

Замените оба примера URL на собственные доступные изображения. Опустите mask, если нужно редактирование по референсу без выделенной области.

Медиавходы

Этот API принимает только ссылки по URL. Идентификаторы OpenAI Files, base64-ссылки data URL и multipart-загрузки не принимаются. Playground сначала загружает выбранные файлы в хранилище и затем отправляет их URL.

Референсные изображения должны быть публичными HTTP(S)-ссылками на файлы PNG, JPEG или WebP размером менее 50 МБ каждый. Маска должна быть файлом PNG размером менее 4 МБ с теми же размерами, что и первое референсное изображение; её прозрачная область отмечает то, что нужно изменить. Маска направляет модель и не гарантирует попиксельно точных границ. При нескольких референсах маска применяется к первому изображению. Медиа по URL проверяются во время обработки; недоступные или некорректные медиа могут привести к сбою задачи.

Playground загружает выбранные файлы и отправляет их URL. Запросы к API используют JSON-объекты со ссылками: не отправляйте байты файлов, base64, ссылки data:, ссылки blob: или multipart-данные формы.

Факторы стоимости

Актуальные тарифы смотрите в разделе цен модели. gpt-image-2 (Standard) берёт фиксированную цену за каждое доставленное изображение независимо от качества, размера и промпта. На gpt-image-2-official (Official) итоговая стоимость зависит от расхода на входе и выходе: на него влияют качество, размеры результата, референсные изображения, длина промпта и число изображений.

Оценка в Playground основана на измеренной выборке и текущих тарифах; это не гарантированная стоимость. Итоговые списания смотрите в истории использования своей учётной записи. Неуспешные задачи не тарифицируются.

Схема вывода

При отправке возвращается ссылка на задачу:

{
  "id": "task_...",
  "model": "gpt-image-2",
  "status": "processing",
  "created_at": 1789970508
}

Опрос задачи

curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Опрашивайте с умеренным интервалом, например каждые три секунды, пока status не станет completed или failed. Сетевой тайм-аут во время опроса не означает, что генерация завершилась сбоем: сохраните идентификатор задачи и продолжите проверку. Не создавайте другую задачу, чтобы узнать ход выполнения.

Полный пример опроса

Выполните этот код после приведённого выше примера отправки на Python. Он использует возвращённый task_id и ждёт до десяти минут. Достижение этого локального срока лишь прекращает опрос; сохраните идентификатор и продолжите запрашивать ту же задачу.

import time

print(f"Task ID: {task_id}")
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        for image in task["output"]["data"]:
            print(image["url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(3)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Завершённая задача

Завершённая задача возвращает размещённые URL изображений и данные об использовании:

{
  "id": "task_...",
  "model": "gpt-image-2",
  "status": "completed",
  "created_at": 1789970508,
  "finished_at": 1789970538,
  "output": {
    "created": 1789970532,
    "data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.png"}],
    "usage": {
      "input_tokens": 29,
      "output_tokens": 196,
      "total_tokens": 225
    }
  }
}
ПолеЗначение
idСохраните этот идентификатор для последующих запросов.
statusprocessing, completed или failed.
created_at, finished_atМетки времени Unix в секундах; во время обработки время завершения отсутствует или равно нулю.
output.data[].urlURL сгенерированных изображений, доступны после завершения.
output.sizeФактические размеры вывода, если они сообщаются.
output.qualityФактический уровень качества, если он сообщается.
output.backgroundФактический фон, если он сообщается.
output.output_formatФактический формат изображения, если он сообщается.
output.usageСообщённое использование токенов, если доступно. Объекты с деталями могут содержать количество текстовых и графических токенов.
errorСтруктурированная ошибка неуспешной задачи.

Этот API выдаёт результаты асинхронно через задачи. Он не является заменой синхронного Images SDK; stream и partial_images не поддерживаются.

Ошибки

Запросы, отклонённые до создания задачи, возвращают HTTP-ошибку вместе с объектом error. Задача, которая завершилась сбоем уже после приёма, при запросе возвращает HTTP 200 с status: "failed" и объектом error.

Коды, HTTP-статусы и рекомендации по повторным попыткам приведены в общем каталоге ошибок. Все API моделей используют одну и ту же структуру ошибки.

{
  "id": "task_...",
  "status": "failed",
  "error": {
    "code": 60002,
    "message": "Generation could not be completed. Please try again."
  }
}

Если тайм-аут произошёл при самой отправке, сначала проверьте историю задач и только потом отправляйте повторно: первый запрос мог быть уже принят.

Советы

  • Описывайте в промпте материалы, композицию и освещение.
  • При редактировании указывайте и желаемое изменение, и то, что должно остаться неизменным.
  • Используйте маску, когда изменить нужно только выделенную область.
  • Сохраняйте полученные изображения в собственное хранилище, если нужна долговременная копия.

Связанные материалы