Maximum benchmark performance.
GPT Image 2
OpenAILeads the supplied Arena image-editing comparison. Prioritize it for demanding editing workloads.
Choose your workload
Models for revising existing images with clear creative instructions.
Maximum benchmark performance.
Leads the supplied Arena image-editing comparison. Prioritize it for demanding editing workloads.
A smarter performance-to-cost balance.
A lower approximate per-image reference price for edits, with a meaningful supplied benchmark gap to evaluate.
Arena · supplied snapshot·Supplied Arena snapshot · date pending·How we compare
Approximate comparison using supplied reference prices for one image. Actual settings and billing may vary. Arena scores and prices are from the supplied snapshot. The leaderboard source and snapshot date still need confirmation.
The same workload, with the details that help you choose.
| Comparison | GPT Image 2Best Performance | Qwen Image EditBest Value |
|---|---|---|
| Arena score | 1462 Supplied Arena snapshot · date pending | 1242 Supplied Arena snapshot · date pending |
| Relative score | Performance reference | 15.0% lower Arena score |
| Billing rate | ~$0.06 / image | ~$0.03 / image |
| Arena difference | Performance reference | -220 / -15.0% |
| Cost difference | Price reference | ~50% lower cost |
| Supported modalities | text, image → image | text, image → image |
| Main reason to choose | Choose this when maximum benchmark performance matters more than inference cost. | Consider this for production workloads where the reference price matters. Evaluate the benchmark gap against your own workload. |
| Best fit | Image creation and editing when maximum benchmark performance matters | Repeated image edits where reference cost matters |
| Billing details | Approximate supplied reference price per image. Output settings and actual billing may vary. | Approximate supplied reference price per image. Output settings and actual billing may vary. |
Approximate comparison using supplied reference prices for one image. Actual settings and billing may vary.
Implementation
Copy a model test, replace the API key with your own, and run.
Copy the Python or cURL test for GPT Image 2. Replace the API-key placeholder with your own key and run.
GPT Image 2 · image editing · Includes a built-in PNG and sends it as a multipart image-editing request.
import base64
import json
import uuid
from urllib.error import HTTPError
from urllib.request import Request, urlopen
API_KEY = "YOUR_ROTEN_API_KEY"
image = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAMAAABIw9uxAAAADFBMVEUKJUBjW//Hw//2+fz1WrJUAAALlElEQVR42u3UwQEAIAgDMZT9d2YI9SEkM7QXAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK0tOOdIAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAAAgACIAAgAAIAAiAAIAACAAIgACAAAgACIAAgAAIAAiAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAiAAIAACAAIgACAAAgACIAAgAAIAAiAAIAACAAIgACAAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAAGC7CIAAgAAIAAiAAIAACAAIgACAAAgACIAAgAAIAAiAAIAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAsDIAGxeEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAATAkQRgegDyLgFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEAAFAABAABAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAAfFUAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABMCRBEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEAAEQAAFAAARAABAAARAABEAABAABoDdHEgAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABEAAQAAEAARAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAAEQABAAAQABEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABADbRQAEAARAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAAEQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPhGAaq0FA3Y21yRAAAAAElFTkSuQmCC")
fields = json.loads(r'''{
"prompt": "Change the background of this abstract image to midnight navy while keeping the shapes in place.",
"size": "1024x1024",
"n": "1",
"model": "gpt-image-2"
}''')
boundary = "roten-" + uuid.uuid4().hex
parts = []
for name, value in fields.items():
parts.append((f'--{boundary}\r\nContent-Disposition: form-data; name="{name}"\r\n\r\n{value}\r\n').encode())
parts.append((f'--{boundary}\r\nContent-Disposition: form-data; name="image"; filename="test.png"\r\nContent-Type: image/png\r\n\r\n').encode() + image + b"\r\n")
parts.append(f"--{boundary}--\r\n".encode())
request = Request(
"https://api.roten.ai/v1/images/edits",
data=b"".join(parts),
headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": f"multipart/form-data; boundary={boundary}"},
)
try:
with urlopen(request, timeout=180) as response:
result = json.load(response)
except HTTPError as error:
raise SystemExit(f"HTTP {error.code}: {error.read().decode('utf-8')}")
print(json.dumps(result, indent=2))API_KEY='YOUR_ROTEN_API_KEY'
# The sample image is included; no file path needs changing.
test_image=$(mktemp)
trap 'rm -f "$test_image"' EXIT
printf '%s' 'iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAMAAABIw9uxAAAADFBMVEUKJUBjW//Hw//2+fz1WrJUAAALlElEQVR42u3UwQEAIAgDMZT9d2YI9SEkM7QXAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK0tOOdIAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAAAgACIAAgAAIAAiAAIAACAAIgACAAAgACIAAgAAIAAiAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAiAAIAACAAIgACAAAgACIAAgAAIAAiAAIAACAAIgACAAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAKAAGC7CIAAgAAIAAiAAIAACAAIgACAAAgACIAAgAAIAAiAAIAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAsDIAGxeEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAATAkQRgegDyLgFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEAAFAABAABAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAAfFUAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAAQAARAAAUAABEAAEAABEAAEQAAEAAEQAAFAAARAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAAARAABEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABMCRBEAABAABEAABQAAEQAAQAAEQAARAAAQAARAAAUAABEAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABEAAEQAAEAAEQAAFAAARAABAAARAABEAABAABEAABQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEAAEQAAFAAARAABAAARAABEAABAABoDdHEgAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABEAAQAAEAARAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAAEQABAAAQABEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABADbRQAEAARAAEAABAAEQABAAAQABEAAQAAEAARAAEAABAAEQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPhGAaq0FA3Y21yRAAAAAElFTkSuQmCC' | base64 -d > "$test_image"
curl --fail-with-body --silent --show-error 'https://api.roten.ai/v1/images/edits' \
-H "Authorization: Bearer $API_KEY" \
--form-string 'prompt=Change the background of this abstract image to midnight navy while keeping the shapes in place.' \
--form-string 'size=1024x1024' \
--form-string 'n=1' \
--form-string 'model=gpt-image-2' \
-F "image=@$test_image;type=image/png;filename=test.png"Python tests use the standard library. Video cURL tests also use Python 3 to read task responses.
A clear reference point
Recommendations combine the supplied Arena scores with the supplied model prices. A benchmark score is one signal for choosing a model for your workload.
Arena · supplied snapshot·Supplied Arena snapshot · date pending·How we compare
Built for production
Talk to us about volume pricing, model selection and migration.