Build an image model capability matrix from GET /v1/images/models
A short Python script that reads Sume's image catalog and prints each model's reference-image limit and aspect ratios, so you stop guessing per model.

To compare image models on Sume without guessing, call GET /v1/images/models and read each model's supported_parameters. Sume publishes typed capability descriptors there, so a 20-line script can print a matrix of reference-image limits and aspect ratios for every listed model.
New image models keep arriving: Higgsfield's changelog lists FLUX 3 Image on 2026-10-01 and Ideogram 4.5 on 2026-09-30 (Higgsfield changelog, read 2026-10-02). A catalog read tells you what Sume lists today instead of what a launch post implies.
What does the catalog tell me about each model?
Each row has an id, architecture (input and output modalities), and supported_parameters. Parameters use three descriptor types, and Sume rejects a request that sets a parameter the model does not list with 400 unsupported_parameter rather than dropping it silently.
Reference-image support is the input_references range. A model whose range is min 0, max 0 is text-to-image only and rejects references.
| Descriptor | Meaning | Example field |
|---|---|---|
| enum | A discrete allowlist of string values | aspect_ratio |
| range | Any integer between min and max | n, input_references |
| boolean | Present means supported, absent means unsupported | prompt |
How do I print the matrix?
Send your API key as a bearer token and loop over data. The script below tolerates a missing descriptor, because a model only lists what it supports.
import os
import requests
resp = requests.get(
"https://api.sume.com/v1/images/models",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
timeout=30,
)
resp.raise_for_status()
print("id | max references | aspect ratios")
for model in resp.json().get("data", []):
params = model.get("supported_parameters", {})
refs = params.get("input_references", {}).get("max", 0)
ratios = params.get("aspect_ratio", {}).get("values", [])
print(f"{model['id']} | {refs} | {len(ratios)}")Why read endpoints too?
GET /v1/images/models/{model_id}/endpoints returns the definitive parameter set and the pricing lines for a model. Sume serves every catalog model through a single sume endpoint in v1, so model-level and endpoint-level parameters are identical.
sume/auto is not in the list on purpose: Sume picks the family and job.model stays sume/auto. If you need a pinned model for a series, pick it from this catalog.
What should I do with the output?
Save the matrix next to your prompts and rerun it before you change a model id. If a model you read about is not in the output, it is not listed for your key today; use a listed model or sume/auto instead. See the Image API docs for the full field list.
Sources
Related posts
More in Developers
- Image request timed out: do you pay for it on Sume?
Sume bills image jobs by outcome. A client timeout does not cancel the job, so a finished image can still bill. Use async mode and poll; do not resubmit.
- Sume images API n=5 returns 400 though the docs say up to 10
The Image API docs say n up to 10, but the catalog range is 1 to 4 for most models, 1 for Grok and 1 or 4 for Soul. The error text and a loop that batches.
- Image API wait_timeout_seconds: submit now, poll later
Set wait_timeout_seconds to 0 on POST /v1/images to stop blocking and treat every call as a job. How the 200 and 202 answers differ and a polling script.
- Instagram Login or Facebook Login for a Reels publishing app?
Both logins can publish Reels. They differ in host, token and scopes, and resumable upload plus some metrics are Facebook Login only. Pick before you build.
Written by Sume