Инструкции

GPT Image 2.5 API: Sunburst, Flare и два запроса с результатами

GPT Image 2.5 API разделяет генерацию по тексту и редактирование исходного изображения. Sunburst и Flare — разные ID; свойства официальной модели и параметры конкретного шлюза нужно рассматривать отдельно.

28 октября 2026 года мы выполнили два запроса Flare через Zenith: создали синюю кружку, затем передали этот PNG в edits и сменили фон на розовый. Оба вызова вернули PNG 1024×1024 и получили по $0,01 начисления в истории. Ниже — точные отправленные параметры, результаты и границы этого опыта; Sunburst мы не запускали.

Что различается у Sunburst и Flare

В руководстве OpenAI Sunburst предназначена прежде всего для точного редактирования, Flare — для быстрой повседневной генерации. Это позиционирование производителя, не наше сравнение скорости или качества.

Ниже — две отдельные группы данных. Первая описывает профиль моделей по официальным карточкам OpenAI, прочитанным 27.10.2026. Вторая показывает, как эти же ID были представлены в историческом ответе каталога Zenith 27.10.2026. Это датированные снимки, а не проверка текущей доступности операций у посредника.

Официальные карточки OpenAI, снимок 27.10.2026

Параметр официальной модели Sunburst Flare
ID / default snapshot gpt-image-2.5-sunburst / gpt-image-2.5-sunburst-2026-09-08 gpt-image-2.5-flare / gpt-image-2.5-flare-2026-09-08
Responses endpoint Not supported Not supported
Quality официального API low/medium/high/xhigh/max/auto low/medium/high/xhigh/max/auto
Inpainting Supported Supported

Источники — карточки Sunburst и Flare, прочитанные 27.10.2026. Строка Responses endpoint фиксирует, что карточки помечают этот endpoint как неподдерживаемый для прямого вызова image-модели. В руководстве OpenAI при этом описано, что в Responses API image-ID передаётся не на верхнем уровне, а в поле model инструмента генерации изображений при выборе поддерживаемой основной модели. То есть запись «Responses endpoint: Not supported» и схема вызова через image generation tool — это разные утверждения об одном и том же API. Как именно это устроено у Zenith, официальные карточки OpenAI не определяют.

Исторический каталог Zenith, снимок 27.10.2026

Наблюдавшееся поле каталога снимка Sunburst Flare
Публикация generation Публиковалась в снимке Публиковалась в снимке
Публикация edit Публиковалась для условия edit Публиковалась для условия edit
Каталожная цена за изображение по tiers 1K/2K/4K: $0,01 / $0,02 / $0,03 1K/2K/4K: $0,01 / $0,02 / $0,03

Цены Zenith здесь — только чтение исторического каталога, полученное 27.10.2026; сегодняшнюю цену и доступность нужно перечитывать. Из совпадающих строк таблицы не следует равенство результатов. В наших Zenith-запросах quality не передавался: официальные настройки нельзя переносить на посредника автоматически.

Генерация: что именно отправлено

Первый вызов — POST /v1/images/generations на api.zenithmarket.dev с Zenith-ключом. JSON ниже — запись фактически отправленного тела без секрета, а не обещание сегодняшней поддержки этих параметров для любого ключа. Платный автоматический повтор не выполнялся.

{
  "model": "gpt-image-2.5-flare",
  "prompt": "A product photograph of exactly one matte blue ceramic mug with one handle on a plain warm white background. Soft studio lighting, subtle contact shadow, centered composition, square image. No text, no logo, no other objects.",
  "size": "1024x1024",
  "output_format": "png",
  "n": 1
}

Критерии до просмотра: ровно одна синяя керамическая кружка, одна ручка, светлый фон, без текста, логотипа и посторонних предметов. Сервис вернул HTTP 200, изображение в data[0].b64_json. После декодирования: PNG 1024×1024, 1350514 байт; ожидание нашего клиента — 42,587 секунды. Это время одного вызова, не средняя скорость модели.

Результат одного запроса Flare: синяя кружка на светлом фоне
Фактическая генерация Flare через Zenith, 28.10.2026.

При отдельном визуальном просмотре все перечисленные критерии выполнены. Это не проверка сложной композиции или сравнительного качества Sunburst/Flare. SHA-256 PNG: d0c4fb7f382c84c0feea67bc5450b622afd14a64432ce8a3b26c03515f4b0e5c.

Edits: тот же исходник, другой фон

Второй вызов — POST /v1/images/edits. В multipart-поле image передан именно опубликованный PNG кружки; остальные поля ниже. Формат передачи файла и маршруты описаны в справочнике Zenith. Это параметры конкретного успешного вызова 28 октября, не проверка всех возможных размеров, референсов или масок.

{
  "multipart_image": "input.png — PNG первой генерации",
  "fields": {
    "model": "gpt-image-2.5-flare",
    "prompt": "Keep exactly one blue ceramic mug and its one handle, preserve the composition. Change the background to pale pink. No text, no logo, no additional objects.",
    "size": "1024x1024",
    "output_format": "png",
    "n": 1
  }
}

Критерии: сохранить одну синюю кружку и ручку, заменить фон на розовый, не добавлять текст или логотип. Получен HTTP 200 и data[0].b64_json; PNG 1024×1024, 1443666 байт. Ожидание клиента — 38,254 секунды. При просмотре кружка и ручка сохранились, фон розовый, видимых надписей нет. Это выполнение критериев одного задания; пиксельную неизменность объекта мы не измеряли.

Результат редактирования Flare: синяя кружка на розовом фоне
Edits с PNG первой генерации, 28.10.2026.

