Ideogram 4.5 seed on Sume returns 400: how to repeat an edit
Ideogram's own API takes a seed for 4.5 edits, but Sume returns 400 unsupported_parameter for seed on every image model. Keep the output URL, not the seed.

Sending seed to POST /v1/images returns 400 unsupported_parameter on Sume, whatever the model, so you cannot ask for the same edit twice and get the same pixels back. If you need a repeatable result, store the output URL of the version you liked and use it as the next input instead of trying to re-roll it.
What the two APIs do
Ideogram's reference for 4.5 Precise Edit lists a seed field (Ideogram API reference, read 2026-10-05). The Sume Image API does not pass one through: the code rejects seed and output_compression with the message that no image model advertises the parameter in v1. stream: true is refused too, with streaming_not_supported.
| Field | Result | Code |
|---|---|---|
| seed | 400 | unsupported_parameter |
| output_compression | 400 | unsupported_parameter |
| stream: true | 400 | streaming_not_supported |
| any unknown field | 400 | unsupported_parameter |
A repeatable workflow without a seed
The Sume result for an image is a durable URL on media.sume.com, and usage.cost on the response shows what was billed (Jobs and results). Treat each accepted result as an asset:
- Save the URL, the prompt and the model id together when you accept a result.
- To change one thing, send the saved URL as the first
input_referencesentry with a one-line prompt. The edit starts from the pixels you approved, not from a random draw. - To compare options, ask for
nup to 4 in one call and pick one. That is the Sume way to get variety, and the choice is stored as a URL. - Do not re-run the original prompt to recover a lost image. Without a seed it is a new draw.
Example: strip the field before you call
If a client library adds seed by default, drop it before the request or you will get the 400 on every call.
import os, requests
body = {
"model": "ideogram/ideogram-v4.5",
"prompt": "Make the label text sharper",
"input_references": [{"image_url": {"url": "https://example.com/v2.png"}}],
}
body.pop("seed", None)
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json=body,
timeout=120,
)
print(r.status_code)When this is a real limit
If your process needs bit-exact reproduction, for example an audit trail that regenerates an image, Sume's image route does not fit. Keep the generated file itself as the record. For ordinary editing work, the saved URL is the better record anyway because it is the exact pixels a person approved.
A small record to keep
Store one row per accepted image: model id, quality, prompt, the input URL and the output URL. With that row you can explain any image later and you can branch from it, which is what a seed would have given you in a tool that supports one.
Review the row before you branch. If the prompt that produced the approved image used several changes at once, split them into separate edits on the next turn so each change can be judged alone.
Sources
Related posts
More in Developers
- Ideogram 4.5 edit in TypeScript: handle 200, 202 and 502 on Sume
One fetch helper for POST /v1/images with Ideogram 4.5: return the URL on 200, poll status_url and result_url on 202, and throw the error body on 502.
- Ideogram 4.5 on Sume does not accept output_format
Ideogram 4.5's output format is chosen by the provider on Sume. Which other image ids take png, jpeg or webp, and how to convert after the fact in Python.
- Ideogram 4.5 transparency claim vs Sume's background field
Higgsfield lists transparent backgrounds for Ideogram 4.5. On Sume, background works only on ChatGPT Image 2.5; other models need RMBG or Image 1.0.
- Image API changes in October 2026: what to do and when
October 2026 image API changes: gpt-image-1 shuts down 2026-10-23, three more OpenAI ids on 2026-12-01, GPT Image 2.5 ships, and Sume retires Image 1.0.
Written by Sume