Recursos

Productos en cuenta de prueba

Liste los productos que ya publicó con una key test y promuévalos a la cuenta real cuando estén listos. Reproduce el flujo de la web: publicar primero en prueba, revisar, y después publicar en real.

Listar productos en cuenta de prueba

GET/v2/products/test
Probar en sandbox
scopeproducts:read

Devuelve los productos que se crearon al publicar con una API Key automeli_test_*, paginados por cursor. Dos campos importan para promover: listing_id_test (el ID que usa el promote) y published_to_live (si ya se promovió a real).

RequestGET /products/test
curl "https://api.automeli.com/api/v2/products/test?ml_status=active&published_to_live=0&limit=50" \
     -H "X-API-Key: automeli_live_..."
200Response

Página de productos en la cuenta de prueba.

{
  "data": [
    {
      "sku": "B003H03SDQ",
      "listing_id_test": "MCO1943839161",
      "title": "Producto de prueba",
      "image_url": "https://http2.mlstatic.com/…jpg",
      "permalink_test": "https://articulo.mercadolibre.com.co/…",
      "ml_listing_type": "gold_pro",
      "price": 89000,
      "ml_currency": "COP",
      "ml_category_id": "MCO420674",
      "ml_category_name": "Soluciones Limpiadoras",
      "automeli_tax_category": 0,
      "ml_status": "active",
      "automeli_sync_status": "enabled",
      "published_to_live": false,
      "test_published_at": "2026-05-08T12:00:00.000Z",
      "ml_main_category": "Hogar",
      "weight_lb": 4.5,
      "manufacturing_time": "5",
      "amazon_price": 24.99,
      "amazon_total_price": 31.5,
      "amazon_shipping_cost": 0,
      "amazon_taxes": 6.51
    }
  ],
  "next_cursor": null,
  "has_more": false,
  "count": 1,
  "total": 1
}
Filtros disponibles
ml_status
stringopcional
Estado del listing en Mercado Libre: active, paused, closed, under_review, inactive, not_yet_active, payment_required.
published_to_live
0 | 1opcional
0 → solo los pendientes de promover a real. 1 → los que ya pasaron a real.
automeli_sync_status
palabraopcional
enabled o disabled.
sku
stringopcional
Filtra por SKU exacto.
created_from / created_to
string ISO 8601opcional
Rango sobre la fecha en que se publicó en prueba. Acepta 2026-09-11 o 2026-09-11T12:00:00Z; sin hora, el _from toma desde las 00:00:00 y el _to hasta las 23:59:59 UTC. Sirve para aislar el lote que acabás de crear.
weight_min / weight_max
numberopcional
Rango de peso en libras. Los productos sin peso registrado quedan fuera de cualquier rango: publicar sin peso cotiza mal el envío.
price_min / price_max
numberopcional
Rango del precio de venta en Mercado Libre (el mismo valor que el campo price).
ml_category_id
stringopcional
Categoría de Mercado Libre con la que se publicó en prueba (ej. MCO420674).
automeli_tax_category
intopcional
Índice de la categoría fiscal (entero ≥ 0). Ver GET /account/tax-categories.
limit
number (1-200)opcional
Default 50.
cursor
stringopcional
Token de la página siguiente.
Campos de cada producto
listing_id_test
stringrequerido
El ID que se manda en listing_ids_test al promover.
sku
stringrequerido
ASIN de Amazon.
price / ml_currency
number / stringrequerido
Precio de venta publicado en la cuenta de prueba y su moneda.
weight_lb
number | nullrequerido
Peso en libras con el que se cotiza el envío. Conviene revisarlo antes de promover: un peso mal tomado encarece el envío y se traslada al precio.
amazon_price / amazon_total_price
number | nullrequerido
Precio en Amazon y precio total (con envío e impuestos de Amazon incluidos).
amazon_shipping_cost / amazon_taxes
number | nullrequerido
Los dos componentes que separan el precio de Amazon del total.
manufacturing_time
string | nullrequerido
Días de preparación declarados en la publicación.
ml_category_id / ml_category_name / ml_main_category
string | nullrequerido
Categoría de Mercado Libre, su nombre y la categoría raíz.
ml_status
stringrequerido
Estado del listing de prueba. Solo active y paused se pueden promover.
published_to_live
booleanrequerido
Si ese producto ya se promovió a la cuenta real.
test_published_at
string ISO 8601requerido
Cuándo se publicó en la cuenta de prueba.
Errores posibles de este endpoint (3)
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_PRODUCT_INVALID_PARAM

Parámetro de query o path inválido (fecha, UUID, estado fuera de rango). Sólo v2; en v1 estos casos devuelven E_PRODUCT_INVALID_BODY

422
E_PRODUCT_INVALID_SKU

SKU no cumple regex (10 alfanum)

