Image API n or a bulk Format run: which to use for ad variants
Use Image API n for same-prompt variants at one ratio, and a bulk Format run when each variant needs its own instruction, input, spend cap or webhook.

Use n on POST /v1/images when every variant shares one prompt and one ratio, and a bulk Format run when each variant needs its own instruction, input, spend cap or webhook. The Image API allows n from 1 to 10 with lower per-model ceilings; a bulk queue allows up to 100 items.
Side by side
| Question | Image API `n` | Bulk Format run |
|---|---|---|
| Variants per call | 1 to 10, lower per model | 1 to 100 items |
| Different prompt per variant | No | Yes, per-item instruction |
| Different ratio per variant | No, one aspect_ratio per call | Yes, if your Format takes it as input |
| Per-item spend cap | No | Yes, generation_spend_cap_usd |
| Per-item webhook | No | Yes, communication.webhook_url |
Rule of thumb in code
A tiny chooser makes the rule explicit.
def pick(variants: list[dict]) -> str:
prompts = {v["prompt"] for v in variants}
ratios = {v["ratio"] for v in variants}
if len(prompts) == 1 and len(ratios) == 1 and len(variants) <= 4:
return "Image API with n"
return "bulk Format run"
print(pick([{"prompt": "a", "ratio": "1:1"}] * 3))
print(pick([{"prompt": "a", "ratio": "1:1"}, {"prompt": "b", "ratio": "2:3"}]))Cost and failure
Image n bills through one usage.cost on the response. A bulk queue gives you per-item receipts, so one failure does not hide the rest.
Sources
Related posts
More in Formats
- Invite a workspace to run your Format: POST grants stays pending
POST /v1/formats/{handle}/{slug}/grants invites a team workspace with role run or write. The grant is pending and confers nothing until their admin accepts.
- Is running the same Format weekly a template to YouTube?
A Sume Format is a saved recipe, not a saved video. How to separate the repeatable process from the repeatable output so weekly Shorts do not read as templated.
- LinkedIn Lead Gen Form headline 60 characters: variants in bulk
A LinkedIn Lead Gen Form headline holds 60 characters and the details line 160. Queue copy variants as Sume bulk items and check lengths before you paste.
- Logo animation with sume-logo-motion-design: one call, a cap, a retry
Animate a logo with the sume-logo-motion-design Format: attach the PNG, set a spend cap, keep a stable idempotency key, and continue a run to fix one detail.
Written by Sume