Skip to main content
POST
https://ecommerce.jelou.ai
/
api
/
v2
/
apps
/
{app_id}
/
batch
/
products
/
upsert_by_sku
curl -X POST "https://ecommerce.jelou.ai/api/v2/apps/{app_id}/batch/products/upsert_by_sku" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": [
      {
        "sku": "CAM-BLU",
        "name": "Camiseta Básica Azul",
        "description": "Camiseta de algodón 100% premium, corte regular",
        "price": 29.99,
        "has_tax": true,
        "status": true,
        "stock_type": "limited",
        "stock": 150,
        "product_url": "https://mi-tienda.com/camiseta-basica-azul",
        "discount_type": "percentage",
        "discount": 10,
        "branch": "SUC-CENTRO",
        "categories": ["Ropa", "Camisetas"],
        "images": [
          "https://mi-tienda.com/images/camiseta-azul-front.jpg",
          "https://mi-tienda.com/images/camiseta-azul-back.jpg"
        ],
        "variations": [
          {
            "sku": "CAM-BLU-S",
            "price": 29.99,
            "attributes": [
              { "name": "Talla", "value": "S" },
              { "name": "Color", "value": "Azul" }
            ]
          },
          {
            "sku": "CAM-BLU-M",
            "price": 29.99,
            "attributes": [
              { "name": "Talla", "value": "M" },
              { "name": "Color", "value": "Azul" }
            ]
          },
          {
            "sku": "CAM-BLU-L",
            "price": 31.99,
            "attributes": [
              { "name": "Talla", "value": "L" },
              { "name": "Color", "value": "Azul" }
            ],
            "images": [
              "https://mi-tienda.com/images/camiseta-azul-L.jpg"
            ]
          }
        ]
      },
      {
        "sku": "PAN-NEG-M",
        "name": "Pantalón Negro",
        "price": 49.99,
        "branch": "SUC-NORTE",
        "categories": ["Ropa", "Pantalones"]
      }
    ]
  }'
{
  "message": "Products are being processed"
}
Puedes crear o actualizar productos en lote según su SKU. Si un producto con el SKU especificado ya existe, se actualiza; si no, se crea. Los productos pueden asignarse a una sucursal y tener múltiples variaciones.
app_id
string
required
ID de tu tienda en Jelou Shop.
resources
object[]
required
Lista de productos a crear o actualizar (máx. 500 por solicitud).

Campos del producto

Cada objeto dentro de resources acepta los siguientes campos:
sku
string
required
Identificador único del producto (máx. 255 caracteres).
name
string
required
Nombre del producto (máx. 255 caracteres).
price
number
required
Precio del producto (mín. 0).
description
string
Descripción del producto.
has_tax
boolean
default:"true"
Indica si el precio incluye impuestos.
status
boolean
default:"true"
Estado del producto (activo/inactivo).
stock_type
string
default:"unlimited"
Tipo de inventario: limited o unlimited.
stock
number
Cantidad disponible. Aplica solo cuando stock_type es limited.
product_url
string
URL del producto en tu tienda (máx. 2048 caracteres).
discount_type
string
Tipo de descuento: value (monto fijo) o percentage.
discount
number
Valor del descuento (mín. 0).
categories
string[]
Lista de nombres de categorías. Se crean automáticamente si no existen.
images
string[]
Lista de URLs de imágenes públicas del producto.
branch
string
Código de la sucursal a la que se asigna el producto. La sucursal debe existir previamente.
La sucursal debe estar creada antes de asignarla a un producto. Usa el endpoint Crear sucursal para registrarla primero.
variations
object[]
Lista de variaciones del producto.

Ejemplo completo

Este ejemplo crea dos productos: una camiseta con tres variaciones de talla asignadas a una sucursal, y un pantalón simple asignado a otra sucursal.
curl -X POST "https://ecommerce.jelou.ai/api/v2/apps/{app_id}/batch/products/upsert_by_sku" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": [
      {
        "sku": "CAM-BLU",
        "name": "Camiseta Básica Azul",
        "description": "Camiseta de algodón 100% premium, corte regular",
        "price": 29.99,
        "has_tax": true,
        "status": true,
        "stock_type": "limited",
        "stock": 150,
        "product_url": "https://mi-tienda.com/camiseta-basica-azul",
        "discount_type": "percentage",
        "discount": 10,
        "branch": "SUC-CENTRO",
        "categories": ["Ropa", "Camisetas"],
        "images": [
          "https://mi-tienda.com/images/camiseta-azul-front.jpg",
          "https://mi-tienda.com/images/camiseta-azul-back.jpg"
        ],
        "variations": [
          {
            "sku": "CAM-BLU-S",
            "price": 29.99,
            "attributes": [
              { "name": "Talla", "value": "S" },
              { "name": "Color", "value": "Azul" }
            ]
          },
          {
            "sku": "CAM-BLU-M",
            "price": 29.99,
            "attributes": [
              { "name": "Talla", "value": "M" },
              { "name": "Color", "value": "Azul" }
            ]
          },
          {
            "sku": "CAM-BLU-L",
            "price": 31.99,
            "attributes": [
              { "name": "Talla", "value": "L" },
              { "name": "Color", "value": "Azul" }
            ],
            "images": [
              "https://mi-tienda.com/images/camiseta-azul-L.jpg"
            ]
          }
        ]
      },
      {
        "sku": "PAN-NEG-M",
        "name": "Pantalón Negro",
        "price": 49.99,
        "branch": "SUC-NORTE",
        "categories": ["Ropa", "Pantalones"]
      }
    ]
  }'
{
  "message": "Products are being processed"
}
Reemplaza {app_id} con el ID de tu tienda y <API_KEY> con el token proporcionado por Jelou.

Comportamiento

El endpoint retorna 202 Accepted inmediatamente. Los productos se procesan en segundo plano.
Si el código de sucursal no coincide con ninguna sucursal de la tienda, el producto se crea sin sucursal asignada. No produce error.
Si una categoría no existe, se crea automáticamente dentro de la tienda y la sucursal correspondiente.
Las imágenes se descargan y procesan en segundo plano después de la creación del producto.
Las variaciones se identifican por su SKU. Si ya existe una variación con ese SKU, se actualiza en lugar de crear una nueva.

Límites

  • Máximo 500 productos por solicitud.
  • Todos los productos se validan antes de procesarse.