GPT Image 2
Генерируйте изображения, редактируйте референсы и применяйте маски через единую асинхронную конечную точку изображений.
GPT Image 2 принимает текстовый промпт и, по желанию, референсные изображения. Отправьте запрос один раз, сохраните возвращённый идентификатор задачи и запрашивайте эту задачу, чтобы получить готовые изображения. Модель доступна на двух каналах, у каждого свой ID модели; параметры у обоих одинаковые.
ID моделей
| ID модели | Канал | Тарификация |
|---|---|---|
gpt-image-2 | Standard | Фиксированная цена за каждое доставленное изображение при любом размере и качестве |
gpt-image-2-official | Official | Токены, о которых сообщает каждый рендер (входной текст и выходное изображение) |
Оба 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| Заголовок | Значение |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
Одна и та же конечная точка обслуживает генерацию, редактирование по референсу и редактирование по маске. В ответе приходит идентификатор задачи, а не готовое изображение. Храните API-ключи в серверном коде.
Параметры
| Имя | Тип | Обязательный | По умолчанию | Примечания |
|---|---|---|---|---|
model | string | Да | — | gpt-image-2 или gpt-image-2-official |
prompt | string | Да | — | Непустая строка; до 32 000 символов. |
images | object[] | Нет | — | От 1 до 16 объектов вида {"image_url":"https://..."}; передача images включает режим редактирования. |
mask | object | Нет | — | {"image_url":"https://..."}; требует images. |
size | string | Нет | auto | auto или WIDTHxHEIGHT с учётом правил ниже. |
quality | enum | Нет | auto | auto, low, medium, high. |
background | enum | Нет | auto | auto, opaque, transparent. |
output_format | enum | Нет | png | png, jpeg. |
output_compression | integer | Нет | 100 для JPEG | От 0 до 100; передавайте только с jpeg. Ноль допустим. |
n | integer | Нет | 1 | От 1 до 10 изображений. |
moderation | enum | Нет | auto | auto, low. |
user | string | Нет | — | Необязательный идентификатор конечного пользователя вашего приложения. Не указывайте персональные данные. |
Правила размера
Распространённые значения — 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 | Сохраните этот идентификатор для последующих запросов. |
status | processing, completed или failed. |
created_at, finished_at | Метки времени Unix в секундах; во время обработки время завершения отсутствует или равно нулю. |
output.data[].url | URL сгенерированных изображений, доступны после завершения. |
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."
}
}Если тайм-аут произошёл при самой отправке, сначала проверьте историю задач и только потом отправляйте повторно: первый запрос мог быть уже принят.
Советы
- Описывайте в промпте материалы, композицию и освещение.
- При редактировании указывайте и желаемое изменение, и то, что должно остаться неизменным.
- Используйте маску, когда изменить нужно только выделенную область.
- Сохраняйте полученные изображения в собственное хранилище, если нужна долговременная копия.
