Move OpenAI GPT Image 2.5 calls to Sume: field-by-field mapping

Which OpenAI gpt-image-2.5 parameters carry over to Sume's POST /v1/images, which change name, and which return 400 unsupported_parameter.

5 min readSume
All posts

To move a GPT Image 2.5 call from OpenAI's Image API to Sume, send POST /v1/images with model: "openai/gpt-image-2.5" (Flare) or "openai/gpt-image-2.5-sunburst", keep prompt, quality, output_format and background, turn size into image_size or aspect_ratio, and replace uploaded files with public HTTPS URLs. Three OpenAI features have no Sume equivalent yet: output_compression, streaming partial images, and a moderation setting.

The OpenAI column comes from its image generation guide, read on 2026-10-03; the Sume column from the Image API docs.

Which fields carry over unchanged?

prompt is required on both. quality takes low, medium, high, xhigh and max on both, plus auto. output_format takes png, jpeg and webp on both. background takes auto, transparent or opaque on both, and OpenAI notes that transparency needs PNG or WebP output, so keep png when you request it. n exists on both, with the Sume schema allowing 1 to 10 and per-model ceilings lower, so read the n range from the catalog row.

Which fields change name or meaning?

The default quality difference is the one that surprises people. OpenAI's guide lists auto as its default, while the Sume docs say that an omitted quality defaults to high.

OpenAI GPT Image 2.5 parameters and their Sume counterparts (read 2026-10-03)
OpenAISumeNotes
size (1024x1024, 1536x1024, 1024x1536, custom WIDTHxHEIGHT)image_size or aspect_ratioCustom pixels: both edges multiples of 16, max edge 3840, ratio up to 3:1, 655,360 to 8,294,400 pixels
quality default autoquality default high when omittedSet it explicitly; auto reserves the cost of max on Sume
Edits with uploaded image and mask filesinput_references (public HTTPS URLs) and mask_urlUp to 16 references; the mask applies to the first image
Response with image data200 with data[].url, or 202 with a job envelopeSume-hosted signed URLs, not inline image data
Model gpt-image-2.5-flare or -sunburstopenai/gpt-image-2.5 (Flare) or openai/gpt-image-2.5-sunburstBare legacy Image Router ids are accepted as aliases

Which OpenAI features does Sume not serve?

Three, per the docs. First, output_compression (0 to 100 for JPEG and WebP): it is in the schema but advertised by no model, so sending it returns 400 unsupported_parameter. Second, streaming: OpenAI documents partial_images from 0 to 3; Sume reports supports_streaming: false for every catalog row and stream: true returns 400 streaming_not_supported. Third, moderation is not listed in the Sume request parameters, and the docs say a parameter the selected model does not list is rejected rather than dropped.

Multi-turn editing through a previous response id is a Responses API feature. On Sume each Image API call is stateless, so a follow-up edit sends the earlier output's URL as a reference together with a fresh prompt.

How do you send the same edit?

Instead of uploading an image and a mask as files, host both at public HTTPS addresses. Localhost, private-network and non-HTTPS URLs are rejected before submission. A mask must match the image's format and size and carry an alpha channel, per OpenAI's rules, and it remains guidance, not an exact boundary.

curl -X POST https://api.sume.com/v1/images \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: edit-0001" \
  -d '{
    "model": "openai/gpt-image-2.5-sunburst",
    "prompt": "Change only the masked area to a wooden shelf. Keep everything else identical.",
    "input_references": [{"type": "image_url", "image_url": {"url": "https://example.com/room.png"}}],
    "mask_url": "https://example.com/room-mask.png",
    "quality": "high"
  }'

How should you handle the response?

Check the status code, not the body shape. 200 is the image response with data[].url entries; 202 is the standard job envelope, after which you poll GET /v1/jobs/{id}/status and read GET /v1/jobs/{id}/result. Slow configurations, such as 4K, high quality or a large n, are the likeliest to degrade to 202, and OpenAI warns complex prompts can take up to 2 minutes.

Billing is also different in shape. Sume bills a completed generation in full at the endpoint's pricing line and does not bill a failed or cancelled one. The usage object reports cost in USD and token counts of 0, so do not compute spend from tokens.

A short migration checklist helps. Change the base URL and authorization header, map the model id, delete output_compression, moderation and streaming options, replace file uploads with public HTTPS URLs, set quality explicitly, and add an Idempotency-Key per operation so a retry after a client timeout cannot bill twice. Then run five prompts that you already have OpenAI outputs for and compare them side by side before you switch real traffic.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume