---
title: "Create or (when id is provided) update a product row (products:write)."
method: POST
path: "/v1/products"
---

# Create or (when id is provided) update a product row (products:write).

`POST /v1/products`

## Request

- Base URL: `https://www.kaicalls.com/api`
- URL: `https://www.kaicalls.com/api/v1/products`
- Auth: HTTP bearer

## Request body

- ProductUpsert: Omit id to create. Supply the existing product id to update selected fields; business_id, if supplied, must match that product. SKU is stored data, not an upsert key. Persist the returned product.id for later listing sync updates.
  - `id` string, uuid, required
  - `business_id` string, uuid
  - `name` string
  - `description` string
  - `category` string
  - `price` number
  - `sku` string
  - `attributes` object
  - `quantity` number

## Response `200`

Product updated

## Other responses

- `201`: Product created

---

[API](https://skmtc.dev/kaicalls/apis/kaicalls-public-api.md) · [All operations](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/revisions/e607fc6cf36e?raw)
