---
title: "Update product"
method: PATCH
path: "/products/{id}"
tags: ["Products"]
---

# Update product

`PATCH /products/{id}`

## Request

- Base URL: `https://app.buildworkpro.com/api/v1`
- URL: `https://app.buildworkpro.com/api/v1/products/{id}`
- Auth: HTTP bearer

Updates only the fields sent. A kit's costPrice and sellPrice are calculated from its components: values sent for a kit are ignored, setting isKit to true recalculates them, and the response carries the calculated prices.

## Path parameters

- `id` integer, required

## Headers

- `Idempotency-Key` string, uuid

## Request body

- object
  - `sku` string, nullable
  - `name` string
  - `description` string, nullable
  - `salesDescription` string, nullable
  - `type` string
  - `categoryId` integer, nullable
  - `costPrice` string, nullable
  - `sellPrice` string, nullable
  - `unit` string, nullable
  - `manufacturerId` integer, nullable
  - `manufacturerCode` string, nullable
  - `isKit` boolean
  - `isActive` boolean
  - `buyTaxPercent` string, nullable
  - `sellTaxPercent` string, nullable

## Response `200`

Updated

- object
  - `data` Product, required
    - `id` integer, required
    - `sku` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `type` string, required
    - `categoryId` integer, nullable, required
    - `costPrice` string, nullable, required: Unit cost in dollars. For a kit (isKit: true) this is calculated from its components and read-only: a value sent on create or update is ignored.
    - `sellPrice` string, nullable, required: Unit sell price in dollars. For a kit (isKit: true) this is calculated from its components and read-only: a value sent on create or update is ignored.
    - `unit` string, nullable, required
    - `manufacturerId` integer, nullable, required
    - `manufacturerCode` string, nullable, required
    - `isKit` boolean, required
    - `isActive` boolean, required
    - `createdAt` union, required
      - string, date-time
      - string
    - `updatedAt` union, required
      - string, date-time
      - string
  - `meta` ResponseMeta, required
    - `request_id` string: Server-generated request identifier
    - `pagination` PaginationMeta
      - `cursor` string, nullable, required: Opaque cursor for the next page; null when no more results
      - `has_more` boolean, required: Whether more pages are available after this one
      - `count` integer, required: Items in this page

## Other responses

- `404`: Error
- `409`: Error
- `422`: Error

---

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