422
Campo automeli_tax_category: es el índice de la categoría fiscal del seller (0, 1, 2…). Vale null cuando la publicación de prueba no tiene categoría fiscal asignada — no 0, que es un índice válido (la primera categoría).
Flujo recomendado: (1) publique con una key test usando POST /v2/products; (2) liste los pendientes con GET /v2/products/test?published_to_live=0 y tome sus listing_id_test; (3) promuévalos con el endpoint de abajo usando una key live.

Promover de prueba a real

Publica en la cuenta real productos que ya existen en su cuenta de prueba, reutilizando la categoría de Mercado Libre, la categoría fiscal y el tipo de publicación que ya tenían guardados.

POST/v2/products/test/promote
Probar en sandbox
scopeproducts:writekeyliveidempotent

La selección es por ID de prueba (el listing_id_test del listado de arriba), no por SKU: es el ID el que permite recuperar la categoría con la que se publicó en prueba y reusarla en la real.

RequestPOST /products/test/promote
curl -X POST "https://api.automeli.com/api/v2/products/test/promote" \
     -H "X-API-Key: automeli_live_..." \
     -H "Content-Type: application/json" \
     -d '{
  "listing_ids_test": ["MCO1943839161", "MCO1943839175"],
  "name": "Promoción octubre"
}'
202Response

Promoción aceptada. jobs[] lista un job por combinación de categoría fiscal + tipo de publicación; cada uno se sigue con GET /products/jobs/{jobId}. Para conciliar: promoted incluye los SKUs que quedaron duplicate (ya en cola en otro job) y nunca se publican — lo que realmente se encola es queued (promoted = queued + duplicates; ídem promoted_total = queued_total + duplicates_total). skipped_duplicate_sku lista los repetidos dentro de la misma llamada. Todos esos campos vienen siempre, con 0 o vacío incluido.

{
  "jobs": [
    {
      "job_id": "a1b2c3d4-…",
      "status": "queued",
      "name": "Promoción octubre",
      "automeli_tax_category": 0,
      "ml_listing_type": "gold_pro",
      "promoted": 2,
      "queued": 2,
      "duplicates": 0
    }
  ],
  "requested": 3,
  "promoted_total": 2,
  "queued_total": 2,
  "duplicates_total": 0,
  "skipped_not_publishable": [
    { "listing_id_test": "MCO7777777777", "ml_status": "under_review" }
  ],
  "not_found": [],
  "skipped_duplicate_sku": []
}
Requiere una API Key live. Promover publica en su cuenta real y consume créditos reales. Con una key test responde 403 E_PROMOTE_REQUIRES_LIVE_KEY.
Sólo se promueven publicaciones activas y pausadas. Las que estén en under_review, inactive o closed se omiten y aparecen en skipped_not_publishable. Si ninguna es publicable: 400 E_PROMOTE_NO_CANDIDATES.
Una llamada puede crear varios jobs. La categoría fiscal y el tipo de publicación se definen a nivel job, así que los productos se agrupan por automeli_tax_category + ml_listing_type y se crea un job por grupo. El tipo se hereda de la publicación de prueba: lo que probó como gold_pro se promueve como gold_pro. Como el máximo de jobs activos es 6, una promoción con muchas combinaciones puede responder 429 E_PRODUCT_MAX_CONCURRENT_JOBS: divida el envío.
Los SKUs que ya tiene publicados y vivos en la cuenta real — o ya en cola en otro job — se saltan. No consumen crédito y aparecen en los items del job con estado duplicate. Por eso puede reenviar un lote sin miedo a duplicar publicaciones. Para conciliar: promoted los incluye; lo que realmente se publica es queued (promoted = queued + duplicates, y lo mismo con los totales).
Campo opcional name: nombre de los jobs que crea la llamada (todos llevan el mismo), para encontrarlos en el historial. Se limpia igual que en POST /products (corte sin error en 120 caracteres); sin él, los jobs quedan con name: null.
El promote no acepta scheduled_for (a diferencia de v1: si lo envía, se ignora y la promoción corre de inmediato). Para publicar programado, use POST /products.
Errores posibles de este endpoint (8)
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_PROMOTE_REQUIRES_LIVE_KEY

Endpoint /products/test/promote sólo acepta key live

403
E_PROMOTE_NO_CANDIDATES

Ningún producto de prueba publicable coincide con lo pedido

400
E_IDEMPOTENCY_CONFLICT

Misma Idempotency-Key con body distinto

409
E_PRODUCT_INVALID_BODY

Body malformado o con campos inválidos (POST/PATCH)

422
E_PRODUCT_CREDIT_EXHAUSTED

Sin créditos disponibles

400
E_PRODUCT_MAX_CONCURRENT_JOBS

Ya tiene 6 jobs activos

429
E_ACCOUNT_NOT_FOUND

Cuenta Meli no encontrada

404