Image edit reference URL rejected? Public HTTPS checklist for Sume

Sume rejects localhost, private-network and non-HTTPS reference URLs, and a URL it cannot download fails as input_media_unreachable. Check yours in 12 lines.

4 min readSume
All posts

Every image-editing launch this fall assumes you can hand the model a photo. Over an API you hand it a URL, and the URL has to be one Sume's servers can fetch. The Image API docs say reference URLs must be public HTTPS, and that Sume rejects localhost, private-network and non-HTTPS URLs before submission.

Two different failures

A URL that breaks the rule is refused up front. A URL that passes the rule but cannot be downloaded fails later. In a synchronous call that second case comes back as 502 with an error envelope; the docs show the code input_media_unreachable, the message "Could not download an input media URL (image_url). Verify the URL is publicly reachable, then retry.", retryable: false and next_action: "fix_input". Retrying the same URL will not help, so fix the input.

Reference URL failures on the Sume Image API, from docs.sume.com/models/images, read 2026-10-04
URL problemWhen Sume reports itWhat to do
http:// instead of https://Before submissionServe the file over HTTPS
localhost or a private-network addressBefore submissionHost it on a public address or a public bucket
Public HTTPS but the download fails (expired signature, login wall)502 input_media_unreachable, next_action fix_inputRe-issue a fresh public URL, then send a new request

A pre-flight check you can run

Do the check yourself before you spend a request. The script asks for the headers only and confirms the status and that the content is an image.

import requests

def reference_ok(url: str) -> bool:
    if not url.startswith("https://"):
        return False
    r = requests.head(url, allow_redirects=True, timeout=15)
    ctype = r.headers.get("content-type", "")
    return r.status_code == 200 and ctype.startswith("image/")

print(reference_ok("https://example.com/photo.png"))

Signed URLs need a long enough life

If your photos sit in private storage, create a signed URL with a lifetime that covers the whole job, not just the submit. A job can wait in the queue before it starts, so an expiry measured in seconds can pass before Sume downloads the file. For slow models, pass the URL and read the job at GET /v1/jobs/{id}/status (Jobs and results).

Sources

Related posts

More in Developers

All Developers posts

Written by Sume