Trabajando con Productos
Aprende a crear, listar, actualizar y gestionar productos a través de la API.
Descripción General
Los productos son el núcleo de cualquier tienda Whatalo. La API de Products te permite gestionar todo tu catálogo programáticamente — desde crear artículos individuales hasta actualizaciones masivas.
Listar Productos
Obtén todos los productos de tu tienda con filtrado y paginación opcionales.
curl -X GET https://api.whatalo.com/v1/products \
-H "X-API-Key: wk_live_your_key_here"Respuesta:
{
"data": [
{
"id": "prod_abc123",
"name": "Premium T-Shirt",
"slug": "premium-t-shirt",
"description": "100% cotton premium quality",
"price": 2999,
"compare_price": 3999,
"product_status": "active",
"archived_at": null,
"stock_quantity": 150,
"created_at": "2026-01-15T10:30:00.000Z"
}
],
"pagination": { "page": 1, "per_page": 25, "total": 45, "total_pages": 2 }
}Scope requerido: read:products
Crear un Producto
curl -X POST https://api.whatalo.com/v1/products \
-H "X-API-Key: wk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "New Product",
"description": "A great product",
"price": 1999,
"product_status": "draft"
}'Scope requerido: write:products
Usa product_status para crear productos como draft, active o archived. Las respuestas usan los mismos estados de ciclo de vida e incluyen archived_at cuando un producto está archivado.
Actualizar un Producto
Actualiza campos específicos sin afectar los demás:
curl -X PATCH https://api.whatalo.com/v1/products/prod_abc123 \
-H "X-API-Key: wk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"price": 2499,
"stock_quantity": 200,
"product_status": "active"
}'Scope requerido: write:products
Para archivar un producto, actualiza su estado de ciclo de vida:
curl -X PATCH https://api.whatalo.com/v1/products/prod_abc123 \
-H "X-API-Key: wk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"product_status": "archived"
}'Eliminar un Producto
curl -X DELETE https://api.whatalo.com/v1/products/prod_abc123 \
-H "X-API-Key: wk_live_your_key_here"Scope requerido: write:products
Eliminar un producto es permanente y no se puede deshacer.
Obtener Conteo de Productos
Verifica rápidamente cuántos productos existen sin obtener todos los datos:
curl -X GET https://api.whatalo.com/v1/products/count \
-H "X-API-Key: wk_live_your_key_here"Patrones Comunes
Actualización Masiva de Precios
Para actualizar precios de múltiples productos, itera por tu catálogo:
const res = await fetch('https://api.whatalo.com/v1/products?per_page=100', {
headers: { 'X-API-Key': API_KEY }
});
const { data: products } = await res.json();
for (const product of products) {
const updateRes = await fetch(`https://api.whatalo.com/v1/products/${product.id}`, {
method: 'PATCH',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
price: Math.round(product.price * 1.1) // 10% increase
})
});
if (!updateRes.ok) {
console.error(`Failed to update ${product.id}:`, await updateRes.json());
}
}Para operaciones masivas, ten en cuenta el límite de tasa (1,000 peticiones/minuto). Agrega una demora entre peticiones si actualizas catálogos grandes.
Sincronizar Inventario
Mantén tu inventario sincronizado con un sistema externo:
async function syncInventory(externalProducts) {
for (const ext of externalProducts) {
const res = await fetch(`https://api.whatalo.com/v1/products/${ext.whataloId}`, {
method: 'PATCH',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
stock_quantity: ext.stock
})
});
if (!res.ok) {
console.error(`Failed to sync ${ext.whataloId}:`, await res.json());
}
}
}