Products
Manage the catalog of products and services the chatbot can sell or book. Products support images and downloadable files. Catalog is plan-gated (Pro+). Authentication required. Prices are integers in the smallest currency unit.
GET
/api/v1/sites/{id}/products AuthList products/services.
Response
{ "success": true, "products": [ { "id": 8, "name": "Haircut", "price": 5000, "currency": "usd", "is_bookable": true } ], "grid_mode": false }POST
/api/v1/sites/{id}/products AuthCreate a product or service. product_type physical/digital/service; for services set service_type and duration_minutes.
Request body
{
"name": "Haircut",
"description": "…",
"price": 5000,
"currency": "usd",
"price_type": "fixed",
"product_type": "service",
"duration_minutes": 60,
"is_active": true
}Response
{ "success": true, "product": { "id": 8 } }PUT
/api/v1/products/{productId} AuthUpdate a product.
Request body
{ "price": 5500 }Response
{ "success": true, "product": { … } }DELETE
/api/v1/products/{productId} AuthDelete a product.
Response
{ "success": true }POST
/api/v1/products/{productId}/image AuthUpload a product image (multipart field image, max 5MB).
Response
{ "success": true, "image_url": "https://cdn…" }DELETE
/api/v1/products/{productId}/image AuthRemove the product image.
Response
{ "success": true }POST
/api/v1/products/{productId}/file AuthUpload a downloadable file for a digital product (multipart field file, max 50MB).
Response
{ "success": true, "file_url": "https://cdn…" }DELETE
/api/v1/products/{productId}/file AuthRemove the file.
Response
{ "success": true }PUT
/api/v1/sites/{id}/products/reorder AuthReorder products by id array.
Request body
{ "order": [8, 5, 12] }Response
{ "success": true }