Draft at 1K, finish at 2K: read the image resolution descriptor

Sume's resolution tiers run 512 to 4K, but each model lists its own. A script that reads the descriptor, then a draft-then-final pattern for ad images.

4 min readSume
All posts

Sume's Image API names resolution tiers of 512, 1K, 2K, and 4K, but a model accepts only the values its catalog descriptor lists. Read supported_parameters before you pin a tier, draft at the smaller tier, and render the final at the larger one.

Tier choice is a live question: Ideogram 4.5 is listed on Higgsfield at 1K or 2K, and FLUX 3 Image up to native 4K (Higgsfield changelog, read 2026-10-02). Sume's models list their own.

What does the catalog say?

The normalized resolution tiers are 512, 1K, 2K, and 4K, and size is shorthand for a tier. Do not put custom pixels on size: use image_size or aspect_ratio. Explicit pixel size is in the schema but advertised by no model in v1.

Resolution fields from Sume's Image API docs, read 2026-10-02
FieldRule
resolutionTier: 512, 1K, 2K, 4K
sizeShorthand for a tier; no custom pixels
image_sizePresets or custom pixels on models that accept them
qualityauto, low, medium, high, xhigh, max; catalog-gated

How do I read what a model accepts?

List the catalog, then print the resolution values for the models you care about. If the descriptor is absent, the model does not take the parameter, and sending it returns 400 unsupported_parameter.

import os
import requests

r = requests.get(
    "https://api.sume.com/v1/images/models",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
for model in r.json().get("data", []):
    params = model.get("supported_parameters", {})
    tiers = params.get("resolution", {}).get("values")
    print(model["id"], tiers or "no resolution descriptor")

What is the draft-then-final pattern?

Run the copy and layout at a low tier and quality: "low", review, then rerun the winner at the final tier. Sume's docs say to escalate quality for finals, dense text, or packaging. Each rerun is a new paid job, so use a new idempotency key for the final and keep the draft's job id in your log. Image generation bills only on completion, so a failed draft costs nothing. See the Image API docs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume