Overview
Create or update products in a product block WITHOUT deleting existing ones. This endpoint is additive - it only creates new products and updates existing ones based onexternal_id
, leaving other products unchanged.
Perfect for incrementally adding products to your catalog without affecting the rest.
Use Cases
- Add New Products: Add products as they become available
- Update Specific Products: Update only certain products without touching others
- Incremental Sync: Sync new/changed products without full catalog refresh
- Safe Updates: Modify products without risking deletion of others
Authentication
Path Parameters
Parameter | Type | Required | Description |
---|---|---|---|
promptBlockId | string | Yes | Product block ID to add products to |
Request Body
Array of product objects (1-2000 products):Field | Type | Required | Description |
---|---|---|---|
name | string | Yes | Product name |
description | string | Yes | Natural language description for AI (max 8192 chars) |
price | number | Yes | Product price (must be positive) |
currency | string | Yes | Currency code (USD, EUR, CLP, etc.) |
type | string | Yes | Product type (PRODUCT or SERVICE) |
external_id | string | Yes | Your unique identifier for this product |
file_url | string | No | URL to product image or file |
metadata | array | Yes | Array of key-value pairs for additional data |
Description Best Practice: Use natural language that helps AI understand
the product. Avoid URLs, prices (already in price field), or structured data.
Focus on features, benefits, and use cases.
Example Request
Example Response
Product Types
Type | Use For |
---|---|
PRODUCT | Physical or digital products |
SERVICE | Services, consultations, subscriptions |
Currency Codes
Supported currencies: USD, EUR, GBP, CLP, MXN, COP, ARS, PEN, BRL, and more.Create vs Upsert
Feature | Create (This Endpoint) | Upsert |
---|---|---|
New Products | ✅ Creates | ✅ Creates |
Existing Products | ✅ Updates (by external_id) | ✅ Updates |
Other Products | ✅ Keeps unchanged | ❌ Deletes if not in request |
Use When | Adding/updating specific items | Full catalog sync |
Error Responses
Status Code | Description |
---|---|
400 | Bad Request - Invalid product data |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Insufficient permissions |
404 | Not Found - Product block not found |
500 | Internal Server Error |
Related Endpoints
- GET /api/public/product/product-blocks - List available blocks
- POST /api/public/product/upsert/ - Full catalog sync
- POST /api/public/product/delete/ - Delete products
Headers
API key needed to authorize the request
Path Parameters
The prompt block ID to create the products
Body
application/json · object[]
The payload to send with the products
Minimum length:
1
In the description you only need to add words that help the AI do a semantic search, avoide placing here prices, links or other type of data that is not natural language
Required string length:
1 - 8192
Available options:
shopify
, vambe
, woocommerce
, axis
Available options:
CLP
, ARS
, COP
, MXN
, EUR
, USD
, UF
, PEN
, BRL
, HNL
Required range:
x > 0
Response
Products created successfully.