RMBG or upscale fails: image_not_fetchable and the HTTPS fix list

Sume cutout and upscale jobs need a public HTTPS image_url of at most 2,048 characters. Fix list for image_not_fetchable, 400 on model, 402 and 429 errors.

5 min readSume
All posts

When a Sume remove-background or image-upscale request fails with image_not_fetchable or input_media_unreachable, Sume could not fetch the image. The input must be a public HTTPS URL that returns the image without a login, and the URL can be at most 2,048 characters. Fix the URL, then retry with the same idempotency key.

Errors and what to do

Sume's error docs say that image_not_fetchable, input_media_unreachable and storage configuration errors mean that Sume could not fetch or mirror the media safely. The advice is to make sure the input is a public HTTPS image URL and then retry, or contact support with the request id. The same page lists the usual API errors, and the table below maps the ones that matter for cutouts and upscales.

Errors on RMBG and image upscale requests (Sume error docs, read 2026-10-08)
Status or codeMeaningWhat to do
400 invalid_requestBad body, such as a non-HTTPS URL, an extra field, or a model fieldSend only the documented fields. Never send model or an endpoint field
402 insufficient_creditsBalance cannot cover the requestTop up, then resubmit the same call
429 rate_limitedToo many requests in the windowBack off, use retry-after when present
429 queue_fullConcurrency and queue are both fullWait for running jobs, then resubmit with the same key
image_not_fetchableSume could not fetch the imageMake the URL public HTTPS and retry
413 payload_too_largeRequest body over the limitSend a URL, not the image bytes

Why a signed URL can fail

A presigned storage URL is public for as long as the signature lasts. If the signature expires in 60 seconds and the job waits in a queue, the fetch can fail even though the URL worked when you copied it. Sign for a longer period than the job could take to start, for example 15 minutes, for a large batch.

Other common causes are a URL that redirects to a login page, a host that blocks unknown crawlers, a private network address, and plain HTTP. Sume rejects localhost, private-network and non-HTTPS URLs before the job is created. Test the URL from a machine outside your own network, using curl without credentials.

Fields the routes refuse

Both routes are strict. The body schema lists the allowed fields, and an unknown one is an error. The routes also refuse model, endpoint and provider_endpoint, because Sume picks the engine on the server. If you port a request from another provider that carried a model name, remove it.

A 4xx on a field is not a charge. Fix the body and submit again. For a result that came back transparent when you did not expect it, or the reverse, read the note on PNG inputs that already have alpha.

curl -sI "https://cdn.example.com/p/0042.jpg" | head -n 5
curl -s -o /dev/null -w "%{http_code} %{content_type}\n" "https://cdn.example.com/p/0042.jpg"

A pre-flight check

Before you submit a batch, run a check over the list of URLs and drop the ones that fail. It costs nothing, because it is your own HTTP request, and it catches the dead links that would otherwise turn into failed jobs. For each URL, confirm a 200 status, an image content type and an HTTPS scheme.

Log the failures with the SKU, then fix the source rows. Submitting only URLs that pass keeps the ledger clean: each SKU has one job, and each job either completes or fails for a reason that is not the link.

  • Status is 200 without a redirect to a sign-in page.
  • Content type starts with image/.
  • Scheme is https and the host is public.
  • URL length is under 2,048 characters.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume