Product colorway grid: one n=4 call or four calls? Same price on Sume
Four colorways of one product cost $0.20 on Seedream 4.5 whether you send one n=4 call or four calls. What differs is failure shape and idempotency keys.

Four colorways of one product cost $0.20 on Seedream 4.5 on Sume, $0.05 per image, whether you ask for n: 4 in one call or send four calls with n: 1. Sume charges cost_usd x n, so price is identical. The choice is about failure shape: one n: 4 call is all-or-nothing, while four calls can succeed one by one. The Image API docs state the billing rule: a generation completes and bills in full, or fails and does not bill.
One catch decides it for some jobs. With n: 4 all the images share one prompt, so a single request cannot say "red, blue, green, black". Colorways need four prompts, so for them four calls are the answer.
When is one n=4 call right?
Use n: 4 when you want four takes of the same prompt and will pick one: a thumbnail test or a hero shot. It is one request, one idempotency key and one job to track. It is also the shape most likely to degrade to 202, because large n, high quality and 4K all slow a generation past the 30-second wait.
When are four calls right?
Use four calls when each image needs its own prompt, as in colorways, or when you want partial results. Send each with its own Idempotency-Key, such as sku-1042-red, so a retry of one colorway returns the original job instead of billing twice. A failed colorway can then be retried alone.
| Question | One n=4 call | Four n=1 calls |
|---|---|---|
| Price | $0.20 | $0.20 |
| Prompts | One shared prompt | One per image |
| On failure | Whole call fails, no charge | Only the failed call |
| Idempotency keys | One | Four, one per colorway |
What should the loop handle?
Branch on the status code: 200 is the image response and 202 is the job envelope, which you finish by polling GET /v1/jobs/{id}/status and reading /result, as in jobs and results. Prices here are list x 1.25 in dollars per image before whole-cent rounding; the catalog's billable formula reads "list x 1.25, ceil usd cents", so confirm the first charge in usage.cost and budget from the invoice, not from the sum.
Sources
Related posts
More in Developers
- Pydantic AI MCPToolset with Sume: which headers and caps to pass
Pydantic AI connects a remote MCP server with MCPToolset and a headers argument. Against Sume, an API key unlocks paid tools, so set caps and idempotency keys.
- pytest: fail CI when a configured image model id isn't in Sume's list
A pytest that reads your image model ids and checks each against GET /v1/images/models, so a retired id such as gpt-image-1 fails CI before it fails a customer.
- Python asyncio semaphore: submit transcription jobs with a cap
Run Sume STT submits through asyncio.Semaphore and asyncio.to_thread, honor retry-after on 429, and keep one Idempotency-Key per clip. Tested code.
- A Python Enum for Sume job statuses and the terminal set
Sume jobs move through queued, processing, completed, failed and canceled. A tested Python Enum and terminal set so a poll loop stops on all three endings.
Written by Sume