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 API Reels total_interactions: how it is calculated
Instagram's insights reference defines total_interactions as likes, saves, comments and shares minus unlikes and deletions, and marks it in development.
Written by Sume