Recursos

Acciones en Mercado Libre

Pause, active, cierre, republique o cambie el tipo de sus publicaciones de Mercado Libre desde su sistema, igual que en el panel: por lista de publicaciones o por filtros, hasta 10.000 por llamada.

Qué puede hacer

Pausar

pause

Deja de mostrarse en Mercado Libre. Se puede reactivar.

Activar

activate

Vuelve a mostrar una publicación pausada.

Cerrar

close

Finaliza la publicación. No se puede deshacer.

Republicar

republish

Crea de nuevo una publicación cerrada.

Cambiar tipo

change_listing_type

Entre Clásica (gold_special) y Premium (gold_pro).

Cómo hacerlo sin sorpresas

  1. 1

    Simule

    Envíe la acción con dry_run: true. No toca nada y le dice cuántas publicaciones coinciden.

    "dry_run": true
  2. 2

    Revise

    Mire matched y la muestra de listing_ids. Si no es lo que esperaba, ajuste los filtros.

    "matched": 37
  3. 3

    Ejecute

    Repita sin dry_run y con una key live. Para cerrar o republicar por filtros, pase el conteo.

    "expected_count": 37
  4. 4

    Siga el avance

    Consulte el job hasta que termine y revise failed_items.

    "status": "completed"
Estas acciones cambian su cuenta real de Mercado Libre. Requieren una key live con el permiso listings:write, que al crear la key viene desmarcado y hay que activar a mano. Con una key test solo se puede simular.
Por filtros, si no indica ml_status, la acción solo toma publicaciones activas o pausadas, y republish solo toma las cerradas. Puede haber hasta 3 acciones en curso a la vez.

Ejecutar una acción

POST/v2/products/ml-actions
scopelistings:writekeyliveidempotent
RequestPOST /products/ml-actions
curl -X POST "https://api.automeli.com/api/v2/products/ml-actions" \
     -H "X-API-Key: automeli_live_..." \
     -H "Content-Type: application/json" \
     -d '{
  "action": "pause",
  "filters": { "ml_status": "active", "amazon_status": "Agotado" },
  "dry_run": true
}'
Response

dry_run: true. No se ejecutó nada; matched es cuántas publicaciones tocaría.

{
  "dry_run": true,
  "action": "pause",
  "matched": 37,
  "sample": ["MCO1234567890", "MCO1234567891"],
  "has_more": false,
  "next_cursor": null
}
action
stringrequerido
pause (pausar), activate (activar), close (cerrar, irreversible), republish (republicar una cerrada) o change_listing_type (cambiar el tipo de publicación).
listing_ids
string[] (1-1.000)condicional
Publicaciones de Mercado Libre (MCO…). Las que no son de su cuenta vuelven en not_found. Excluyente con filters.
filters
objectcondicional
Mismos filtros que GET /products, un valor por clave: listing_id, sku, ml_status, amazon_status, published_with_automeli, automeli_sync_status, deleted_in_automeli, created_from, created_to, amazon_reviewed_from, amazon_reviewed_to, ml_updated_from, ml_updated_to. Cualquier otra clave se rechaza con 422. Debe acotar el alcance: deleted_in_automeli por sí solo no basta. Excluyente con listing_ids.
exclude_listing_ids
string[] (máx 1.000)opcional
Solo con filters: publicaciones a dejar por fuera.
listing_type
stringcondicional
Obligatorio con change_listing_type y prohibido con las demás acciones.
expected_count
intcondicional
Obligatorio en close y republish por filtros. Si el conteo real supera expected_count + máx(5, 5 %), responde 409 y no ejecuta nada. Tómelo de un dry_run.
dry_run
booleanopcional
Simula: devuelve matched y una muestra de 20 listing_ids sin tocar Mercado Libre. Es lo único que permite una key test.
cursor
stringopcional
next_cursor de la respuesta anterior, para seguir con las siguientes 10.000. Solo sirve para la misma acción, filtros, exclusiones y modo (dry_run o real).
Los filtros son los mismos del listado del catálogo y significan exactamente lo mismo: lo que ve con GET /v2/products es lo que tocará la acción. Si una clave no está permitida, la API responde 422 en vez de ignorarla, para que un filtro mal escrito nunca amplíe el alcance.
Errores posibles de este endpoint (12)
E_AUTH_MISSING_KEY

Falta el header X-API-Key

401
E_AUTH_INVALID_KEY

Key con formato inválido o no reconocida

401
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_RATE_LIMITED

Excedió el rate limit. Ver Retry-After

429
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_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_ACTION_REQUIRES_LIVE_KEY

Acción real sobre Mercado Libre con key test (con test solo se permite dry_run)

403
E_ACTION_COUNT_MISMATCH

close/republish por filtros: el conteo real supera expected_count más la tolerancia

409
E_ACTION_MAX_CONCURRENT_JOBS

Ya tiene 3 jobs de acciones en cola o en proceso

429
E_NO_ML_TOKEN

La cuenta no tiene un token de MercadoLibre vinculado

400
E_INTERNAL

Error inesperado. Reintente con backoff

503

Consultar el avance

Consulte cada 5 a 10 segundos hasta que el status sea completed, failed o cancelled.

GET/v2/products/ml-actions/{jobId}
scopeproducts:read
RequestGET /products/ml-actions/{jobId}
curl "https://api.automeli.com/api/v2/products/ml-actions/<job_id>" \
     -H "X-API-Key: automeli_live_..."
200Response

Estado del job. failed_items_truncated indica que hay más fallos que los listados.

{
  "job_id": "1759672800123",
  "action": "pause",
  "status": "completed",
  "total": 37,
  "processed": 37,
  "successful": 36,
  "failed": 1,
  "failed_items": [
    { "listing_id": "MCO1234567899", "error": "item_under_review" }
  ],
  "failed_items_truncated": false,
  "cancellation_requested": false,
  "message": null,
  "created_at": "2026-10-05T14:00:00.000Z",
  "updated_at": "2026-10-05T14:01:12.000Z"
}
Errores posibles de este endpoint (3)
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_JOB_NOT_FOUND

jobId no existe o no es de su seller

404
E_INTERNAL

Error inesperado. Reintente con backoff

503

Cancelar una acción

POST/v2/products/ml-actions/{jobId}/cancel
scopelistings:writeidempotent
RequestPOST /products/ml-actions/{jobId}/cancel
curl -X POST "https://api.automeli.com/api/v2/products/ml-actions/<job_id>/cancel" \
     -H "X-API-Key: automeli_live_..."
200Response

Cancelación solicitada.

{
  "job_id": "1759672800123",
  "status": "cancellation_requested",
  "message": "Cancelación solicitada: el job se detiene antes del siguiente lote; lo ya hecho en Mercado Libre queda hecho."
}
La cancelación detiene el job antes del siguiente lote. Lo que ya se hizo en Mercado Libre no se revierte: si pausó 500 de 1.000, esas 500 quedan pausadas.
Errores posibles de este endpoint (4)
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_JOB_NOT_FOUND

jobId no existe o no es de su seller

404
E_JOB_ALREADY_TERMINAL

Cancel sobre job ya cerrado

400
E_INTERNAL

Error inesperado. Reintente con backoff

503