sk_...) with catalog scope.
Product Data Format
Each product is described by theProductInput schema:
Unique product identifier (Stock Keeping Unit). Used as the primary key — uploading the same SKU again updates the existing product.
Product name. This is the most important field for search quality.
Category hierarchy, e.g.
"Dairy > Milk > UHT Milk". Improves search context.Brand name. Customers frequently search by brand.
Product description. Included in the embedding for semantic search.
Ingredients list. Enables the AI to answer “what’s in this product?” questions.
Country of origin.
Unit of measure:
"pcs", "kg", "l", etc.Minimum increment for quantity changes (e.g.,
0.1 for items sold by weight).Minimum order quantity.
Product weight in grams.
Product volume in milliliters.
URL to the product image. Displayed in product cards within the chat.
Arbitrary key-value metadata stored as JSON.
Product barcode (EAN/UPC).
Set to
false to soft-delete a product from search results.Content Fields
The following fields are combined into an enriched text and used for embedding generation:name, description, ingredients, brand, category_path, country. Changing any of these triggers re-embedding of the product.
Bulk Upload
Upload products usingPUT /api/v1/catalog/products. This endpoint performs an upsert — new products are created, existing products (matched by sku) are updated.
Upload via API
202 Accepted):Product metadata is saved to the database immediately. Embedding generation runs in the background. Products are searchable once their embeddings are complete.
Job Status Fields
Unique job identifier.
Current status:
pending, embedding, complete, or failed.Total number of products in the upload.
Number of products that have been embedded so far. Use this with
total to show progress.Number of new products created.
Number of existing products updated (content fields changed).
Number of products that were identical to the existing version (no re-embedding needed).
List of error messages for individual products that failed.
Partial Updates (PATCH)
Update individual product fields without re-uploading the entire catalog:Only content fields (
name, description, ingredients, brand, category_path, country) trigger re-embedding. Changing non-content fields like image_url, weight, or unit updates metadata instantly without re-embedding.Soft Delete
Deactivate a product (removes it from search results but keeps the data):204 No Content on success. To reactivate, PATCH with "is_active": true.
Force Reindex
Trigger a full re-embedding of all active products. Use this after changing your embedding model or if search quality seems degraded:List Products
Browse your uploaded catalog with pagination and filtering:| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
limit | integer | Items per page (1-200, default: 50) |
category | string | Filter by category path (partial match) |
brand | string | Filter by brand (partial match) |
search | string | Text search in name and brand |
is_active | boolean | Filter by active status |
List Jobs
View recent catalog upload jobs:Tips for Large Catalogs
Batch size recommendations
Batch size recommendations
The API accepts any number of products in a single request, but for catalogs over 5,000 products we recommend splitting into batches of 1,000-2,000. This gives you more granular progress tracking and reduces the risk of timeouts.
Smart change detection
Smart change detection
VIZOCHOK computes an MD5 hash of each product’s content fields and compares it with the existing record. Products with identical content are skipped entirely — no re-embedding occurs. This makes repeated full catalog syncs efficient.
Embedding batching
Embedding batching
Embeddings are generated in batches of 50 products. For a 10,000-product catalog, this means 200 embedding API calls. The process runs in the background and does not block your API request.
Automated sync patterns
Automated sync patterns
Set up a daily cron job or webhook from your PIM/ERP to push the full catalog:Thanks to smart change detection, only modified products are re-embedded.