product_image 400: must be a fetchable public image URL

Sume avatar video rejects a product_image or scene image that is not a direct public image. What the 400 says, and why share links and HTML pages fail.

4 min readSume
All posts

The error

Sume downloads product_image, scene.image_url and background image URLs before it accepts the job. If the fetch fails, you get 400 invalid_request with a message in the form <field path> must be a fetchable public image URL. The details carry path, status and content_type so you can see what came back.

How the fetch works

The server sends a GET with Accept set to image, follows redirects and gives up after 15 seconds. A non-OK status or a response whose content type is not an image fails. The size is capped by the upload maximum. Accepted images are copied into Sume storage and the job uses a media.sume.com URL; a Sume media URL passes through unchanged.

Common causes
You passWhat comes backResult
A product page URLtext/html400, content_type text/html
A signed link that expired403 or 404400, status in details
A link behind login302 to a login page, then HTML400
A direct .jpg or .pngimage/jpeg or image/pngAccepted and copied

Fix

Use a direct HTTPS image URL that works without cookies. Test it from a clean shell before you submit.

curl -sI -L -H 'Accept: image/*' https://example.com/product.png | grep -i -E '^(HTTP|content-type)'

Cost note

A video with a product image bills at the product rate: $0.194, $0.258 or $0.58 per second by tier, against $0.184, $0.245 and $0.55 without. A failed fetch is a 400 before the job, so fix the URL and resend.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume