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.

4 min readSume
All posts

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.

Mercari listing photo guidance, from Mercari Help, read 2026-10-02.
ItemWhat the page says
Photo countUp to 12 per listing
First photoThe first thing shoppers see; make it your best
OrderCan be rearranged after upload
Lighting and backgroundNatural lighting and plain backgrounds recommended
Pixel and size limitsNot 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

All Use cases posts

Written by Sume