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
- 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.
- Meta catalog ads show video: make a product clip for every SKU
Meta says catalog ad sets with product video saw 20% more conversions per dollar. Queue a Sume Format clip per SKU, up to 100 per bulk run, and poll it.
- Advantage+ video expansion for Reels: build the 9:16 cut yourself
Meta says video expansion for Facebook Reels gave a 2% conversion lift. If your clip is 16:9, Sume's Timeline can render a 1080x1920 cut you control.
- Meta AI Reels translation: who can use it, and the 1,000-follower rule
Per Meta, Reels translation is free for Facebook creators with 1,000 followers or more and for all public Instagram accounts where Meta AI is available.
Written by Sume