eBay PictureURL: first URL is the Gallery image, 3,975-char cap
eBay allows up to 24 picture URLs, uses the first as the Gallery image, and caps all PictureURL values at 3,975 characters. How to order and size a Sume batch.

Which picture does eBay use as the Gallery image?
The first one you send. eBay's PictureDetails reference says the Gallery image is the first URL passed in the first PictureURL field, for both new listings and revisions. So the order of your generated images is a decision, not a detail: put the clearest front view first.
The same reference sets the other limits that matter for a generated set, all read 2026-10-03: up to 24 picture URLs on a listing (motor vehicles are the exception), every image at least 500 pixels on its longest side or the listing may be blocked, HTTPS only, spaces encoded as %20, and no semicolons in a URL.
Why the 3,975-character rule matters for long URLs
eBay says the total length of all PictureURL values on a listing must not exceed 3,975 characters. Divide that by the 24-picture maximum and each URL averages 165 characters (3,975 / 24 = 165.6, rounded down). A short CDN path fits easily. A long signed URL may not.
Sume's Image API describes data[].url as Sume-hosted and signed, with an example shaped like https://media.sume.com/img/01J.../0.png. The docs do not state a URL length, so measure the URLs you actually receive instead of assuming. If they are too long for 24 pictures, download the files and host them on a short path you control, or use fewer pictures.
| Limit | eBay's value | Planning consequence |
|---|---|---|
| Pictures per listing | Up to 24 URLs (vehicles differ) | Plan no more than 24 shots per SKU |
| Smallest image | 500 px on the longest side | Never request below this; the listing may be blocked |
| Protocol | HTTPS only | Reject any non-HTTPS host |
| Characters | 3,975 across all PictureURL values | About 165 per URL if you use all 24 |
| Gallery image | First URL in the first PictureURL field | Sort the hero shot first |
How do I check a batch before listing?
Run a length check over the list you plan to send. The script below uses made-up URLs with a 120-character signature to show the failure: 24 URLs of that shape already total more than the cap.
Replace the sample list with your real URLs. Anything over the limit means shorter hosting paths or fewer pictures.
urls = [
"https://example.com/img/" + str(i) + ".jpg?sig=" + "x" * 120
for i in range(24)
]
limit = 3975
total = sum(len(u) for u in urls)
print("urls:", len(urls), "total chars:", total, "limit:", limit)
print("fits" if total <= limit else "too long")
print("average budget per URL:", limit // len(urls))What do I ask Sume for?
Ask for one hero shot you are happy to see as the Gallery thumbnail, then the supporting angles. The Image API accepts up to 10 images per call with n, though per-model ceilings are lower, so read the n range in GET /v1/images/models before batching. Order the results yourself after download, since the first URL you submit to eBay is the one that leads.
For sizing, ask for a resolution tier well above eBay's 500 px floor and check the output's longest side before upload.
Sources
Related posts
More in Use cases
- eBay Promoted Listings video ads: review time and a sound-off clip
eBay reviews Promoted Listings video before it runs: most in 48 hours, up to 7 business days. Aim for 5 to 15 seconds, sound off, and build the clip with Sume.
- eBay variation pictures: one picture set per color, not per SKU
eBay ties variation photos to one attribute such as Color, with a picture set per value. Plan one Sume image batch per color and keep one hosting type.
- Edit an old Sora download with Gemini Omni: trim to 10 s first
Reuse a saved Sora clip as a Gemini Omni Flash edit source on Sume: cut it to 10 seconds with video trim, then send it as video_url with a short edit prompt.
- Edit one region of an AI image and keep every other pixel
A mask edit is guidance, not a guarantee. Paste the original back outside the mask with Pillow so untouched pixels stay identical. Python with Sume's mask_url.
Written by Sume