Cómo funciona
POST /api/v1/reports/query ejecuta una consulta analítica agrupada. Enviá JSON con:
source: qué datos consultar (sales,purchases,payments,applied_collections,inventory).dimensions: cómo agrupar resultados (producto, fecha, proveedor, etc.). Máximo 4.measures: qué calcular en cada grupo (total vendido, unidades, stock, etc.). Al menos 1.period: rango de fechas (obligatorio parasales,purchases,paymentsyapplied_collections, y condicional parainventory).reportingCurrency: moneda de presentación (ARSoUSD). Si la omitís, usaARS.dimension_filters: filtros opcionales que reducen el dataset antes de agrupar.include_totals: cuando estrue, la respuesta incluye totales de todas las filas entotals.
product_status, customer_status, supplier_status o warehouse_status con valores active o archived.
Con response_mode: "assistant", podés ordenar cualquier fuente con sort_by
y sort_direction antes de aplicar limit. Usá una dimensión o métrica
seleccionada; las dimensiones ordinales usan su valor original (fechas, semanas,
días de la semana, cuotas o rangos de última compra). Las demás usan su nombre
visible. Los valores vacíos van al final. El sentido predeterminado con sort_by es desc, o asc
para marketplace_listings. Omití ambos campos para conservar el orden
predeterminado. La respuesta registra el orden aplicado en
metadata.resolved_request. Si una métrica no es válida, el error enumera las
claves válidas para esa fuente.
Cuando agrupás por product, su entrada en ids identifica un grupo de
variantes. No es el ID de producto que usan las herramientas de inventario.
Consultá get_product y seleccioná el ID de producto en list_inventory
antes de registrar un movimiento de stock.
Forma de la respuesta
rows tiene:
Las métricas
currency son centavos enteros en la moneda indicada por
metadata.reporting_currency. Dividí por 100 para obtener pesos o dólares.USD. Las operaciones en moneda
extranjera usan su tipo de cambio guardado. Los importes funcionales en ARS que
se presentan en USD usan la cotización BCRA de la fecha de la operación o la
última fecha anterior disponible.
El filtro currency siempre se refiere a la moneda original del comprobante y
es independiente de reportingCurrency. Por ejemplo, podés consultar solo
ventas originales en USD y presentar el resultado en ARS:
Fuente: sales
Consulta las ventas de la organización.
period: obligatorio. Filtra por fecha de venta (commercial) o fecha contable (fiscal), según date_basis.
date_basis: commercial (default) o fiscal.
Dimensiones disponibles (sales)
Para agrupar o filtrar por la cartera actual de un vendedor, usá
assigned_salesperson. Incluye las ventas de sus clientes aunque las haya
registrado otra persona. Si reasignás un cliente, sus ventas pasan al nuevo
vendedor asignado, también en períodos anteriores y reportes guardados. Para
filtrar clientes sin vendedor asignado, usá el valor none.
Las filas, los totales y las exportaciones respetan la visibilidad del miembro:
assigned_customers incluye sus clientes asignados y own solo las ventas que
registró. salesperson conserva el vendedor registrado en cada venta.
Métricas disponibles (sales)
Dimensiones filtrables (sales)
customer, customer_status, customer_tax_category, province, city, product, product_status, category, product_type, salesperson, cashier, point_of_sale, point_of_sale_status, warehouse, warehouse_status, register, register_status, integration_source, channel_listing, channel_listing_type, channel_logistics, voucher_type, currency, payment_status, cae_status, invoice_status, formatted_invoice_number, payment_method, payment_method_status, tax_rate.
Fuente: purchases
Consulta las compras de la organización.
period: obligatorio. Filtra por fecha de factura.
Dimensiones disponibles (purchases)
Métricas disponibles (purchases)
Dimensiones filtrables (purchases)
supplier, supplier_status, supplier_tax_category, supplier_province, supplier_city, product, product_status, category, product_type, warehouse, warehouse_status, voucher_type, currency, tax_rate.
Fuente: payments
Consulta cobranzas de clientes y pagos a proveedores.
period: obligatorio. Filtra por fecha de pago/cobranza.
Dimensiones disponibles (payments)
Métricas disponibles (payments)
Dimensiones filtrables (payments)
payment_contact, payment_contact_status, payment_contact_name, assigned_salesperson, payment_contact_tax_category, payment_contact_province, payment_contact_city, point_of_sale, point_of_sale_status, register, register_status, pos_session, safe, safe_status, payment_type, payment_record_status, currency, settlement_currency, formatted_payment_number, payment_method, payment_method_status, payment_method_type.
Fuente: applied_collections
Consulta cobranzas aplicadas a facturas de venta. Cada fila es un importe de un recibo aplicado a una factura. Incluye aplicaciones de anticipos; excluye notas de crédito y aplicaciones de saldo a favor.
period: obligatorio. Filtra por el día en que se aplicó la cobranza (hora de Argentina), no por la fecha del recibo ni de la factura.
Dimensiones disponibles (applied_collections)
Métricas disponibles (applied_collections)
Dimensiones filtrables (applied_collections)
customer, customer_status, assigned_salesperson, formatted_payment_number, formatted_invoice_number, voucher_type.
Fuente: inventory
Consulta el estado de stock. Tiene dos modos según las métricas seleccionadas:
Métricas snapshot (sin period)
Devuelven el estado actual del stock. No aceptan period ni date_basis, salvo que la solicitud agrupe o filtre por abc_grade: esa dimensión clasifica por ventas del período y exige period.
Métricas derivadas de ventas (requieren period)
Se calculan a partir de ventas del período. Requieren period y aceptan date_basis.
inventory_units_sold_per_day sigue la definición de inventory_units_sold_per_day en Shopify: divide por todos los días del período, aunque el artículo haya tenido pocos días con stock. Si el período termina después de hoy, cuenta los días hasta hoy (fecha de Argentina). En filas agrupadas por fecha, semana, mes u otra dimensión de tiempo, divide por los días de cada tramo dentro del período. inventory_units_sold siempre cuenta todas las ventas del período.
Cuando se usan métricas derivadas, solo son compatibles las dimensiones
product, variant, category, product_type, warehouse y abc_grade.Dimensiones disponibles (inventory)
Dimensiones filtrables (inventory)
product, product_status, category, product_type, warehouse, warehouse_status, currency, abc_grade.
Clasificación ABC (abc_grade)
Ordena las variantes por ventas netas del período (sin IVA, las notas de crédito restan). Una variante es A mientras las anteriores acumulan menos del 80% de las ventas netas, B por debajo del 95% y C en adelante. Las variantes sin ventas o con ventas netas negativas son C.
La clasificación es de toda la organización: los filtros de la solicitud (proveedor, categoría, depósito) y los permisos de quien consulta no cambian el grado de una variante. Requiere
period y acepta date_basis. No está disponible en la fuente sales.dimension_filters
Filtra datos antes de agrupar. Cada clave es una dimensión filtrable para la fuente. El valor es un array de IDs a incluir. La lógica es OR dentro de un filtro y AND entre filtros.
Ejemplos
Ventas por producto en Q1 2026
Ventas por mes y categoría (fiscal)
Compras por proveedor en marzo de 2026
Cobranzas y pagos por método en marzo de 2026
Stock disponible por producto y depósito
Stock parado (variantes clase C)
Días de inventario restante por categoría
Scope requerido
reports:read
Fuente: marketplace_listings
Consultá publicaciones activas de Mercado Libre sin necesitar una venta. Esta fuente usa una instantánea en ARS, sin period, comparación ni conversión a USD. Cada fila es una publicación. Todos los importes son centavos; los datos faltantes conservan null.
Incluí marketplace_item_id (el MLA) o marketplace_listing (el título) entre las dimensiones. Sin response_mode, la respuesta devuelve todas las publicaciones activas en data.rows. Para ordenar y paginar, usá response_mode: "assistant":
data.report.rows y data.report.metadata. Pasá data.report.metadata.next_cursor como cursor en la consulta siguiente. Los filtros y el orden se aplican sobre todas las publicaciones antes de paginar. Una dimensión se ordena por su nombre visible. Los valores null van al final en ambas direcciones. Una página no incluye un total de todas las publicaciones de la cuenta.
Los cargos de Mercado Libre y el resultado solo se informan con una cotización vigente. Si la cotización está pendiente, tiene más de 8 días, fue invalidada, la promoción terminó o la cuenta necesita reconexión, esas métricas son
null. listing_price se conserva.
El desglose usa la misma cotización de Mercado Libre, sin consultas adicionales. La comisión y la financiación se calculan sobre el precio con IVA. Si falta algún dato o la suma de los tres cargos difiere del total por más de un centavo, las tres métricas del desglose son null. Cero confirmado sigue siendo cero. El resultado descuenta listing_fee una sola vez, aunque consultes también el desglose.
recent_units resta las notas de crédito de los últimos 30 días. Si una venta tenía varias publicaciones del mismo producto, la devolución se reparte en proporción a sus unidades, así que puede tener decimales.
Para filtrar una publicación, usá marketplace_item_id. Los filtros sobre marketplace_listing buscan en el título. marketplace_listing_type y marketplace_logistic_type filtran por código (gold_special, gold_pro, free; fulfillment, cross_docking, xd_drop_off, drop_off, self_service, turbo). Las filas conservan los códigos en ids y muestran nombres en labels, como Clásica, Premium, Colecta y Full. Los valores sin nombre conocido se indican como sin identificar. La categoría de Mercado Libre todavía no está disponible como dimensión.
marketplace_promotion_funding indica quién financia la promoción vigente y filtra por código: ml_cofunded (Con aporte de ML), seller_funded (Sin aporte de ML), no_promotion (Sin promoción) y unverified (Sin verificar). Es unverified si la cotización no está vigente o el financiamiento de la promoción no está verificado. Un filtro por un código verificado nunca incluye publicaciones sin verificar. No requiere permiso de costos.
metadata.snapshot informa la hora de lectura y la ventana de unidades.
El acceso a esta fuente requiere permiso de reportes de ventas. Los datos financieros, incluidos filtros y orden por costo o margen, requieren permiso vigente para ver costos. La consulta requiere visibilidad de toda la organización. MCP run_report usa la misma fuente y el mismo cursor.
El resultado excluye publicidad, almacenamiento e ingreso a Full, devoluciones e impuestos retenidos. Leé cómo usar la estimación antes de tomar una decisión de precio.
