KintsugiKintsugi

Update a product

PATCH/products/{product_id}

Update a product's editable fields. This is a partial update: only the fields you send with a non-null value change; any field you omit or send as null is left as-is. externalId must stay unique per organization; reusing another product's value returns 409. productCategory and productSubcategory must resolve to a supported tax code or the request returns 400. taxExempt is honored when the category is unchanged; on a recategorize the exemption is derived from the new category and the sent value is ignored, and an exempt category is always tax-exempt. source is not editable. Returns 404 if the product does not exist, is archived, or belongs to an organization your credential cannot access.

Authorization

Api-KeystringRequired

Your secret API key. Include it with every request.

Headers

Api-Versiondate

Release date, as YYYY-MM-DD. Defaults to 2026-07-21.

Organization-Idstring

Target organization id (Organization-Id selector).

Connection-Idstring

Target connection id; resolves to its organization.

Entity-Idstring

Platform entity id; resolves to a connection's organization.

Entity-Sourcestring

Optional source to disambiguate an Entity-Id.

Path parameters

product_idstringRequired

The unique identifier of the product.

Body

externalIdstring

New stable identifier for the product. Must stay unique per organization and source; a value already used by another product returns 409 Conflict. Omit it or send null to leave it unchanged; an empty string is rejected.

namestring

New human-readable product name. Omit it or send null to leave it unchanged; an empty string is rejected.

descriptionstring

New product description. Send an empty string to clear it. Omit it or send null to leave it unchanged.

productCategoryPublicProductCategoryEnum

New top-level tax category. Together with productSubcategory it resolves to a product tax code; an unrecognized pair returns 400. Omit it or send null to leave it unchanged.

Available options:DigitalMiscPhysicalServices
productSubcategorystring

New tax subcategory display label within the category (e.g. 'General Clothing'). Together with productCategory it resolves to a product tax code; an unrecognized pair returns 400. Omit it or send null to leave it unchanged; an empty string is rejected.

statusPublicProductCreateStatusEnum

New approval status of the product's tax classification. ARCHIVED is not accepted here: archive a product with DELETE /products/{id}. Omit it or send null to leave it unchanged.

Available options:APPROVEDPARTIALLY_APPROVEDPENDING
taxExemptboolean

Effective tax-exemption flag applied by tax calculation. Honored when the category is unchanged. On a recategorize the exemption is derived from the new category and this value is ignored; an exempt category is always tax-exempt. Omit it or send null to leave it unchanged.

Response

idstringRequired

Kintsugi's unique identifier for the product.

organizationIdstringRequired

Organization the product belongs to. Send it as Organization-Id to scope a request to this product.

organizationNamestring

Display name of the organization the product belongs to. null when the organization has no name set.

externalIdstringRequired

Your stable identifier for the product, as supplied on create.

skustring[]

SKUs associated with the product. An empty list when it has none.

codestringRequired

Derived product tax code display name.

namestringRequired

Human-readable product name.

descriptionstring

Product description; an empty string when the product has none.

statusPublicProductStatusEnumRequired

Approval status of the product's tax classification.

Available options:APPROVEDPARTIALLY_APPROVEDPENDINGARCHIVED
productCategorystringRequired

Derived display category for the product's tax code.

productSubcategorystringRequired

Derived display subcategory for the product's tax code.

taxExemptbooleanRequired

Effective tax-exemption flag applied by tax calculation.

sourceTaxExemptboolean

Raw tax-exempt signal reported by the source system (audit). null when the source system did not report a signal, which is distinct from an explicit false.

sourcestringRequired

Origin system of the product (e.g. API, SHOPIFY). Any origin outside the published values is reported as OTHER.

Available options:ACUMATICAAIRWALLEXAMAZONAPIAPPLE_APP_STOREBESTBUYBIGCOMMERCEBILL_COMBUNNYCAMPFIRECHARGEBEECHECKOUTCHAMPDEELDUALENTRYEBAYECWIDETSYFACEBOOKFAIREFRESHBOOKSGOOGLE_APP_STOREGOOGLE_EXPRESSGROUPONGUSTOHYPERLINEINSTAGRAMINTUIT_ENTERPRISE_SUITEKICKSTARTERKILL_BILLMACYSMAGENTOMAXIOMERCADO_LIBREMICROSOFT_DYNAMICS_365MODALYSTNETSUITENEWEGGNOCNOCNORDSTROMODOOOPENMETERORBORDWAYOTHERPAYPALPINTERESTPLENTYONEQUICKBOOKSRECURLYRILLETRIPPLINGSAGE-INTACCTSALESFORCESHOPIFYSHOPLINESHOPWARESQUARESPACESTRIPETARGETTIKTOKVERTEX_O_SERIESWALMARTWAYFAIRWISHWIXWOOCOMMERCEXEROZENSKARZOHOZUORA
connectionIdstring

Identifier of the connection that produced the product. null when the product was not produced by a connection (e.g. created manually).

storeNamestring

Display name of the connection (store) that produced the product. null when the product has no connection, or the connection has no store name set.

classificationFailedboolean

Whether automated tax classification failed for the product. null when classification has not been attempted.

200

Successful Response

400

The request was invalid.

401

Authentication failed or was missing.

403

The credential is not permitted for this request.

404

The requested resource was not found.

409

The request conflicts with existing state.

422

The request failed validation.

cURL
PATCH /products/{product_id}
-H "Api-Key: ***"
-H "Api-Version: 2026-07-21"
{
"externalId": "sku-1001",
"name": "Blue T-Shirt",
"description": "Annual software subscription",
"productCategory": "Physical",
"productSubcategory": "General Clothing",
"status": "APPROVED",
"taxExempt": false
}
Example request
https://api.trykintsugi.com/products/{product_id}
Response
{
"id": "prod_2mNpQr7Ls8f3k",
"organizationId": "orgn_2mNpQr7Ls8f3k",
"organizationName": "Acme Corp",
"externalId": "sku-1001",
"sku": [
"sku-1001"
],
"code": "Physical",
"name": "Blue T-Shirt",
"description": "Annual software subscription",
"status": "APPROVED",
"productCategory": "Physical",
"productSubcategory": "General Clothing",
"taxExempt": false,
"sourceTaxExempt": false,
"source": "API",
"connectionId": "conn_2mNpQr7Ls8f3k",
"storeName": "Acme Corp",
"classificationFailed": false
}
Update a product (2026-07-21) | Kintsugi API Reference