Repeatable AI images: seed returns 400 on Sume, so do this

Sume's schema accepts seed, but no image model lists it, so seed returns 400 unsupported_parameter. Pin the model and prompt, and keep the output file.

5 min readSume
All posts

Do not send seed. The field is in the request schema for OpenRouter parity, but the catalog is the allowlist and no model advertises a seed descriptor, so Sume returns 400 unsupported_parameter rather than ignoring it. output_compression is in the same state. For a repeatable result, keep the generated file instead of trying to regenerate it.

Fields that are in the schema but rejected

From the residuals table in the repo's docs/api/images.md and the public docs.

Sume Image API docs and repo, read 2026-10-13
FieldBehavior in v1Alternative
seed400 unsupported_parameterStore the output URL and asset
output_compression400 unsupported_parameterRecompress after download
stream400 streaming_not_supportedmode async plus job events
size with WxH400 unsupported_parameterimage_size, or the tier on size
background (off GPT 2.5)400 unsupported_parameterUse the GPT 2.5 rows

Getting consistency without a seed

For a family of images that must match, use a reference. Generate one approved frame, then pass it in input_references with an edit-capable row and describe the change. For a set that must share a style, reuse the same model id, prompt prefix and ratio, and keep the files you like.

Keep a log of the requested model, the stored model and the job id, since retired ids run as their successors.

import os, requests

r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={"model": "openai/gpt-image-2.5", "prompt": "test", "seed": 7},
    timeout=60,
)
print(r.status_code, r.json().get("error", {}).get("code"))

Note

Check the live catalog; a future row may list seed, and the descriptor will say so.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume