Reference image rejected? A public HTTPS URL checklist
Sume rejects localhost, private-network, non-HTTPS, and signed or private URLs for reference images. Six checks, and what image_not_fetchable means.

If Sume rejects a reference image, the URL is almost always not a public HTTPS image. The Image API docs say reference URLs must be public HTTPS, and localhost, private-network, and non-HTTPS URLs are rejected before submission. If Sume accepts the URL but cannot fetch it, you get image_not_fetchable or input_media_unreachable.
This matters more for edit workflows like text replacement on an existing ad, where the reference is the file you already have, as with Ideogram 4.5's reference edits on Higgsfield (Higgsfield changelog, read 2026-10-02).
What does Sume reject?
Per the docs, these rejections happen before generation submission. Check each row.
| Check | Rule |
|---|---|
| Scheme | https only |
| Host | Public; not localhost or a private network |
| Access | No signed or private URLs |
| Content type | Must match the image; a mismatch is rejected |
| Count | 1-10 on Image 1.0; up to 16 on ChatGPT Image 2.5 |
| Field | input_references on /v1/images; image_urls on Image 1.0 |
What does image_not_fetchable mean?
It is listed with input_media_unreachable and storage errors under provider and worker backpressure: Sume could not fetch or mirror the media safely. The documented next step is to check that the input is a public HTTPS image URL, then retry or contact support with the request id.
How do I test a URL before I send it?
Fetch it yourself from a machine outside your network and read the content type. A short script does the same.
import sys
import requests
url = sys.argv[1]
if not url.startswith("https://"):
raise SystemExit("not https")
r = requests.head(url, allow_redirects=True, timeout=15)
kind = r.headers.get("content-type", "")
print(r.status_code, kind)
if r.status_code != 200 or not kind.startswith("image/"):
raise SystemExit("not a publicly fetchable image")What if the file is private?
Host a copy on a public HTTPS location for the duration of the job, or reuse a Sume-hosted artifact URL from an earlier result. Expiring links, such as a signed URL that lapses in an hour, can fail between your check and Sume's fetch, so use a longer-lived copy. See the Image API docs, the media input rules, and the Errors docs.
Sources
Related posts
More in Developers
- Remove background from a PNG that already has transparency on Sume
Sume's rmbg route accepts a PNG that already has alpha. Substantial-alpha inputs are flattened onto mid-gray #808080 first, and it is billed once.
- Retake one sentence of a voiceover and splice it in with concat parts
Re-record one sentence, not the whole TTS take: use wav sentence segments and one timeline audio concat job with source_in. Python for the parts list.
- Queued Sume job: retry_after_seconds is capped at 30 seconds
For a queued job that is not yet available, Sume reports retry_after_seconds up to 30 and uses it as next_poll_after_seconds. Honor it, never sleep longer.
- Retry an avatar video request without paying twice
A timed-out avatar video submit can be retried safely with the same Idempotency-Key. What Sume returns, what causes a 409, and how to build the key.
Written by Sume