Цена gpt-image-2 устроена так, что картинка 1024×1536 обходится дешевле, чем 1024×1024, хотя пикселей в ней в полтора раза больше. Это не опечатка в прайсе, а свойство формулы, по которой OpenAI считает выходные токены.
Разница по официальной таблице: на quality medium квадрат стоит 0,053 доллара, портрет и ландшафт — 0,041. На high — 0,211 против 0,165. То есть примерно на 22% дешевле за картинку большего размера, и всё, что нужно сделать, — поменять одну строку в запросе.
Почему картинка большего размера стоит меньше
Документация подтверждает это прямым текстом: «A larger non-square resolution can sometimes produce fewer output tokens than a smaller or square resolution at the same quality setting». Причина в том, что стоимость складывается не только из площади. В расчёт входит ещё и соотношение сторон, причём целыми ступенями.
Официальной формулы OpenAI не публиковала — есть только калькулятор в разделе Cost and latency. Разработчик _j на форуме OpenAI восстановил алгоритм по поведению API: качеству соответствует целочисленный коэффициент (16 для low, 48 для medium, 96 для high), короткая сторона получает этот коэффициент, уменьшенный пропорционально отношению сторон и округлённый до целого, а площадь входит с фиксированным смещением в два миллиона пикселей. Это реконструкция, а не документ вендора, но она объясняет наблюдаемую пилу: при росте ширины токены плавно ползут вверх, а на границе ступени падают скачком.
Практический смысл один: не считайте стоимость на глаз по площади. Считайте калькулятором и сравнивайте соседние размеры — пара шагов по 16 пикселей в сторону может увести вас в более дешёвую полосу.
Что стоит одна генерация и где апгрейд оказывается дороже
Ставки: 30 долларов за миллион выходных токенов изображения, 5 долларов за миллион входных текстовых токенов, 8 долларов за миллион входных токенов изображений (2 доллара за кэшированные). За картинку это выглядит так.
gpt-image-2, квадрат 1024×1024: low — 0,006, medium — 0,053, high — 0,211 доллара. Портрет 1024×1536 и ландшафт 1536×1024: low — 0,005, medium — 0,041, high — 0,165.
А теперь то, о чём гайд OpenAI по промптингу умалчивает, рекомендуя gpt-image-2 «по умолчанию для большинства производственных процессов». На квадратных картинках апгрейд дорожает. У gpt-image-1.5 квадрат на medium стоит 0,034 доллара против 0,053 у gpt-image-2 — это плюс 56%. На high: 0,133 против 0,211, плюс 59%. На портрете картина обратная: 0,2 у версии 1.5 против 0,165 у второй, минус 17%. Вывод не «не переходите», а «посчитайте на своей раскладке размеров, прежде чем менять модель в проде».
Отдельно про gpt-image-1-mini. Кукбук пишет, что quality low на gpt-image-2 работает не хуже мини, и прайс это подтверждает: 0,005 доллара за портрет на low против 0,006 у мини. Мини остаётся дешевле только на medium и high, где картинка и так черновая. Держать ради этого вторую модель в коде обычно не окупается.
Какие размеры принимает модель и где документация сама себе противоречит
Правила для параметра size: обе стороны кратны 16, соотношение длинной и короткой стороны не больше 3:1, общее число пикселей от 655 360 до 8 294 400. Всё, что выше 2560×1440, OpenAI называет экспериментальным.
А вот с верхней границей разнобой. Кукбук по промптингу требует, чтобы максимальная сторона была меньше 3840 пикселей, и советует округлять 4K вниз до 3824×2144. Справочник API в том же домене пишет иначе: «the maximum supported resolution is 3840x2160». Причём 3840×2160 — это ровно 8 294 400 пикселей, то есть точно верхняя граница бюджета. Кто прав, по документам не определить. Если вам нужен 4K, дешевле один раз отправить пробный запрос, чем спорить с гайдом.
Как понять, что вы переплачиваете за генерацию
Признаки видны прямо в коде вызова, лезть в биллинг не обязательно. Пройдите по списку — если совпало хотя бы два пункта, счёт можно уменьшить без потери качества картинки.
- Везде стоит
size="1024x1024", хотя финальный ассет всё равно кадрируется в вертикаль или горизонталь. Квадрат — самый дорогой из трёх стандартных размеров. - Везде стоит
quality="high". Разница с medium на 1024×1536 — четырёхкратная: 0,165 против 0,041 доллара. High оправдан для мелкого текста, легенд и осей, а не для фонов и превью. - Включён стриминг с
partial_images. Каждое промежуточное изображение добавляет 100 выходных токенов, и на трёх партиалах это лишние 300 токенов к каждой генерации. - Вы массово редактируете картинки и не смотрите на входные токены. gpt-image-2 всегда обрабатывает входные изображения в высокой точности, поэтому запросы к
images.editс референсами едят заметно больше входа, чем генерация с нуля. - Размер подобран «на глаз» и не проверен на соседних значениях, кратных 16.
- Вы упёрлись в скорость, а не в деньги: лимиты изображений в минуту жёсткие — 5 на первом тарифном уровне, 20 на втором, 50 на третьем, 150 на четвёртом и 250 на пятом.
Что сделать сейчас
- Выпишите, какие размеры и качество реально используются в вашем коде, и сверьте с прайсом: квадрат меняется на портрет или ландшафт там, где кадр это допускает.
- Разделите задачи по качеству: черновики и превью — low, основной поток — medium, high оставьте только для картинок с мелким текстом и диаграммами.
- Проверьте, не включены ли партиалы там, где интерактивность не нужна.
- Померяйте реальный расход входных токенов на редактировании: если референсов много, это может оказаться дороже самой генерации.
- Перед сменой модели посчитайте свой набор размеров на обеих: на квадратах gpt-image-2 дороже, чем gpt-image-1.5.
Если вы как раз собираете конвейер ассетов, посмотрите заодно, как работает прозрачный фон в gpt-image-2 — в примерах OpenAI он идёт вместе с самым дорогим режимом качества. А сократить число повторных генераций проще всего через шаблоны промптов для gpt-image-2: каждая лишняя попытка стоит ровно столько же, сколько удачная.

