Four edit variants in one call: n limits and cost per Sume image model

Most Sume image models accept n up to 4, Grok Imagine only 1. You pay cost_usd times n, so four variants of an edit cost four edits.

4 min readSume
All posts

A common edit flow is to ask for a few variants and pick one. Sume takes this in n: the Image API docs say the request cap is 10 and each model has a lower ceiling in its catalog row. Read the n range descriptor before you pick a number.

Ceilings and list rates

In the catalog source, every edit-capable model allows 4 images per call except Grok Imagine, which allows 1. Billing is per image: the docs say you pay cost_usd × n, and the endpoint pricing lines already include Sume's margin. The table gives the catalog list rate times 1.25 for four models; cent rounding and per-resolution scaling can change what you are billed, so read usage.cost on the response.

Catalog list rate and list × 1.25 before cent rounding, from the Sume catalog source at origin/main, read 2026-10-04
ModelMax nCatalog list per imageList × 1.25Four images
flux.2-pro4$0.030$0.0375$0.15
ideogram-v4.5 (medium)4$0.060$0.075$0.30
nano-banana-2 (1K)4$0.080$0.100$0.40
grok-image1$0.020$0.025n/a, one image

When n=4 is the wrong tool

Variants in one call share one prompt, so they differ only by the model's own variation. If you need to vary an instruction, n does not help.

  • You want four different edits of one photo: send four requests, each with its own prompt.
  • You want one good edit: ask for n=1 and keep the budget for a retry.
  • You are on Grok Imagine: loop over single calls.

Read the cost off the response

The response carries usage.cost, the billed USD amount. The script sums it over a run so a variant sweep never surprises you.

import os
import requests

body = {
    "model": "google/nano-banana-2",
    "prompt": "Same product photo, warm morning light",
    "input_references": [{"type": "image_url", "image_url": {"url": "https://example.com/shoe.png"}}],
    "n": 4,
}
r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json=body,
    timeout=60,
)
if r.status_code == 200:
    out = r.json()
    print(len(out["data"]), "images, billed", out["usage"]["cost"])
else:
    print(r.status_code, "poll the job envelope instead")

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume