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

On this page