Published: · Updated:
Exact ID: gpt-image-2. Check access for your key using GET /v1/models; a published model does not guarantee access for every account.
Prices and billing units
| Direct request setting | API429 price |
|---|---|
| auto · long side >1536 and up to 2048 px | $0.2532 / 1 image |
| auto · long side >2048 px | $0.500892 / 1 image |
| auto · rectangle, side up to 1536 px | $0.0495 / 1 image |
| auto · square, side up to 1536 px | $0.0633 / 1 image |
| high · long side >1536 and up to 2048 px | $0.2532 / 1 image |
| high · long side >2048 px | $0.500892 / 1 image |
| high · rectangle, side up to 1536 px | $0.0495 / 1 image |
| high · square, side up to 1536 px | $0.0633 / 1 image |
| low · long side >1536 and up to 2048 px | $0.0072 / 1 image |
| low · long side >2048 px | $0.014238 / 1 image |
| low · rectangle, side up to 1536 px | $0.0015 / 1 image |
| low · square, side up to 1536 px | $0.0018 / 1 image |
| medium · long side >1536 and up to 2048 px | $0.0636 / 1 image |
| medium · long side >2048 px | $0.125768 / 1 image |
| medium · rectangle, side up to 1536 px | $0.0123 / 1 image |
| medium · square, side up to 1536 px | $0.0159 / 1 image |
| Text input | $1.5 / 1,000,000 tokens |
API429 catalog generated . The table shows direct request components; other general catalog metrics are not added here. Display prices are rounded to six decimal places; calculations use exact catalog rates. The calculator below follows the direct Images request contract. Sources checked: Oct 24, 2026.
OpenAI Standard: $5 per 1M text input tokens, $8 per 1M image input tokens and $30 per 1M output image tokens. The calculator uses published output image estimates for explicit common sizes; this is not a fixed bill. Pricing sources are listed below. Batch, cache and special modes are kept separate from the base comparison.
Image generation budget
One output per request (n=1), text prompts only: the output estimate plus input counted once per request. Editing and image inputs are excluded. Billing conditions follow requested size/quality; equal auto/high rates do not guarantee identical rendering. Cache, tools, taxes, fees and repeated calls are excluded. RUB results use only your entered rate; this is not a bank quote.
Specifications and compatibility boundaries
- According to OpenAI documentation reviewed on 2026-10-24, OpenAI: text and image input, image output. The reviewed exact model page does not publish a numerical context or text output limit.
- According to OpenAI documentation reviewed on 2026-10-24, native dimensions: sides divisible by 16, maximum side 3840, aspect ratio at most 3:1, and 655,360 to 8,294,400 pixels. Modes above 2560×1440 are described as experimental.
- OpenAI’s model documentation reviewed on 2026-10-24 lists low/medium/high/auto, PNG/JPEG/WebP and preview transparency. API429 client guidance reviewed on 2026-10-24 recommends opaque/auto; native preview status does not promise API429 transparency.
Specification: OpenAI, checked Oct 24, 2026. These are not verified effective API429 limits. Check native manufacturer parameters and capabilities separately for the client method.
Published capabilities for this exact ID: chat image_generation . A missing field is not evidence of a prohibition, but it does not establish compatibility.
Choosing quality starts with the task and shape
OpenAI’s model documentation reviewed on 2026-10-24 records the April 21, 2026 release and snapshot gpt-image-2-2026-04-21. The API429 client contract reviewed on 2026-10-24 uses gpt-image-2 in requests. Do not add the snapshot suffix without checking its availability under your key. Practical quality selection starts with the intended use: choose explicit low for composition checks, then compare medium and high on the same task for a final layout. This is a sequence for your own experiment rather than a quality ranking. The initial request below specifies a square and low so the configuration does not depend on automatic selection. Record actual format and dimensions along with the prompt. Evaluate readable text and correct object placement on real layouts; a manufacturer announcement does not replace checking Cyrillic, brand details and editorial requirements.
Dimensions, limits and the requested result
According to OpenAI documentation reviewed on 2026-10-24, the native Image API allows flexible sizes with sides divisible by sixteen, a maximum side of 3840 and total area up to 8,294,400 pixels. The aspect ratio limit is three to one; minimum area is 655,360 pixels. For example, 3840x2160 fits the stated area while a 3840x3840 square exceeds it. These details belong to OpenAI. They do not establish identical API429 limits or exact response dimensions. The manufacturer describes settings above 2560x1440 as experimental, so review results especially carefully. In API429, compare requested parameters with api429.outputs and api429.parameter_mismatches when present. HTTP 200 does not prove agreement with size, quality or every prompt instruction. For layouts, plan aspect ratio checks and assess image suitability before publication.
Image estimates and input use different billing units
According to the API429 public catalog reviewed on 2026-10-24, published API429 image rows have catalog conditions; match them only to verified client settings. The output component is calculated per returned image, while request input is accounted for separately. Text input must not be multiplied again by the number of output images within the same request. This page’s calculator uses one result per request and an explicit configuration, so request count scales both components equally. According to OpenAI documentation reviewed on 2026-10-24, the manufacturer publishes token rates and estimated output costs for common sizes. These examples are estimates excluding text and image inputs. Do not apply an older GPT Image token table to Image 2. Automatic quality does not guarantee a particular rendered quality. Cache, additional services and fees are excluded from the estimate; check the actual charge after a small control call.
Editing and decoding without unsupported promises
The API429 schema and client documentation reviewed on 2026-10-24 describe an image edits method, while the exact model’s public catalog reviewed on 2026-10-24 listed image_generation and chat without separate image_editing. Do not turn that source difference into a promise of full compatibility. Use generation for first integration and confirm the required editing scenario separately. OpenAI’s model documentation reviewed on 2026-10-24 describes high input fidelity as Image 2 behavior and transparent backgrounds as preview. API429 client guidance reviewed on 2026-10-24 recommends opaque or auto; this page does not promise transparency. Do not copy input_fidelity from an older model without checking the required method. A synchronous b64_json response contains raw encoded bytes. For GPT, url may return a data URI rather than a hosted file. Check its signature and save the matching extension. A partial result, warning or timeout requires a status investigation before another paid call. No confirmed image jobs polling contract is established here, so asynchronous code is omitted. Define in advance who reviews content, where the original response is saved and how retry decisions are recorded. This separates technically receiving a file from determining that it is ready to use.
Public model observations
Over the last 24 hours: mean successful response time — 34 s; service error rate — 1.5%. Data as of .
Source: public 24-hour statistics. The mean is neither a median nor a response time guarantee; it is not a quality assessment of the image.
First request: curl, Python, JavaScript
Set API429_API_KEY on the server and check the exact ID using GET https://gateway.api429.com/v1/models using the same Bearer key. Generation incurs a charge; there are no automatic retries. An uncertain timeout does not prove there was no charge.
The examples request one result and b64_json. curl saves JSON to image-response.json; Python and JavaScript decode the file after checking MIME by signature. When choosing url, first distinguish a hosted URL from a data URI. Check warnings, partial results, api429.outputs and api429.parameter_mismatches, if present.
curl
curl --fail-with-body https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer $API429_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"A ceramic cup on a light wooden table, soft daylight, editorial product photograph, no text.","n":1,"size":"1024x1024","response_format":"b64_json","quality":"low"}' \
--output image-response.jsonPython 3
import base64
import json
import os
import urllib.request
from pathlib import Path
key = os.environ["API429_API_KEY"]
base = "https://gateway.api429.com/v1"
headers = {"Authorization": "Bearer " + key, "Content-Type": "application/json"}
model = "gpt-image-2"
with urllib.request.urlopen(urllib.request.Request(base + "/models", headers=headers), timeout=30) as response:
available = {item["id"] for item in json.load(response)["data"]}
if model not in available:
raise ValueError("Model unavailable to this key")
payload = json.loads("{\"model\":\"gpt-image-2\",\"prompt\":\"A ceramic cup on a light wooden table, soft daylight, editorial product photograph, no text.\",\"n\":1,\"size\":\"1024x1024\",\"response_format\":\"b64_json\",\"quality\":\"low\"}")
request = urllib.request.Request(base + "/images/generations",
data=json.dumps(payload).encode("utf-8"), headers=headers, method="POST")
with urllib.request.urlopen(request, timeout=180) as response:
result = json.load(response)
if result.get("warnings") or result.get("api429", {}).get("parameter_mismatches"):
print("Inspect output warnings:", result.get("warnings"), result.get("api429"))
items = result.get("data", [])
if len(items) != 1 or not items[0].get("b64_json"):
raise ValueError("Missing image or partial result; inspect before retrying")
raw = base64.b64decode(items[0]["b64_json"], validate=True)
if raw.startswith(b"\x89PNG\r\n\x1a\n"):
extension = "png"
elif raw.startswith(b"\xff\xd8\xff"):
extension = "jpg"
elif raw.startswith(b"RIFF") and raw[8:12] == b"WEBP":
extension = "webp"
else:
raise ValueError("Unknown image MIME; inspect before saving")
Path("image." + extension).write_bytes(raw)
print(result.get("api429", {}).get("outputs"))JavaScript: Node.js 18+
import { writeFile } from "node:fs/promises";
const key = process.env.API429_API_KEY;
if (!key) throw new Error("Set API429_API_KEY");
const base = "https://gateway.api429.com/v1";
const headers = { Authorization: "Bearer " + key, "Content-Type": "application/json" };
const model = "gpt-image-2";
const available = await fetch(base + "/models", { headers, signal: AbortSignal.timeout(30000) });
if (!available.ok) throw new Error("Models HTTP " + available.status);
if (!(await available.json()).data.some(item => item.id === model)) throw new Error("Model unavailable to this key");
const payload = {"model":"gpt-image-2","prompt":"A ceramic cup on a light wooden table, soft daylight, editorial product photograph, no text.","n":1,"size":"1024x1024","response_format":"b64_json","quality":"low"};
const response = await fetch(base + "/images/generations", {
method: "POST", headers, body: JSON.stringify(payload), signal: AbortSignal.timeout(180000)
});
if (!response.ok) throw new Error("Generation HTTP " + response.status);
const result = await response.json();
if (result.warnings || result.api429?.parameter_mismatches) console.warn("Inspect warnings", result.warnings, result.api429);
if (result.data?.length !== 1 || !result.data[0].b64_json) throw new Error("Missing image or partial result; inspect before retrying");
const bytes = Buffer.from(result.data[0].b64_json, "base64");
const hex = bytes.subarray(0, 8).toString("hex");
const extension = hex === "89504e470d0a1a0a" ? "png" : hex.startsWith("ffd8ff") ? "jpg" : bytes.toString("ascii", 0, 4) === "RIFF" && bytes.toString("ascii", 8, 12) === "WEBP" ? "webp" : undefined;
if (!extension) throw new Error("Unknown image MIME; inspect before saving");
await writeFile("image." + extension, bytes);
console.log(result.api429?.outputs);The examples are checked offline against the client contract and public schema. No paid execution or result quality is claimed. A verified complete image jobs contract is not available here: asynchronous fields and polling are omitted.
n8n: HTTP Request and saving the result
- Check access to the exact ID using GET /v1/models.
- Create an HTTP Request with POST to
https://gateway.api429.com/v1/images/generations; store the Bearer key in credentials. - Send the JSON from curl with one result. Do not include the key in a workflow export.
- Parse JSON, check the data count and warnings; decode b64_json and check MIME before saving.
HTTP Request documentation. Compatibility with specialized AI nodes and native SDKs needs separate verification.
Three options for your own comparison
Compare identical tasks and acceptance criteria. These are image models, not a quality ranking; conditional rows apply to their own configurations and do not form an equivalent benchmark.
| Model | Published API429 units |
|---|---|
gemini-3.1-flash-image (Nano Banana 2)gemini-3.1-flash-image | Resolution 1K: $0.0201 / 1 image Resolution 2K: $0.0303 / 1 image Resolution 4K: $0.0453 / 1 image |
Flux.2 ProFLUX.2-pro | 1 MP, no references: $0.009 / 1 image 2 MP, no references: $0.0135 / 1 image 4 MP, no references: $0.0225 / 1 image |
GPT Image 2.5 Flaregpt-image-2.5-flare | Image generation: $0.0159 / 1 image |
Version and release date
Manufacturer release date, OpenAI: . The exact predecessor has not been established in the reviewed sources. This does not automatically replace the ID. The model’s addition date in API429 is unknown.
Payment and a $10 test
- Russian bank card. Top up your balance in the account.
- Invoice for companies. Bank transfer with closing documents.
- USDT and TON. Top up in crypto.
$10 test credit. Subscribe to our Telegram channel through the bot and get $10 on your balance for the first requests. Get $10 in the bot
Frequently asked questions
Should I set quality explicitly?
For a reproducible comparison, request low, medium or high explicitly and keep the setting with the saved file. The example uses low. Automatic selection does not guarantee the same rendered quality, so evaluate the returned image rather than relying on the setting name.
Can I count only the output image price?
OpenAI’s pricing table reviewed on 2026-10-24 gives approximate output-component values and excludes text and image inputs from those examples. An output estimate therefore does not establish the full request cost. Keep input usage and returned-image count separate, and confirm current customer conditions before a larger series.
Why does url not open as a server link?
The client contract permits data URIs; this is a documented response_format=url option for GPT Image 2. The examples choose b64_json. Identify value type and MIME before saving, uploading or placing it on a page.
Are all OpenAI features available with this ID?
That is not established. Native limits and preview features are separate from the API429 contract; even an edits method in the general schema does not resolve the difference with the exact model’s catalog capabilities.
Sources and review
- developers.openai.com/api/docs/models/gpt-image-2
- developers.openai.com/api/docs/guides/image-generation
- developers.openai.com/api/docs/pricing
- developers.openai.com/api/docs/changelog
- gateway.api429.com/api/public/catalog
- gateway.api429.com/api/public/openapi.json
- client.api429.com/documentation
Editorial review: . Pricing · Getting started · Compare the family: GPT Image
