36 product shots from 36 packshots: about $2.00 on GPT Image 2.5

One reference packshot per SKU, one new scene per call: 36 edits at the listed GPT Image 2.5 medium 2K rate of $0.055625 come to $2.0025. Request and checks.

5 min readSume
All posts

The short answer

Thirty-six product shots, each built from one packshot of its own SKU, cost about $2.00 on GPT Image 2.5 at the listed medium 2K rate: 36 x $0.055625 = $2.0025. Send each packshot as an input_references entry with a prompt that names the new scene and tells the model to keep the product identical. The rate is the catalog's listed figure; the real quote for your size and quality comes from the API.

The request

The Image API takes reference images as public HTTPS URLs. GPT Image 2.5 accepts up to 16 references, an optional mask_url, and quality from low to max. On an edit, set aspect_ratio: "auto" if you want the output to match the reference, because the docs say omitting it is not the same as auto.

{
  "model": "openai/gpt-image-2.5",
  "prompt": "Keep the product identical. Place it on a sunlit kitchen counter, soft shadow.",
  "input_references": [
    {"type": "image_url", "image_url": {"url": "https://example.com/packshots/sku-001.png"}}
  ],
  "quality": "medium",
  "aspect_ratio": "auto"
}

Cost by quality

The shared price list gives three listed GPT Image 2.5 points: low at 1K, medium at 2K and high at 4K. They are tiered by quality and size, so a 36-shot run changes a lot with the tier you choose.

36 GPT Image 2.5 edits at the listed rate for each tier, as of 2026-10-09
Tier (size)Price per image36 imagesArithmetic
low (1K)$0.02475$0.8936 x 0.02475 = 0.891
medium (2K)$0.055625$2.0036 x 0.055625 = 2.0025
high (4K)$0.2225$8.0136 x 0.2225 = 8.01

Handling a run of 36

Submit the 36 requests in small groups rather than all at once, and keep the job id for each SKU. Write the SKU, the prompt, the model and usage.cost to a file as each result arrives. If one request returns 202, store its status_url and result_url and move on; the image will be there when the job ends. A short log like this also gives you a cost per SKU, which for the medium 2K row is $0.055625.

What to check on each result

Compare each output with its packshot on three points: the label text, the shape of the product, and the colours. Any of the three can drift in an edit. Mark the SKU as pass or redo, and re-run only the redo list; at $0.055625 a call, ten redos add $0.55.

Keep the prompt the same across SKUs except for the scene line. When the scene stays fixed and the product changes, a failure points at the product reference rather than at the prompt.

Run three SKUs first. Compare each result with its packshot for logo, label text, color and proportions, since an edit can drift. If a label changes, raise the quality tier or use a mask_url so only the background is editable. Every reference URL must be public HTTPS; Sume rejects localhost, private-network and non-HTTPS URLs before submission.

Failed generations are not charged, so a retry on a failure adds nothing to the total. A completed image you reject is billed, so keep the first pass small.

Store the packshot URL, the prompt and the output URL in a CSV. When the run is done, the CSV is both your delivery list and your audit trail, and a redo run is a filter on the pass column.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume