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