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"
    }
  ],
  "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.
limit
number (1-200)opcional
Default 50.
cursor
stringopcional
Token de la página siguiente.
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"]
}'
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": "8 may 2026, 12:00:00",
      "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).
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