Mercado Libre photo size: 1200x1200 and the pictures API

Mercado Libre wants 1200 x 1200 JPG or PNG up to 10 MB and shows a zoom widget past 800 px. Generate that size with Sume, upload it, link it to the item.

5 min readSume
All posts

Mercado Libre recommends uploading product pictures at 1200 x 1200 pixels, as JPG, JPEG or PNG, up to 10 MB each (Mercado Libre Developers, page last updated 24/03/2026, read 2026-10-03). It accepts up to 1920 x 1920, resizes anything bigger down to that, and will not enlarge anything smaller than its 500 x 500 minimum.

Sume can generate a 1200 x 1200 product image directly, because 1200 is a multiple of 16 and the area is inside the custom-size limits of its GPT image model. The upload and the link to the item are your calls to Mercado Libre's API, shown below.

What does the Mercado Libre pictures guide require?

The guide gives one recommended size and a hard range around it. It also asks that the product occupy about 95 percent of the picture, and it prefers RGB to CMYK (read 2026-10-03).

Mercado Libre picture rules for item listings, read 2026-10-03
RuleValue on the page
File typesJPG, JPEG, PNG
File sizeUp to 10 MB
Recommended upload size1200 x 1200 px
Maximum accepted1920 x 1920 px (version F); larger images are resized to it
Minimum500 x 500 px (version M); smaller images are kept, not enlarged
ZoomA zoom widget is activated when the width is greater than 800 px
Pictures per itemSet per category (max_pictures_per_item, max_pictures_per_item_var)

How do you generate a 1200 x 1200 image with Sume?

On openai/gpt-image-2.5, image_size accepts a custom size when both edges are multiples of 16, the longest edge is at most 3840, the aspect ratio is at most 3:1 and the pixel count is between 655,360 and 8,294,400. 1200 x 1200 is 1,440,000 pixels, so it qualifies, and so does Mercado Libre's 1920 x 1920 ceiling.

Pass the supplier photo in input_references and ask for the product to fill most of the frame, which matches Mercado Libre's 95 percent guidance. The default response is a PNG, which is on the accepted list, and the Sume docs say the call returns 200 with the image or 202 with a job to poll.

curl -sS -X POST "https://api.sume.com/v1/images" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ml-sku-1042-cover-v1" \
  -d '{
    "model": "openai/gpt-image-2.5",
    "prompt": "The product centered on a plain white background, even light, product fills 95 percent of the frame, no text or logos added",
    "input_references": [{"type": "image_url",
      "image_url": {"url": "https://cdn.example.com/sku-1042.jpg"}}],
    "image_size": "1200x1200"
  }'

How do you upload the picture and link it to an item?

The guide's flow has two calls. A multipart POST to /pictures/items/upload validates the image, runs a smartcrop that removes excess background and returns a picture id. A POST to /items/{item_id}/pictures with that id attaches it (read 2026-10-03). The script below downloads the Sume image, checks the 10 MB limit and does both calls.

import os, requests

ML = "https://api.mercadolibre.com"
H = {"Authorization": f"Bearer {os.environ['ML_ACCESS_TOKEN']}"}
sume_url = os.environ["SUME_IMAGE_URL"]  # data[0].url from POST /v1/images
img = requests.get(sume_url, timeout=60)
img.raise_for_status()
if len(img.content) > 10 * 1024 * 1024:
    raise SystemExit("over Mercado Libre's 10 MB limit")
up = requests.post(f"{ML}/pictures/items/upload", headers=H, timeout=60,
                   files={"file": ("sku-1042.png", img.content, "image/png")})
up.raise_for_status()
pic = up.json()
print(pic["id"], pic["max_size"])
item_id = os.environ["ML_ITEM_ID"]
link = requests.post(f"{ML}/items/{item_id}/pictures", headers=H, timeout=60,
                     json={"id": pic["id"]})
print(link.status_code, link.text[:200])

What goes wrong when you replace a picture?

The guide warns that to replace an image you must give it a new source name. If you reuse the same source URL with different content, the picture is not updated (read 2026-10-03). So when you regenerate a cover for a live listing, version the file name, for example sku-1042-v2.png, and send the new source in a PUT to the item.

If a picture shows an error such as Processing image, the guide points to GET /pictures/{picture_id}/errors, and lists redirects, 403 and 404 responses and certificate problems as the usual causes for pictures fetched from a URL. Uploading the file directly, as above, avoids most of those.

Do all pictures need to be 1200 pixels?

No, but width matters. The zoom widget turns on for pictures wider than 800 px, and the guide recommends it for apparel and real estate (read 2026-10-03). A 500 pixel picture is accepted, yet a buyer cannot zoom into fabric or stitching on it. For a catalog of clothing, generate every cover and detail shot at 1200 or above.

Keep the first picture of each item square and consistent across the catalog, then vary the extra shots: a back view, a texture close-up, a scale shot with a hand. Sume's image API takes n images per call, from 1 to 10 in the schema with lower ceilings on some models, so you can ask for a set in one request after reading the model's n range from the catalog.

What can Sume not do here?

Sume does not call Mercado Libre. It produces the image file; your code does the upload. It also cannot confirm that a picture will pass Mercado Libre's checks, so open the item's page after linking and look at the zoom and crop.

  • Generate at 1200 x 1200 unless the product is very long; stay at or under 1920 on the long edge.
  • Keep text, logos and watermarks out of the prompt for a cover photo. Mercado Libre flags cover pictures that carry them, which the next post in this series covers.
  • Use a distinct Idempotency-Key per SKU and version, and read the status code before parsing the body.
  • Version the file name every time you replace a live picture.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume