Listar productos
https://api.afer.pro/api/v1/products
POST https://api.afer.pro/consultarProductos
El catálogo de artículos con referencia, familia, coste, precios por tarifa y stock.
Listado paginado del maestro de artículos. De aquí salen los articuloId que aceptan las líneas de todos los documentos de venta y los endpoints de disponibilidad.
Los precios llegan en un array precios, una entrada por tarifa. En Afer una tarifa no es una tabla: son las columnas de precio del artículo (pvp1, pvp2…) a las que apunta cada cliente con su tarifa. Solo se devuelven las que existen realmente en tu cuenta, así que el número de entradas varía de un tenant a otro — consúltalas con consultarTarifas.
Los importes de precio y coste van sin IVA; precio_con_iva es el precio final si la tarifa tiene columna con IVA configurada, y null si no.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Este endpoint requiere autenticación con API key: sin credenciales responde 401.
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
busquedastringopcional | Texto a buscar en descripción, referencia, SKU o código EAN. |
familiaIdstringopcional | Solo los artículos de esta familia. Es el familiaId de consultarFamilias. |
bajo_minimoboolopcional | Con true, solo los artículos con stock igual o inferior a su mínimo. |
paginaintopcional | Página a devolver. Por defecto 1. |
por_paginaintopcional | Resultados por página. Por defecto 100, máximo 500. |
Ejemplo de petición
curl -X GET 'https://api.afer.pro/api/v1/products?busqueda=cannondale&por_pagina=50' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET'
<?php
$ch = curl_init('https://api.afer.pro/api/v1/products?busqueda=cannondale&por_pagina=50');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/api/v1/products?busqueda=cannondale&por_pagina=50', {
method: 'GET',
headers: {
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
}
});
const resultado = await respuesta.json();
Respuesta
{
"errorCode": 200,
"errorMsg": "",
"data": {
"total_articulos": 1,
"pagina": 1,
"por_pagina": 50,
"num_paginas": 1,
"articulos": [
{
"articuloId": "aBc123XyZ…",
"referencia": "CDL-SYN-56",
"sku": "SYN56",
"codigo_ean": "8412345678901",
"descripcion": "CANNONDALE SYNAPSE CARBON",
"familia": {
"familiaId": "dEf456…",
"titulo": "Bicicletas"
},
"iva": 21,
"coste": 1450,
"precios": [
{
"tarifa": 1,
"precio": 2399,
"precio_con_iva": 2902.79
},
{
"tarifa": 2,
"precio": 2199,
"precio_con_iva": 2660.79
}
],
"stock": 2,
"stock_minimo": 4,
"bajo_minimo": true
}
]
}
}
- El
articuloIdse puede usar tal cual en las líneas de crearFactura, crearAlbaran y compañía. - Para el detalle de un artículo —incluidos los precios de alquiler por días— usa obtenerProducto.