156 thumbnail options a year on GPT Image 2.5, by quality

52 videos with three thumbnail options each is 156 images. At 1280x720 on Sume that is about $0.62 at low and $5.54 at high.

4 min readSume
All posts

A weekly channel with three thumbnail options per video needs 156 images a year. On GPT Image 2.5 at 1280x720 that costs about $0.62 at low, $1.44 at medium and $5.54 at high on Sume, before any edits or retries.

Even the max tier is only about $22.15 for the year, so the question is quality fit, not budget.

Year cost by quality

Sume bills the provider list price times 1.25, as this worked-examples post shows.

156 images at 1280x720, output only (read 2026-10-06)
QualityOne image on Sume156 images on Sume
low$0.0040$0.62
medium$0.0092$1.44
high$0.0355$5.54
xhigh$0.0631$9.85
max$0.1420$22.15

Where the real cost goes

The cost that matters is not the generation. It is the retries when text in the image comes out wrong, and the edits that follow a pick. Add a margin of 2x to 3x to the table if your process regenerates often.

For a mixed plan, draft at medium and finish the winner at high: three medium options plus one high final per video is about $3.29 a year.

Limits to plan for

At this size, requests normally finish inside the 30-second wait on /v1/images and come back as a 200. Higher quality or larger sizes may return a 202 job; handle both.

Compare other models on a cost-per-set basis in the 36-image thumbnail test.

Check it on your own account

Do not budget from a blog table alone. GET /v1/images/models lists every model with its descriptors, and GET /v1/images/models/{id}/endpoints shows the pricing line for one model. Then run one small request and read usage.cost on the response, which is the billed amount in USD; the token counts in usage are reported as 0 on this route.

Run the test at the quality and size you plan to ship, because both move the price. A single test at low quality costs under a cent for most sizes here, so it is a cheap way to confirm your assumptions before a batch.

Sync, async and failures

The /v1/images route waits up to 30 seconds for the image. If the job finishes in that window you get the result directly; otherwise you get a 202 and an async job to poll. Write your client to branch on the status code, since larger sizes and higher quality are the likely cases for a 202.

Requests are strict. A parameter the chosen model does not list returns 400 unsupported_parameter, stream returns a 400, and provider.only or provider.order accept only sume. Treat a 400 as a bug in the request, not a transient error, and do not retry it unchanged.

Caveat

The 'Sume' columns are list times 1.25 before any rounding on the job ledger and before input tokens, so read usage.cost on the response for the amount actually billed.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume