Real-time Catalogue Ingestion

Real-time catalogue ingestion allows you to send product updates and new products directly to Youzu.ai using our API. This method is ideal for keeping your catalogue synchronized in real-time.

This guide assumes you already have a catalogue ID. If you need to create a catalogue first, see Creating a Catalogue.

Overview

The ingestion API accepts product data in JSON format and processes it asynchronously. You can:

  • Add new products to your catalogue
  • Update existing product information
  • Send products individually or in batches
  • Track ingestion status

Authentication

All ingestion endpoints require authentication using your API key:

x-client-secret: YOUR_CLIENT_SECRET

JSON Ingestion

Send product data directly as a JSON array:

Endpoint

POST https://platform.youzu.ai/api/v1/admin/catalogue/{catalogueId}/ingest
{
  "products": [
    {
      "name": {
        "en": "Ergonomic Office Chair"
      },
      "description": {
        "en": "Premium office chair with lumbar support"
      },
      "sku": "CHAIR-001",
      "external_ref": "ACME:ECOMMERCE:V1:PRODUCT:12345",
      "url": "https://example.com/products/chair",
      "price": {
        "USD": 299.99
      },
      "in_stock": true,
      "is_published": true,
      "images": [
        "https://example.com/images/chair_front.jpg",
        "https://example.com/images/chair_side.jpg"
      ]
    }
  ]
}
{
  "success": true,
  "data": {
    "ingestionId": "ing_12345",
    "status": "PROCESSING",
    "productsReceived": 1
  }
}
const ingestProducts = async (catalogueId, products) => {
  const response = await fetch(`https://platform.youzu.ai/api/v1/admin/catalogue/${catalogueId}/ingest`, {
    method: 'POST',
    headers: {
      'x-client-secret': 'YOUR_CLIENT_SECRET',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      products: products
    })
  });

  if (response.ok) {
    const result = await response.json();
    console.log('Ingestion started:', result.data.ingestionId);
    return result;
  } else {
    console.error('Ingestion failed:', await response.text());
  }
};

// Example usage
const products = [
  {
    name: { en: 'Ergonomic Office Chair' },
    description: { en: 'Premium office chair with lumbar support' },
    sku: 'CHAIR-001',
    external_ref: 'ACME:ECOMMERCE:V1:PRODUCT:12345',
    url: 'https://example.com/products/chair',
    price: { USD: 299.99 },
    in_stock: true,
    is_published: true,
    images: [
      'https://example.com/images/chair_front.jpg',
      'https://example.com/images/chair_side.jpg'
    ]
  }
];

ingestProducts('cat_abc123', products);
import requests

def ingest_products(catalogue_id, products):
    url = f'https://platform.youzu.ai/api/v1/admin/catalogue/{catalogue_id}/ingest'
    headers = {
        'x-client-secret': 'YOUR_CLIENT_SECRET',
        'Content-Type': 'application/json'
    }
    data = {
        'products': products
    }
    
    response = requests.post(url, headers=headers, json=data)
    
    if response.status_code == 200:
        result = response.json()
        print(f"Ingestion started: {result['data']['ingestionId']}")
        return result
    else:
        print(f"Ingestion failed: {response.status_code} - {response.text}")

# Example usage
products = [
    {
        'name': {'en': 'Ergonomic Office Chair'},
        'description': {'en': 'Premium office chair with lumbar support'},
        'sku': 'CHAIR-001',
        'external_ref': 'ACME:ECOMMERCE:V1:PRODUCT:12345',
        'url': 'https://example.com/products/chair',
        'price': {'USD': 299.99},
        'in_stock': True,
        'is_published': True,
        'images': [
            'https://example.com/images/chair_front.jpg',
            'https://example.com/images/chair_side.jpg'
        ]
    }
]

ingest_products('cat_abc123', products)
curl -X POST https://platform.youzu.ai/api/v1/admin/catalogue/cat_abc123/ingest \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      {
        "name": {"en": "Ergonomic Office Chair"},
        "description": {"en": "Premium office chair with lumbar support"},
        "sku": "CHAIR-001",
        "external_ref": "ACME:ECOMMERCE:V1:PRODUCT:12345",
        "url": "https://example.com/products/chair",
        "price": {"USD": 299.99},
        "in_stock": true,
        "is_published": true,
        "images": [
          "https://example.com/images/chair_front.jpg",
          "https://example.com/images/chair_side.jpg"
        ]
      }
    ]
  }'