List Sume image models that take references or masks with jq
New image models land weekly. One curl and one jq filter on GET /v1/images/models show which ids accept input_references, mask_url or background, and how many.

Every week brings another image model with new edit features, and Sume's catalog tells you what each id accepts. GET /v1/images/models returns a supported_parameters block per model. A short jq filter over it lists the ids that take reference images, the maximum number of references, and which ids list mask_url or background.
Why read the catalog instead of a blog post
The Image API validates against the catalog. A parameter the model does not list is rejected with 400 unsupported_parameter rather than ignored. So the catalog is the source of truth for what a request may contain, and it changes when Sume adds or retires models. A post written last month can be wrong today; the endpoint cannot.
The filters
Descriptors are typed: enum, range or boolean. input_references is a range with min and max, and a model with max 0 is text-to-image only. The catalog row for the sume/auto pseudo-model is not listed, by design.
export SUME_API_KEY=your_key_here
# ids that accept at least one reference image, with the cap
curl -s "https://api.sume.com/v1/images/models" \
-H "Authorization: Bearer $SUME_API_KEY" |
jq -r '.data[] | select((.supported_parameters.input_references.max // 0) > 0)
| "\(.id)\t\(.supported_parameters.input_references.max)"'
# ids that list mask_url or background
curl -s "https://api.sume.com/v1/images/models" \
-H "Authorization: Bearer $SUME_API_KEY" |
jq -r '.data[] | select(.supported_parameters.mask_url or .supported_parameters.background) | .id'What the docs say to expect
The table shows what the repo docs state today. Your live catalog is what counts, because ids may be added after this was written.
| Parameter | Documented behavior |
|---|---|
| input_references | Max 10 by default, 16 on ChatGPT Image 2.5, 5 total on Ideogram 4.5 |
| mask_url | Only ChatGPT Image 2.5 (Flare and Sunburst) |
| background | Only ChatGPT Image 2.5 (Flare and Sunburst) |
| quality xhigh and max | Only ChatGPT Image 2.5 |
| output_compression, seed, stream | In the schema, but no model advertises them in v1 |
Use it in CI
Run the first filter in a nightly job and diff its output against the last run. A change in the list or in a cap is a signal to re-check any prompt that assumed a reference count. Pair it with the per-model endpoints call to catch price changes, since the pricing lines live there and not in the list.
Other useful filters
Two more filters worth keeping:
- Models that list
quality: select where.supported_parameters.qualityexists. - Models with
nabove 1: read.supported_parameters.n.max.
Sources
Related posts
More in Developers
- How do I add a listen-to-this-page audio version with TTS?
Turn each article into an audio file with one async TTS job per page: a 9,000-character article costs 43 cents on Sume. What it does not replace.
- LTX v1 video endpoints end Oct 26: what a Sume job client changes
LTX turns off five v1 video routes on 2026-10-26. Client habits that survive a cutoff like that on Sume: catalog ids, stored job ids, one submit function.
- Luma Ray3.2 API: the docs page still lists ray-2 and ray-flash-2
Luma says the Ray3.2 API is live. The docs page I read on Oct 7 lists only ray-flash-2 and ray-2. How to check before you code, and Sume's gap.
- lyria-3-pro-preview vs Sume lyria-3-pro: which model string?
Google lists lyria-3-pro-preview at $0.08 per song. On Sume the Music Router id is lyria-3-pro, and a Google string fails with model_not_found.
Written by Sume