SHA-256 результата: db653246e57c059106841914c9e62b4f1c7159d58ec990a8368102d79fcf670b. Источник и результат можно скачать и сравнить самостоятельно. Повтор такого запроса создал бы новый платный результат, который не обязан побайтно совпасть с нашим.

Как связаны запросы и начисления

В сохранённых материалах requestId записей GET /v1/zenith/key/usage совпали с requestId обоих ответов; отдельного сохранённого HTTP-заголовка x-request-id у нас нет. У обеих записей status=success и costMicrousd=10000. Один доллар равен миллиону microUSD, поэтому каждое начисление составляет $0,01.

Операция Точный requestId Сохранённая стоимость
generation gwreq_epwB2jER75JerPRWh7aiXxK1WJYs5e9--RmK4XE3Tzw 10000 microUSD = $0,01
edit gwreq_IGIqSEfp3U3grKGxRew-yXtk4UQ6XPXesaO4j0NHCls 10000 microUSD = $0,01

Это сопоставление двух конкретных сохранённых записей, не универсальный тариф или доказательство полноты истории. Нулевые inputTokens/outputTokens в этих записях не сделали изображения бесплатными. Вместе две разные операции дали два изображения и $0,02 начисления; неопределённых повторных отправок не было.

Как прочитать цену перед новым запросом

У image-ID сначала смотрят imageRequestPricing. Если у модели опубликован imageTokenPricing вместо imageRequestPricing, приведённая ниже смета по цене за изображение неприменима: нужен расчёт по фактическому usage. Скрипт сообщает об этом и прекращает вывод цен. tiersByOperation перечисляет тарифные tiers для generation/edit; pricesMicrousdByOperation — соответствующие ставки в microUSD за изображение. Сохраните код как image_prices.py, запустите python image_prices.py. Он выполняет только GET и не генерирует изображение.

import getpass, json, urllib.request
key=getpass.getpass("Zenith API key: ")
if not key: raise SystemExit("Ключ не введён")
req=urllib.request.Request("https://api.zenithmarket.dev/v1/models",
    headers={"Authorization":"Bearer "+key,"User-Agent":"Comrad404SourceReview/1.0"})
with urllib.request.urlopen(req,timeout=30) as response: obj=json.load(response)
if not isinstance(obj,dict) or not isinstance(obj.get("data"),list):
    raise SystemExit("Неизвестная схема каталога; платный запрос не выполняется")
row=next((r for r in obj["data"] if isinstance(r,dict) and r.get("id")=="gpt-image-2.5-flare"),None)
if row is None: raise SystemExit("Нет Flare у этого ключа")
if "imageTokenPricing" in row and "imageRequestPricing" not in row:
    raise SystemExit("Опубликован imageTokenPricing; смета по цене за изображение неприменима, считайте по фактическому usage")
pricing=row.get("imageRequestPricing")
if not isinstance(pricing,dict):
    raise SystemExit("Опубликован imageRequestPricing "+str(type(pricing))+"; приведённая смета неприменима")
print("Тарифные tiers:",pricing.get("tiersByOperation"))
for operation in ("generation","edit"):
    price=pricing.get("pricesMicrousdByOperation",{}).get(operation,{}).get("1K")
    print(operation,"1K:",price,"microUSD; USD:",price/1_000_000 if type(price) is int else "не указано")
# No POST, no generation, no wire-size validation.

Например, 10000 microUSD делятся на 1000000 и дают $0,01. Название tier 1K само по себе не задаёт разрешённое wire-значение size. Код цены не проверяет поддержку size/output_format; перед новым POST нужны параметры, опубликованные сервисом для выбранной операции. Значение 1024×1024 доказано только нашим конкретным успешным вызовом. Из факта его принятия нельзя вывести поддержку любого размера или будущего вызова.

Исторический снимок Zenith 27.10.2026, за изображение 1K 2K 4K
Flare generation $0,01 $0,02 $0,03
Flare edit $0,01 $0,02 $0,03
Sunburst generation/edit $0,01 $0,02 $0,03

Условная смета этого снимка без комиссий и повторов: 100 generation 2K × $0,02 = $2; 100 edit 2K × $0,02 = $2. Это историческая арифметика, не сегодняшняя котировка. Для API и Studio Zenith описывает округление дебета вверх до $0,01; правило документации отдельно от двух фактических начислений. При imageTokenPricing вместо imageRequestPricing понадобится другая смета по фактическому usage.

Что опыт не устанавливает

Мы не сравнивали Sunburst с Flare, не проверяли несколько референсов, маски и все размеры. Один успешный POST не устанавливает постоянную доступность или upstream-модель Zenith. Для Images SDK/HTTP следует проверять актуальный контракт сервиса; здесь нет универсального исполняемого рецепта будущей платной генерации.

Способ передачи модели зависит от API. В Image API image-ID задаётся непосредственно в поле model — gpt-image-2.5-sunburst или gpt-image-2.5-flare. В Responses API на верхнем уровне указывается поддерживаемая основная модель, а image-ID передаётся в поле model инструмента генерации изображений, как описывает руководство OpenAI. Именно поэтому карточки сообщают, что эти image-ID не поддержаны как прямой top-level model Responses; поддержка каждого сочетания моделей не выводится из этих карточек автоматически.

При таймауте исход операции может быть неизвестен: автоматический повтор способен создать ещё один оплаченный результат. Сохраните идентификатор, время, параметры и проверьте запись биллинга сервиса. При отсутствии однозначного совпадения не объявляйте запрос отменённым или бесплатным.