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,
      "is_active": true,
      "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,
    "is_active": false
  }'

Scope requerido: write:products

Establece is_active en false para mantener el producto oculto hasta que estés listo para publicarlo. Por defecto es true si se omite.

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
  }'

Scope requerido: write:products

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. Considera establecer is_active en false para ocultarlo del storefront.

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());
    }
  }
}

On this page