Mercari lets you add 12 photos: a 12-shot plan
Mercari allows up to 12 photos per listing and shows the first one first. Plan the set, and use Sume only for promo clips made from your real shots.

Mercari lets you add up to 12 photos to a listing, and the first photo is the first thing shoppers see, so make it the best one. Mercari recommends natural lighting and plain backgrounds, and you can rearrange photos after upload. The page gives no pixel or file-size rule, so this post does not either.
This is from Mercari's help centre, read on 2026-10-02.
What does Mercari say about photos?
The guidance is short.
| Item | What the page says |
|---|---|
| Photo count | Up to 12 per listing |
| First photo | The first thing shoppers see; make it your best |
| Order | Can be rearranged after upload |
| Lighting and background | Natural lighting and plain backgrounds recommended |
| Pixel and size limits | Not stated on the page |
What is a sensible 12-shot plan?
Mercari does not prescribe one, so this is a suggestion.
- 1: the whole item, front, plain background.
- 2 to 4: back, sides, and top or bottom.
- 5 to 6: labels, tags, serial numbers or size markings.
- 7 to 9: close-ups of material and any wear or flaws.
- 10: scale shot beside a common object.
- 11 to 12: accessories, box or what is included.
Where can AI help a Mercari seller?
Mercari's page does not discuss AI, so keep the listing photos real and unedited. Sume's video API can turn your first photo into a short clip for your social channels, which sends traffic to the listing without touching the listing gallery.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
job = requests.post(
"https://api.sume.com/v1/videos",
headers=H,
json={
"model": "seedance-2",
"prompt": "Slow turn on this sneaker on a plain table, soft daylight, the sneaker unchanged",
"frame_images": [{
"type": "image_url",
"image_url": {"url": "https://example.com/closet/sneaker.jpg"},
"frame_type": "first_frame",
}],
"aspect_ratio": "9:16",
"duration": 5,
"resolution": "720p",
},
timeout=60,
).json()
while True:
time.sleep(20)
st = requests.get(job["polling_url"], headers=H, timeout=60).json()
if st["status"] in ("completed", "failed", "cancelled"):
break
print(st["status"], st.get("unsigned_urls"))
Sources
Related posts
More in Use cases
- Messenger Stories placement removed Aug 27: which ad ratios to keep
Common Thread reports Meta dropped Messenger Stories on 2026-08-27. What that changes in a render list, and the aspect_ratio values Sume video accepts.
- Meta removed ad-set placement exclusions: render every ratio
Per Common Thread, Meta removed ad-set placement exclusions on 2026-08-21. If you cannot opt out of a placement, render every ratio your list needs.
- Does Meta's AI info label apply to video ads? What the page says
Meta's help page on AI info for ads covers images made or significantly edited with its AI tools or third-party AI tools. It does not describe video ads.
- Meta Advantage+ 31 enhancements, 17 labeled AI (reported): audit sheet
LeapBuzz reports 31 Advantage+ creative enhancements, 17 labeled as AI, 10 on by default. A per-campaign audit sheet and a small Python tally to keep.
Written by Sume