Recursos

Catálogo y sincronización

El endpoint estrella de lectura de v2: las publicaciones de su cuenta real, con filtros, infracciones abiertas y paginación por cursor. Y su contraparte de escritura: decidir qué hace Automeli con cada publicación.

Listar el catálogo

GET/v2/products
Probar en sandbox
scopeproducts:read

Devuelve cada publicación con nombres limpios (sin columnas internas de la base de datos): identificadores, estados en Mercado Libre y Amazon, precios de ambos lados, fechas en ISO 8601 y las infractions abiertas. Es la fuente para reconciliar su sistema con lo que Automeli ve de su cuenta.

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

Página del catálogo. total sólo en la primera petición (sin cursor); para seguir, repetir con ?cursor=<next_cursor> hasta que has_more sea false.

{
  "data": [
    {
      "listing_id": "MCO1234567890",
      "sku": "B003H03SDQ",
      "title": "Ejemplo de producto",
      "brand": "ACME",
      "permalink": "https://articulo.mercadolibre.com.co/…",
      "image_url": "https://http2.mlstatic.com/…jpg",

      "ml_status": "active",
      "ml_sub_status": null,
      "amazon_status": "Disponible",
      "ml_category": "Soluciones Limpiadoras",
      "ml_main_category": "Hogar y Muebles",
      "ml_listing_type": "gold_pro",
      "published_with_automeli": true,
      "pause_reason": "",
      "paused_since": null,

      "amazon_total_price": 24.99,
      "amazon_price": 19.99,
      "amazon_shipping_cost": 0,
      "amazon_taxes": 0,
      "ml_price": 89000,
      "stock": 8,
      "weight_lb": 1.2,
      "manufacturing_time": "5",
      "shipping_origin": "amazonUSA",

      "created_at": "2026-05-08T12:00:00.000Z",
      "amazon_reviewed_at": "2026-06-30T03:11:00.000Z",
      "ml_updated_at": "2026-06-30T04:00:00.000Z",

      "automeli_sync_status": "enabled",
      "automeli_tax_category": 0,
      "last_change": "Disponible",
      "discount_percentage": -12,

      "image_differs_from_amazon": false,
      "amazon_image_url": null,

      "infractions": []
    }
  ],
  "next_cursor": "eyJsYXN0X2lkIjoi…",
  "has_more": true,
  "count": 1,
  "total": 12840
}
Paginación por cursor. La primera petición (sin cursor) trae total; las siguientes se piden con ?cursor=<next_cursor> hasta que has_more sea false. No cambie los filtros a mitad de la paginación. Ver guía de paginación →
Filtros disponibles (query params)
limit
number (1-1000)opcional
Tamaño de página. Default 100.
cursor
stringopcional
Token de la página siguiente. Páselo tal cual lo recibió, sin modificarlo.
listing_id
stringopcional
Filtra por un ID de publicación exacto.
sku
stringopcional
Filtra por SKU exacto.
ml_status
stringopcional
Estado en Mercado Libre: active, paused, closed, deleted, under_review, …
amazon_status
stringopcional
Estado del producto en Amazon.
published_with_automeli
0 | 1opcional
Sólo publicaciones creadas (1) o no creadas (0) con el publicador de Automeli.
automeli_sync_status
palabraopcional
enabled o disabled. Omitir = todos. Valor no habilitado para su cuenta → 422 (el mensaje lista los válidos).
deleted_in_automeli
0 | 1 | 2opcional
Default 0 (sólo no eliminados en Automeli). 2 = incluye ambos.
created_from / created_to
string (fecha)opcional
Rango sobre created_at.
amazon_reviewed_from / amazon_reviewed_to
string (fecha)opcional
Rango sobre amazon_reviewed_at.
ml_updated_from / ml_updated_to
string (fecha)opcional
Rango sobre ml_updated_at.
Campos que merecen una nota
automeli_sync_status
string | nullrequerido
Estado de sincronización como palabra: enabled o disabled (algunas cuentas tienen estados adicionales habilitados y pueden verlos aquí). Se cambia con el endpoint de abajo.
paused_since
string YYYY-MM-DD | nullrequerido
Desde cuándo lleva el producto, de forma continua, en su pause_reason actual. null = disponible o pausa aún no reprocesada.
discount_percentage
number | nullrequerido
Porcentaje de descuento con signo (puede ser negativo). En v1 era el campo discount_total_price.
image_differs_from_amazon / amazon_image_url
boolean / string | nullrequerido
Si la imagen publicada difiere de la de Amazon; la URL de Amazon sólo viene cuando difiere.
infractions
arrayrequerido
Infracciones abiertas del producto. Cada una: { id_reason, reason, resolution }. Vacío si no tiene.
Errores posibles de este endpoint (2)
E_AUTH_FORBIDDEN_SCOPE

Su key no tiene el permiso requerido (ver scopes)

403
E_PRODUCT_INVALID_BODY

Body o query malformado (campo, fecha o estado inválido)

422

Cambiar el estado de sincronización

Define qué hace Automeli con cada publicación a partir de ahora. El estado se envía como palabra, no como número.

PATCH/v2/products/sync-status
Probar en sandbox
scopeproducts:writeidempotent
statusSignificado
enabledSincronizado: se revisa en Amazon y se actualiza en Mercado Libre.
disabledNo se actualiza (excluido total).
RequestPATCH /products/sync-status
curl -X PATCH "https://api.automeli.com/api/v2/products/sync-status" \
     -H "X-API-Key: automeli_live_..." \
     -H "Content-Type: application/json" \
     -d '{
  "status": "disabled",
  "listing_ids": ["MCO1234567890", "MCO9876543210"]
}'
200Response

Cambio aplicado. updated = publicaciones del seller encontradas en la lista.

{
  "status": "disabled",
  "requested": 2,
  "updated": 2
}
Aislamiento por seller. Sólo afecta publicaciones de su propio seller (el de la API Key). Cualquier listing_id ajeno se ignora silenciosamente y no cuenta en updated. Con include_not_found: true la respuesta agrega matched y not_found.
Máximo 1000 listing_id por llamada. Si envía más, la API responde 422 antes de tocar la base; para volúmenes mayores, divida en lotes. Ante reintentos por red, use un Idempotency-Key.
Errores posibles de este endpoint (4)
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 o query malformado (campo, fecha o estado inválido)

422