DevelopersAPI reference

Customer products API

REST endpoints for customer products in SKUFlow: 7 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
List customer productsGET /organizations/{organizationId}/customer-productsread
Add a product to a customer's productsPOST /organizations/{organizationId}/customer-productswrite
A customer productGET /organizations/{organizationId}/customer-products/{customerProductId}read
Rename, note or archive a customer productPATCH /organizations/{organizationId}/customer-products/{customerProductId}write
Delete a customer productDELETE /organizations/{organizationId}/customer-products/{customerProductId}sensitive
Change a customer product's pricesPOST /organizations/{organizationId}/customer-products/{customerProductId}/pricessensitive
Change many customer products' pricesPOST /organizations/{organizationId}/customer-products/pricessensitive

List customer products

GET /organizations/{organizationId}/customer-products

A customer's decorated products (or the business's, filtered by product or design) with their customer price, store price, size upcharges, picture and the stores selling each (with where each store's price comes from). Archived ones only with includeArchived. Read-only; call before quoting or making a store for a customer.

Permissionproducts.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolcustomerProducts_list (toolset stores)

Parameters

NameInTypeRequiredDescription
customerIdquerystringNoOnly this customer's products (GET /customers).
productIdquerystringNo
designIdquerystringNo
includeArchivedqueryboolean or enumNo
queryquerystringNoSearch names, styles and designs. Up to 200 characters.
limitqueryintegerNoPage size, 1–200. Default 50.
offsetqueryintegerNoRows to skip; the answer's total counts every match. Default 0.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
totalinteger
itemsarray of object
items[].idstring
items[].customerIdstring
items[].customerobject
items[].customer.idstring
items[].customer.namestring
items[].productIdstring
items[].designIdstring or null
items[].namestring or null
items[].displayNamestringThe name, else the product and design names.
items[].customerPriceobject or nullThe customer price's rule; null = the normal pricing.
items[].customerPrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
items[].customerPrice.centsinteger or null
items[].customerPrice.markupPercentnumber or null
items[].customerPrice.roundTo99boolean
items[].customerPrice.decorationCentsinteger
items[].storePriceobject or nullThe store price's rule; null = each store's own pricing.
items[].storePrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
items[].storePrice.centsinteger or null
items[].storePrice.markupPercentnumber or null
items[].storePrice.roundTo99boolean
items[].storePrice.decorationCentsinteger
items[].customerPriceCentsinteger or nullThe lowest customer price now.
items[].storePriceCentsinteger or nullThe lowest store price now.
items[].sizeUpchargeCentsobject
items[].sizePricesarray of objectEach size's customer and store price now and (with costing.read) the cost they are based on.
items[].sizePrices[].sizestring or null
items[].sizePrices[].customerPriceCentsinteger or nullInteger cents.
items[].sizePrices[].storePriceCentsinteger or nullInteger cents.
items[].notesstring or null
items[].archivedboolean
items[].imagestring or nullThe design's first mockup, else the product's picture (signed, short-lived).
items[].productobject
items[].product.idstring
items[].product.namestring
items[].product.sizesarray of string
items[].designobject or null
items[].design.idstring
items[].design.namestring
items[].catalogPriceCentsinteger or nullThe product's normal lowest price before decoration, for comparison.
items[].storesarray of objectThe stores selling it and where their price comes from.
items[].stores[].storeIdstring
items[].stores[].storeNamestring
items[].stores[].storeStatusenumOne of DRAFT, OPEN, CLOSED.
items[].stores[].storeProductIdstring
items[].stores[].activeboolean
items[].stores[].priceSourceenumCUSTOMER_PRODUCT: the store item follows this store price; OVERRIDE: it has its own pricing; STORE: it uses the store's pricing (this product has no store price). One of CUSTOMER_PRODUCT, OVERRIDE, STORE.
items[].stores[].priceFromCentsinteger or nullThe lowest price shoppers see in that store.
items[].stores[].priceToCentsinteger or nullInteger cents.

Add a product to a customer's products

POST /organizations/{organizationId}/customer-products

Links a catalog product (GET /products) and optionally its design (GET /designs?productId=&customerId=: the business's own or this customer's) to a customer, with optional prices. One per customer, product and design (409 when it exists: change that one). Nothing is sent to anyone; stores pick it up when it is added to them (POST /stores/{storeId}/products with customerProductIds).

Permissionproducts.manage (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolcustomerProducts_create (toolset stores)

Request body

FieldTypeRequiredDescription
customerIdstringYesThe customer (GET /customers).
productIdstringYesThe catalog product (GET /products).
designIdstring or nullNoIts design (GET /designs?productId=); null = the plain product.
namestring or nullNoShown instead of the product and design names. Up to 200 characters.
notesstring or nullNoUp to 5000 characters.
customerPriceobject or nullNoWhat the customer pays per piece when they order directly: new quote lines and hand-typed order lines for this product and design default to it (plus the size's upcharge; a markup is read when the line is made). Null = the normal pricing (decoration matrix).
customerPrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
customerPrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
customerPrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
customerPrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
storePriceobject or nullNoWhat shoppers pay per piece in the stores the business runs for this customer: every linked store item follows it (plus the size's upcharge, worked out at each view and checkout) unless that item has its own pricing. Null = each store's own pricing.
storePrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
storePrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
storePrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
storePrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
customerPriceCentsinteger or nullNoShorthand for a FIXED customer price (ignored when customerPrice is given). 0–10000000.
storePriceCentsinteger or nullNoShorthand for a FIXED store price (ignored when storePrice is given). 0–10000000.
sizeUpchargeCentsobjectNoExtra per size on top of both prices, in cents, e.g. { "2XL": 200, "3XL": 300 }; sizes not listed add nothing.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customerId":"customer_id","productId":"product_id"}'

Response

201: the answer's fields
FieldTypeDescription
idstring
customerIdstring
customerobject
customer.idstring
customer.namestring
productIdstring
designIdstring or null
namestring or null
displayNamestringThe name, else the product and design names.
customerPriceobject or nullThe customer price's rule; null = the normal pricing.
customerPrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or null
customerPrice.markupPercentnumber or null
customerPrice.roundTo99boolean
customerPrice.decorationCentsinteger
storePriceobject or nullThe store price's rule; null = each store's own pricing.
storePrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or null
storePrice.markupPercentnumber or null
storePrice.roundTo99boolean
storePrice.decorationCentsinteger
customerPriceCentsinteger or nullThe lowest customer price now.
storePriceCentsinteger or nullThe lowest store price now.
sizeUpchargeCentsobject
sizePricesarray of objectEach size's customer and store price now and (with costing.read) the cost they are based on.
sizePrices[].sizestring or null
sizePrices[].customerPriceCentsinteger or nullInteger cents.
sizePrices[].storePriceCentsinteger or nullInteger cents.
notesstring or null
archivedboolean
imagestring or nullThe design's first mockup, else the product's picture (signed, short-lived).
productobject
product.idstring
product.namestring
product.sizesarray of string
designobject or null
design.idstring
design.namestring
catalogPriceCentsinteger or nullThe product's normal lowest price before decoration, for comparison.
storesarray of objectThe stores selling it and where their price comes from.
stores[].storeIdstring
stores[].storeNamestring
stores[].storeStatusenumOne of DRAFT, OPEN, CLOSED.
stores[].storeProductIdstring
stores[].activeboolean
stores[].priceSourceenumCUSTOMER_PRODUCT: the store item follows this store price; OVERRIDE: it has its own pricing; STORE: it uses the store's pricing (this product has no store price). One of CUSTOMER_PRODUCT, OVERRIDE, STORE.
stores[].priceFromCentsinteger or nullThe lowest price shoppers see in that store.
stores[].priceToCentsinteger or nullInteger cents.

A customer product

GET /organizations/{organizationId}/customer-products/{customerProductId}

One customer product with its prices, size upcharges and the stores selling it. Read-only.

Permissionproducts.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolcustomerProducts_get (toolset stores)

Parameters

NameInTypeRequiredDescription
customerProductIdpathstringYesThe customer product (GET /customer-products).

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products/{customerProductId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
idstring
customerIdstring
customerobject
customer.idstring
customer.namestring
productIdstring
designIdstring or null
namestring or null
displayNamestringThe name, else the product and design names.
customerPriceobject or nullThe customer price's rule; null = the normal pricing.
customerPrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or null
customerPrice.markupPercentnumber or null
customerPrice.roundTo99boolean
customerPrice.decorationCentsinteger
storePriceobject or nullThe store price's rule; null = each store's own pricing.
storePrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or null
storePrice.markupPercentnumber or null
storePrice.roundTo99boolean
storePrice.decorationCentsinteger
customerPriceCentsinteger or nullThe lowest customer price now.
storePriceCentsinteger or nullThe lowest store price now.
sizeUpchargeCentsobject
sizePricesarray of objectEach size's customer and store price now and (with costing.read) the cost they are based on.
sizePrices[].sizestring or null
sizePrices[].customerPriceCentsinteger or nullInteger cents.
sizePrices[].storePriceCentsinteger or nullInteger cents.
notesstring or null
archivedboolean
imagestring or nullThe design's first mockup, else the product's picture (signed, short-lived).
productobject
product.idstring
product.namestring
product.sizesarray of string
designobject or null
design.idstring
design.namestring
catalogPriceCentsinteger or nullThe product's normal lowest price before decoration, for comparison.
storesarray of objectThe stores selling it and where their price comes from.
stores[].storeIdstring
stores[].storeNamestring
stores[].storeStatusenumOne of DRAFT, OPEN, CLOSED.
stores[].storeProductIdstring
stores[].activeboolean
stores[].priceSourceenumCUSTOMER_PRODUCT: the store item follows this store price; OVERRIDE: it has its own pricing; STORE: it uses the store's pricing (this product has no store price). One of CUSTOMER_PRODUCT, OVERRIDE, STORE.
stores[].priceFromCentsinteger or nullThe lowest price shoppers see in that store.
stores[].priceToCentsinteger or nullInteger cents.

Rename, note or archive a customer product

PATCH /organizations/{organizationId}/customer-products/{customerProductId}

Changes the name, notes or archived. Archived products leave the customer's list, new stores and quote defaults; stores already selling one keep their prices. Prices change with POST /customer-products/{customerProductId}/prices.

Permissionproducts.manage (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolcustomerProducts_update (toolset stores)

Parameters

NameInTypeRequiredDescription
customerProductIdpathstringYesThe customer product (GET /customer-products).

Request body

FieldTypeRequiredDescription
namestring or nullNoUp to 200 characters.
notesstring or nullNoUp to 5000 characters.
archivedbooleanNo

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products/{customerProductId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","notes":"string","archived":true}'

Response

200: the answer's fields
FieldTypeDescription
idstring
customerIdstring
customerobject
customer.idstring
customer.namestring
productIdstring
designIdstring or null
namestring or null
displayNamestringThe name, else the product and design names.
customerPriceobject or nullThe customer price's rule; null = the normal pricing.
customerPrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or null
customerPrice.markupPercentnumber or null
customerPrice.roundTo99boolean
customerPrice.decorationCentsinteger
storePriceobject or nullThe store price's rule; null = each store's own pricing.
storePrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or null
storePrice.markupPercentnumber or null
storePrice.roundTo99boolean
storePrice.decorationCentsinteger
customerPriceCentsinteger or nullThe lowest customer price now.
storePriceCentsinteger or nullThe lowest store price now.
sizeUpchargeCentsobject
sizePricesarray of objectEach size's customer and store price now and (with costing.read) the cost they are based on.
sizePrices[].sizestring or null
sizePrices[].customerPriceCentsinteger or nullInteger cents.
sizePrices[].storePriceCentsinteger or nullInteger cents.
notesstring or null
archivedboolean
imagestring or nullThe design's first mockup, else the product's picture (signed, short-lived).
productobject
product.idstring
product.namestring
product.sizesarray of string
designobject or null
design.idstring
design.namestring
catalogPriceCentsinteger or nullThe product's normal lowest price before decoration, for comparison.
storesarray of objectThe stores selling it and where their price comes from.
stores[].storeIdstring
stores[].storeNamestring
stores[].storeStatusenumOne of DRAFT, OPEN, CLOSED.
stores[].storeProductIdstring
stores[].activeboolean
stores[].priceSourceenumCUSTOMER_PRODUCT: the store item follows this store price; OVERRIDE: it has its own pricing; STORE: it uses the store's pricing (this product has no store price). One of CUSTOMER_PRODUCT, OVERRIDE, STORE.
stores[].priceFromCentsinteger or nullThe lowest price shoppers see in that store.
stores[].priceToCentsinteger or nullInteger cents.

Delete a customer product

DELETE /organizations/{organizationId}/customer-products/{customerProductId}

Destructive: removes it from the customer's products. Store items selling it keep today's price as their own and stay in their stores; quotes and orders keep their lines. To hide it instead, PATCH archived: true.

Permissionproducts.manage (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolcustomerProducts_delete (toolset stores)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Parameters

NameInTypeRequiredDescription
customerProductIdpathstringYesThe customer product (GET /customer-products).

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products/{customerProductId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
deletedtrue

Change a customer product's prices

POST /organizations/{organizationId}/customer-products/{customerProductId}/prices

Customer-visible: sets the customer price, the store price (each FIXED, COST + markup, MARKUP over the catalog price, or CATALOG) and/or the size upcharges (fields left out stay; null clears a price). Every store item that follows this product's store price shows the new price to shoppers at once (open stores and carts; a shopper mid-checkout is asked to confirm the new total). Saved quotes and orders keep their prices; new quote lines use the new customer price. Answers the product and how many store items were re-priced.

Permissionstores.manage (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolcustomerProducts_setPrices (toolset stores)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals.

Parameters

NameInTypeRequiredDescription
customerProductIdpathstringYesThe customer product (GET /customer-products).

Request body

FieldTypeRequiredDescription
customerPriceobject or nullNoWhat the customer pays per piece when they order directly: new quote lines and hand-typed order lines for this product and design default to it (plus the size's upcharge; a markup is read when the line is made). Null = the normal pricing (decoration matrix).
customerPrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
customerPrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
customerPrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
customerPrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
storePriceobject or nullNoWhat shoppers pay per piece in the stores the business runs for this customer: every linked store item follows it (plus the size's upcharge, worked out at each view and checkout) unless that item has its own pricing. Null = each store's own pricing.
storePrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
storePrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
storePrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
storePrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
customerPriceCentsinteger or nullNoShorthand for a FIXED customer price (ignored when customerPrice is given). 0–10000000.
storePriceCentsinteger or nullNoShorthand for a FIXED store price (ignored when storePrice is given). 0–10000000.
sizeUpchargeCentsobjectNoExtra per size on top of both prices, in cents, e.g. { "2XL": 200, "3XL": 300 }; sizes not listed add nothing.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products/{customerProductId}/prices" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customerPrice":{"mode":"FIXED"},"storePrice":{"mode":"FIXED"},"customerPriceCents":12500}'

Response

200: the answer's fields
FieldTypeDescription
idstring
customerIdstring
customerobject
customer.idstring
customer.namestring
productIdstring
designIdstring or null
namestring or null
displayNamestringThe name, else the product and design names.
customerPriceobject or nullThe customer price's rule; null = the normal pricing.
customerPrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
customerPrice.centsinteger or null
customerPrice.markupPercentnumber or null
customerPrice.roundTo99boolean
customerPrice.decorationCentsinteger
storePriceobject or nullThe store price's rule; null = each store's own pricing.
storePrice.modeenumOne of FIXED, CATALOG, MARKUP, COST.
storePrice.centsinteger or null
storePrice.markupPercentnumber or null
storePrice.roundTo99boolean
storePrice.decorationCentsinteger
customerPriceCentsinteger or nullThe lowest customer price now.
storePriceCentsinteger or nullThe lowest store price now.
sizeUpchargeCentsobject
sizePricesarray of objectEach size's customer and store price now and (with costing.read) the cost they are based on.
sizePrices[].sizestring or null
sizePrices[].customerPriceCentsinteger or nullInteger cents.
sizePrices[].storePriceCentsinteger or nullInteger cents.
notesstring or null
archivedboolean
imagestring or nullThe design's first mockup, else the product's picture (signed, short-lived).
productobject
product.idstring
product.namestring
product.sizesarray of string
designobject or null
design.idstring
design.namestring
catalogPriceCentsinteger or nullThe product's normal lowest price before decoration, for comparison.
storesarray of objectThe stores selling it and where their price comes from.
stores[].storeIdstring
stores[].storeNamestring
stores[].storeStatusenumOne of DRAFT, OPEN, CLOSED.
stores[].storeProductIdstring
stores[].activeboolean
stores[].priceSourceenumCUSTOMER_PRODUCT: the store item follows this store price; OVERRIDE: it has its own pricing; STORE: it uses the store's pricing (this product has no store price). One of CUSTOMER_PRODUCT, OVERRIDE, STORE.
stores[].priceFromCentsinteger or nullThe lowest price shoppers see in that store.
stores[].priceToCentsinteger or nullInteger cents.
repricedobjectStore items (and stores) that now show the new store price.
repriced.storeItemsinteger
repriced.storesinteger

Change many customer products' prices

POST /organizations/{organizationId}/customer-products/prices

Customer-visible: in one step, either sets prices on the listed customer products (items) or moves one customer's prices by a percentage (adjust: CUSTOMER, STORE or BOTH prices, only those already set; a FIXED price moves by the percentage, a markup price gets its markup raised so its price before decoration moves by it and it keeps following costs; optionally rounded up to .99 and limited to some products). Following store items show the new store prices at once. Answers how many products changed and how many store items were re-priced.

Permissionstores.manage (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolcustomerProducts_bulkSetPrices (toolset stores)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals.

Request body

FieldTypeRequiredDescription
itemsarray of objectNoUp to 300 items.
items[].customerProductIdstringYes
items[].customerPriceobject or nullNoWhat the customer pays per piece when they order directly: new quote lines and hand-typed order lines for this product and design default to it (plus the size's upcharge; a markup is read when the line is made). Null = the normal pricing (decoration matrix).
items[].customerPrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
items[].customerPrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
items[].customerPrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
items[].customerPrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
items[].customerPrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
items[].storePriceobject or nullNoWhat shoppers pay per piece in the stores the business runs for this customer: every linked store item follows it (plus the size's upcharge, worked out at each view and checkout) unless that item has its own pricing. Null = each store's own pricing.
items[].storePrice.modeenumYesFIXED (cents per piece, all in), COST (the variant's current cost + markupPercent, plus decorationCents), MARKUP (the variant's catalog price + markupPercent, plus decorationCents: the store MARKUP rule) or CATALOG (the catalog price plus decorationCents). Worked out when used from current figures, so cost and catalog prices that change with supplier syncs move it. One of FIXED, CATALOG, MARKUP, COST.
items[].storePrice.centsinteger or nullNoFixed: the price per piece. 0–10000000.
items[].storePrice.markupPercentnumber or nullNoCOST / MARKUP: percent over the cost / the catalog price (e.g. 80). -90–1000.
items[].storePrice.roundTo99booleanNoCOST / MARKUP / CATALOG: round up to .99.
items[].storePrice.decorationCentsintegerNoCOST / MARKUP / CATALOG: the decoration added per piece. 0–10000000.
items[].customerPriceCentsinteger or nullNoShorthand for a FIXED customer price (ignored when customerPrice is given). 0–10000000.
items[].storePriceCentsinteger or nullNoShorthand for a FIXED store price (ignored when storePrice is given). 0–10000000.
items[].sizeUpchargeCentsobjectNoExtra per size on top of both prices, in cents, e.g. { "2XL": 200, "3XL": 300 }; sizes not listed add nothing.
adjustobjectNo
adjust.customerIdstringYesWhose prices to move (GET /customers).
adjust.percentnumberYese.g. 5 raises by 5%, -10 lowers by 10%. -90–1000.
adjust.pricesenumYesOne of CUSTOMER, STORE, BOTH.
adjust.roundTo99booleanNoRound each new price up to .99.
adjust.customerProductIdsarray of stringNoOnly these of the customer's products (default: all active ones). Up to 300 items.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customer-products/prices" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"customerProductId":"customerProduct_id"}],"adjust":{"customerId":"customer_id","percent":1,"prices":"CUSTOMER"}}'

Response

200: the answer's fields
FieldTypeDescription
changedinteger
repricedobjectStore items (and stores) that now show the new store price.
repriced.storeItemsinteger
repriced.storesinteger

On this page