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.
/v2/products/testDevuelve 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).
GET /products/testcurl "https://api.automeli.com/api/v2/products/test?ml_status=active&published_to_live=0&limit=50" \
-H "X-API-Key: automeli_live_..."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_statusactive, paused, closed, under_review, inactive, not_yet_active, payment_required.published_to_live0 → solo los pendientes de promover a real. 1 → los que ya pasaron a real.automeli_sync_statusenabled o disabled.skulimitcursorErrores posibles de este endpoint (3)
E_AUTH_FORBIDDEN_SCOPESu key no tiene el permiso requerido (ver scopes)
403E_PRODUCT_INVALID_PARAMPará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
422E_PRODUCT_INVALID_SKUSKU no cumple regex (10 alfanum)
422automeli_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).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.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.
/v2/products/test/promoteLa 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.
POST /products/test/promotecurl -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"]
}'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": []
}403 E_PROMOTE_REQUIRES_LIVE_KEY.under_review, inactive o closed se omiten y aparecen en skipped_not_publishable. Si ninguna es publicable: 400 E_PROMOTE_NO_CANDIDATES.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.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).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_SCOPESu key no tiene el permiso requerido (ver scopes)
403E_PROMOTE_REQUIRES_LIVE_KEYEndpoint /products/test/promote sólo acepta key live
403E_PROMOTE_NO_CANDIDATESNingún producto de prueba publicable coincide con lo pedido
400E_IDEMPOTENCY_CONFLICTMisma Idempotency-Key con body distinto
409E_PRODUCT_INVALID_BODYBody malformado o con campos inválidos (POST/PATCH)
422E_PRODUCT_CREDIT_EXHAUSTEDSin créditos disponibles
400E_PRODUCT_MAX_CONCURRENT_JOBSYa tiene 6 jobs activos
429E_ACCOUNT_NOT_FOUNDCuenta Meli no encontrada
404