4:3 slide image at 1024x768 on GPT Image 2.5: legal, and the price

1024x768 is a legal 4:3 box for GPT Image 2.5 (786,432 pixels). About $0.0113 at medium and $0.0451 at high on Sume.

4 min readSume
All posts

1024x768 works on GPT Image 2.5: both edges are multiples of 16, it has 786,432 pixels (above the 655,360 floor), and 4:3 is well inside the 3:1 limit. On Sume it costs about $0.0113 at medium and $0.0451 at high, before input tokens.

Unlike 16:9, a 4:3 box is easy to hit: any width that is a multiple of 64 gives a height that is a multiple of 16.

Price by quality

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

1024x768 output by quality (read 2026-10-06)
QualityOutput tokensProvider listSume (list x 1.25)
low134$0.0040$0.0050
medium301$0.0090$0.0113
high1,204$0.0361$0.0451
xhigh2,140$0.0642$0.0802
max4,815$0.1444$0.1806

Older slide decks

4:3 is the classic slide shape, and it is still the default in some exports. If your deck is 16:9, use an exact 16:9 size instead. For 4:3 at larger sizes, 1536x1152 and 2048x1536 follow the same rule.

The tradeoff is that GPT Image 2.5 is not the cheapest 4:3 model; some Sume models list a 4:3 aspect ratio and bill a flat price per image, so compare with the aspect-ratio cost post.

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