Sume image n: docs say up to 10, every catalog row says 4 or less

The Image API docs say n is 1 to 10, but each catalog row publishes its own ceiling: 4 on most, 1 on Grok Imagine. Cost is cost_usd times n. Table with prices.

5 min readSume
All posts

The Sume Image API docs say n can request up to 10 images per call, then add that per-model ceilings are lower. In the catalog, the ceiling is 4 for most image rows and 1 for Grok Imagine. Higgsfield Soul's constraint text says 1 or 4. So for a real request, ignore the 10 and read the n range descriptor of the row. You pay cost_usd times n, so n=4 on Flux 2 Pro is 4 x $0.0375 = $0.15.

Where the 10 comes from

The 1 to 10 range is in the request parameter table, which describes the schema shared by all rows. The per-row catalog is stricter. GET /v1/images/models publishes n as a range with a min and a max for every model, and Sume rejects a parameter that a model does not list. Image 1.0 has a separate field, num_images, with a range of 1 to 4.

n ceiling and per-image price by row, as of 2026-10-08 (price = list x 1.25 margin)
Rown maxPer imagen at max
Grok Imagine1$0.025$0.025
Qwen Image4$0.025$0.10
Seedream 4.04$0.0325$0.13
Flux 2 Pro4$0.0375$0.15
Seedream 5.0 Lite4$0.04375$0.175
Seedream 4.54$0.05$0.20
Nano Banana 2.14$0.10$0.40
Nano Banana Pro4$0.1875$0.75

The arithmetic

Endpoint pricing lines are what Sume charges to your wallet and already include the Sume margin. The list rates in the repo are multiplied by 1.25, so Flux 2 Pro at a $0.03 list is $0.0375, and Seedream 5.0 Lite at $0.035 is $0.04375. Docs say the charge is cost_usd x n, so Seedream 5.0 Lite at n=4 is 4 x $0.04375 = $0.175.

Billing is all or nothing. A generation either completes and is billed in full, or fails and is not billed. That makes n=4 a single bet: if the call fails you pay nothing, and if it completes you pay for four.

Read the ceiling in code

Do not hard-code 4. Ask the catalog for the row's range, then clamp your request.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.get("https://api.sume.com/v1/images/models", headers=H, timeout=30)
r.raise_for_status()
want = 6
for m in r.json()["data"]:
    n = m["supported_parameters"]["n"]
    print(m["id"], "n max", n["max"], "calls for", want, "=", -(-want // n["max"]))

When n is 1

Grok Imagine takes one image per call, so four takes is four calls. Each call is its own job, so use a distinct Idempotency-Key per call and the same key only for an exact retry. At $0.025 each, four Grok takes cost $0.10, the same as one Nano Banana 2.1 image at $0.10.

For a larger set, send several calls rather than one large n. Each call has its own price line and its own queue slot, and the billing is all-or-nothing per call, so a failed call does not leave you paying for part of a set. Plans admit a limited number of jobs at once (concurrency 1, 4, 8 or 20 on Free, Pro, Startup and Scale), so size your waves from the queue headroom that the API reports instead of firing every call at once.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume