Vexar API

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 Auth

List 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 Auth

Create 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} Auth

Update a product.

Request body
{ "price": 5500 }
Response
{ "success": true, "product": { … } }
DELETE /api/v1/products/{productId} Auth

Delete a product.

Response
{ "success": true }
POST /api/v1/products/{productId}/image Auth

Upload a product image (multipart field image, max 5MB).

Response
{ "success": true, "image_url": "https://cdn…" }
DELETE /api/v1/products/{productId}/image Auth

Remove the product image.

Response
{ "success": true }
POST /api/v1/products/{productId}/file Auth

Upload 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 Auth

Remove the file.

Response
{ "success": true }
PUT /api/v1/sites/{id}/products/reorder Auth

Reorder products by id array.

Request body
{ "order": [8, 5, 12] }
Response
{ "success": true }