Decoration API
REST endpoints for decoration in SKUFlow: 9 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.
| Operation | Endpoint | Risk |
|---|---|---|
| List decoration methods | GET /organizations/{organizationId}/decoration-methods | read |
| Create a decoration method | POST /organizations/{organizationId}/decoration-methods | write |
| Get a decoration method | GET /organizations/{organizationId}/decoration-methods/{methodId} | read |
| Update a decoration method | PATCH /organizations/{organizationId}/decoration-methods/{methodId} | write |
| Delete a decoration method | DELETE /organizations/{organizationId}/decoration-methods/{methodId} | sensitive |
| The starting price table of a method type | GET /organizations/{organizationId}/decoration-method-defaults | read |
| Price one decoration location | GET /organizations/{organizationId}/decoration-methods/{methodId}/price | read |
| The online designer's settings | GET /organizations/{organizationId}/design-studio | read |
| Change the online designer | PATCH /organizations/{organizationId}/design-studio | sensitive |
List decoration methods
GET /organizations/{organizationId}/decoration-methods
The business's decoration methods with their price tables (a new business starts with screen print, embroidery, DTF, DTG, vinyl, sublimation, laser engraving, pad print and large format, seeded on first read). Filter by type; inactive ones only with includeInactive. Read-only.
| Permission | decoration.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | decorationMethods_list (toolset decoration) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
type | query | enum | No | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
includeInactive | query | boolean or enum | No |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
An array of objects:
| Field | Type | Description |
|---|---|---|
id | string | |
type | enum | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | |
description | string or null | |
active | boolean | |
sortOrder | integer | |
fulfillment | enum | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | |
vendor | object or null | |
vendor.id | string | |
vendor.name | string | |
decoratorName | string or null | Outsourced: the decorator. |
pricing | any | The price table (see pricing on create). |
costTable | any | Our cost in the same shape (the decorator's price list when outsourced). Present only for roles with costing.read. |
turnaroundDays | integer or null | |
createdAt | string (date-time) | |
updatedAt | string (date-time) |
Create a decoration method
POST /organizations/{organizationId}/decoration-methods
Adds a method with its price table (default: the type's starting table). Outsourced methods need decoratorName or vendorId; their costTable is the decorator's price list. Quotes already priced keep their prices.
| Permission | decoration.manage (Owner, Admin) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | decorationMethods_create (toolset decoration) |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
type | enum | Yes | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | Yes | Up to 120 characters. |
description | string or null | No | Up to 2000 characters. |
active | boolean | No | Inactive methods are not offered on new designs. |
sortOrder | integer | No | 0–10000. |
fulfillment | enum | No | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | No | Outsourced: the vendor (GET /vendors) that decorates. |
decoratorName | string or null | No | Outsourced: the decorator's name (required without a vendor). Up to 200 characters. |
pricing | object | No | Default: the method type's starting table. |
pricing.basis | enum | Yes | One of COLORS, STITCHES, SIZE_BAND, SQUARE_INCH, SQUARE_FOOT, PER_PIECE. |
pricing.columns | array of object | Yes | Up to 30 items. |
pricing.columns[].key | string | Yes | A stable key, e.g. "2", "8k", "12x12". Up to 40 characters. |
pricing.columns[].label | string | Yes | What the column reads: "2 colours", "≤ 8,000". Up to 80 characters. |
pricing.columns[].max | number or null | No | Colors: the most ink colours; STITCHES: the most stitches in the band. At most 10000000. |
pricing.columns[].maxWidthIn | number or null | No | SIZE_BAND: the widest print. At most 1000. |
pricing.columns[].maxHeightIn | number or null | No | SIZE_BAND: the tallest print. At most 1000. |
pricing.breaks | array of object | Yes | Up to 30 items. |
pricing.breaks[].minQuantity | integer | Yes | The row applies from this many pieces (the order's quantity of the design). 1–10000000. |
pricing.breaks[].cells | array of number | Yes | Price per piece per column, in cents (SQUARE_INCH / SQUARE_FOOT: cents per square inch / foot, fractions allowed). Up to 30 items. |
pricing.fees | object | No | Default {}. |
pricing.fees.setupPerColorCents | integer or null | No | Screens or plates: per ink colour, per location, once per order. 0–10000000. |
pricing.fees.setupPerLocationCents | integer or null | No | Set-up per location, once per order. 0–10000000. |
pricing.fees.digitizingCents | integer or null | No | Embroidery digitizing, once per design location (not charged when already digitized). 0–10000000. |
pricing.fees.artCents | integer or null | No | Art service (redraw, clean-up, separations), when asked for. 0–10000000. |
pricing.fees.designLayoutCents | integer or null | No | Large format design / layout fee, once per design. 0–10000000. |
pricing.fees.minimumCents | integer or null | No | Least a location's decoration costs on an order; the difference is added as a fee. 0–10000000. |
pricing.surcharges | object | No | Default {}. |
pricing.surcharges.underbase | enum or null | No | Dark garments: NONE, EXTRA_COLOR (the white underbase counts as one more colour and screen) or PER_UNIT (underbaseCents a piece). One of NONE, EXTRA_COLOR, PER_UNIT. |
pricing.surcharges.underbaseCents | integer or null | No | 0–10000000. |
pricing.surcharges.darkGarmentCents | integer or null | No | Per piece on dark colours (DTG pretreatment, white ink). 0–10000000. |
pricing.surcharges.puffCents | integer or null | No | Embroidery 3D puff, per piece. 0–10000000. |
pricing.surcharges.extraPerThousandStitchesCents | integer or null | No | Embroidery beyond the last stitch band, per 1,000 stitches per piece. 0–10000000. |
pricing.surcharges.doubleSidedPercent | number or null | No | Large format: printing both sides adds this percent of the printed piece. 0–500. |
costTable | object or null | No | Our cost per piece and fees in the same shape; null removes it (decoration cost then counts as 0). |
costTable.basis | enum | Yes | One of COLORS, STITCHES, SIZE_BAND, SQUARE_INCH, SQUARE_FOOT, PER_PIECE. |
costTable.columns | array of object | Yes | Up to 30 items. |
costTable.columns[].key | string | Yes | A stable key, e.g. "2", "8k", "12x12". Up to 40 characters. |
costTable.columns[].label | string | Yes | What the column reads: "2 colours", "≤ 8,000". Up to 80 characters. |
costTable.columns[].max | number or null | No | Colors: the most ink colours; STITCHES: the most stitches in the band. At most 10000000. |
costTable.columns[].maxWidthIn | number or null | No | SIZE_BAND: the widest print. At most 1000. |
costTable.columns[].maxHeightIn | number or null | No | SIZE_BAND: the tallest print. At most 1000. |
costTable.breaks | array of object | Yes | Up to 30 items. |
costTable.breaks[].minQuantity | integer | Yes | The row applies from this many pieces (the order's quantity of the design). 1–10000000. |
costTable.breaks[].cells | array of number | Yes | Price per piece per column, in cents (SQUARE_INCH / SQUARE_FOOT: cents per square inch / foot, fractions allowed). Up to 30 items. |
costTable.fees | object | No | Default {}. |
costTable.fees.setupPerColorCents | integer or null | No | Screens or plates: per ink colour, per location, once per order. 0–10000000. |
costTable.fees.setupPerLocationCents | integer or null | No | Set-up per location, once per order. 0–10000000. |
costTable.fees.digitizingCents | integer or null | No | Embroidery digitizing, once per design location (not charged when already digitized). 0–10000000. |
costTable.fees.artCents | integer or null | No | Art service (redraw, clean-up, separations), when asked for. 0–10000000. |
costTable.fees.designLayoutCents | integer or null | No | Large format design / layout fee, once per design. 0–10000000. |
costTable.fees.minimumCents | integer or null | No | Least a location's decoration costs on an order; the difference is added as a fee. 0–10000000. |
costTable.surcharges | object | No | Default {}. |
costTable.surcharges.underbase | enum or null | No | Dark garments: NONE, EXTRA_COLOR (the white underbase counts as one more colour and screen) or PER_UNIT (underbaseCents a piece). One of NONE, EXTRA_COLOR, PER_UNIT. |
costTable.surcharges.underbaseCents | integer or null | No | 0–10000000. |
costTable.surcharges.darkGarmentCents | integer or null | No | Per piece on dark colours (DTG pretreatment, white ink). 0–10000000. |
costTable.surcharges.puffCents | integer or null | No | Embroidery 3D puff, per piece. 0–10000000. |
costTable.surcharges.extraPerThousandStitchesCents | integer or null | No | Embroidery beyond the last stitch band, per 1,000 stitches per piece. 0–10000000. |
costTable.surcharges.doubleSidedPercent | number or null | No | Large format: printing both sides adds this percent of the printed piece. 0–500. |
turnaroundDays | integer or null | No | 0–365. |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"SCREEN_PRINT","name":"Dana Whitfield"}'Response
201: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
type | enum | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | |
description | string or null | |
active | boolean | |
sortOrder | integer | |
fulfillment | enum | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | |
vendor | object or null | |
vendor.id | string | |
vendor.name | string | |
decoratorName | string or null | Outsourced: the decorator. |
pricing | any | The price table (see pricing on create). |
costTable | any | Our cost in the same shape (the decorator's price list when outsourced). Present only for roles with costing.read. |
turnaroundDays | integer or null | |
createdAt | string (date-time) | |
updatedAt | string (date-time) |
Get a decoration method
GET /organizations/{organizationId}/decoration-methods/{methodId}
One method with its price table, fees, surcharges and (with costing.read) cost table. Read-only.
| Permission | decoration.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | decorationMethods_get (toolset decoration) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
methodId | path | string | Yes |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods/{methodId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
type | enum | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | |
description | string or null | |
active | boolean | |
sortOrder | integer | |
fulfillment | enum | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | |
vendor | object or null | |
vendor.id | string | |
vendor.name | string | |
decoratorName | string or null | Outsourced: the decorator. |
pricing | any | The price table (see pricing on create). |
costTable | any | Our cost in the same shape (the decorator's price list when outsourced). Present only for roles with costing.read. |
turnaroundDays | integer or null | |
createdAt | string (date-time) | |
updatedAt | string (date-time) |
Update a decoration method
PATCH /organizations/{organizationId}/decoration-methods/{methodId}
Changes the fields sent (a table replaces the whole table). New quote lines and re-priced ones use it; saved quotes keep their snapshot.
| Permission | decoration.manage (Owner, Admin) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | decorationMethods_update (toolset decoration) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
methodId | path | string | Yes |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
type | enum | No | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | No | Up to 120 characters. |
description | string or null | No | Up to 2000 characters. |
active | boolean | No | Inactive methods are not offered on new designs. |
sortOrder | integer | No | 0–10000. |
fulfillment | enum | No | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | No | Outsourced: the vendor (GET /vendors) that decorates. |
decoratorName | string or null | No | Outsourced: the decorator's name (required without a vendor). Up to 200 characters. |
pricing | object | No | Default: the method type's starting table. |
pricing.basis | enum | Yes | One of COLORS, STITCHES, SIZE_BAND, SQUARE_INCH, SQUARE_FOOT, PER_PIECE. |
pricing.columns | array of object | Yes | Up to 30 items. |
pricing.columns[].key | string | Yes | A stable key, e.g. "2", "8k", "12x12". Up to 40 characters. |
pricing.columns[].label | string | Yes | What the column reads: "2 colours", "≤ 8,000". Up to 80 characters. |
pricing.columns[].max | number or null | No | Colors: the most ink colours; STITCHES: the most stitches in the band. At most 10000000. |
pricing.columns[].maxWidthIn | number or null | No | SIZE_BAND: the widest print. At most 1000. |
pricing.columns[].maxHeightIn | number or null | No | SIZE_BAND: the tallest print. At most 1000. |
pricing.breaks | array of object | Yes | Up to 30 items. |
pricing.breaks[].minQuantity | integer | Yes | The row applies from this many pieces (the order's quantity of the design). 1–10000000. |
pricing.breaks[].cells | array of number | Yes | Price per piece per column, in cents (SQUARE_INCH / SQUARE_FOOT: cents per square inch / foot, fractions allowed). Up to 30 items. |
pricing.fees | object | No | Default {}. |
pricing.fees.setupPerColorCents | integer or null | No | Screens or plates: per ink colour, per location, once per order. 0–10000000. |
pricing.fees.setupPerLocationCents | integer or null | No | Set-up per location, once per order. 0–10000000. |
pricing.fees.digitizingCents | integer or null | No | Embroidery digitizing, once per design location (not charged when already digitized). 0–10000000. |
pricing.fees.artCents | integer or null | No | Art service (redraw, clean-up, separations), when asked for. 0–10000000. |
pricing.fees.designLayoutCents | integer or null | No | Large format design / layout fee, once per design. 0–10000000. |
pricing.fees.minimumCents | integer or null | No | Least a location's decoration costs on an order; the difference is added as a fee. 0–10000000. |
pricing.surcharges | object | No | Default {}. |
pricing.surcharges.underbase | enum or null | No | Dark garments: NONE, EXTRA_COLOR (the white underbase counts as one more colour and screen) or PER_UNIT (underbaseCents a piece). One of NONE, EXTRA_COLOR, PER_UNIT. |
pricing.surcharges.underbaseCents | integer or null | No | 0–10000000. |
pricing.surcharges.darkGarmentCents | integer or null | No | Per piece on dark colours (DTG pretreatment, white ink). 0–10000000. |
pricing.surcharges.puffCents | integer or null | No | Embroidery 3D puff, per piece. 0–10000000. |
pricing.surcharges.extraPerThousandStitchesCents | integer or null | No | Embroidery beyond the last stitch band, per 1,000 stitches per piece. 0–10000000. |
pricing.surcharges.doubleSidedPercent | number or null | No | Large format: printing both sides adds this percent of the printed piece. 0–500. |
costTable | object or null | No | Our cost per piece and fees in the same shape; null removes it (decoration cost then counts as 0). |
costTable.basis | enum | Yes | One of COLORS, STITCHES, SIZE_BAND, SQUARE_INCH, SQUARE_FOOT, PER_PIECE. |
costTable.columns | array of object | Yes | Up to 30 items. |
costTable.columns[].key | string | Yes | A stable key, e.g. "2", "8k", "12x12". Up to 40 characters. |
costTable.columns[].label | string | Yes | What the column reads: "2 colours", "≤ 8,000". Up to 80 characters. |
costTable.columns[].max | number or null | No | Colors: the most ink colours; STITCHES: the most stitches in the band. At most 10000000. |
costTable.columns[].maxWidthIn | number or null | No | SIZE_BAND: the widest print. At most 1000. |
costTable.columns[].maxHeightIn | number or null | No | SIZE_BAND: the tallest print. At most 1000. |
costTable.breaks | array of object | Yes | Up to 30 items. |
costTable.breaks[].minQuantity | integer | Yes | The row applies from this many pieces (the order's quantity of the design). 1–10000000. |
costTable.breaks[].cells | array of number | Yes | Price per piece per column, in cents (SQUARE_INCH / SQUARE_FOOT: cents per square inch / foot, fractions allowed). Up to 30 items. |
costTable.fees | object | No | Default {}. |
costTable.fees.setupPerColorCents | integer or null | No | Screens or plates: per ink colour, per location, once per order. 0–10000000. |
costTable.fees.setupPerLocationCents | integer or null | No | Set-up per location, once per order. 0–10000000. |
costTable.fees.digitizingCents | integer or null | No | Embroidery digitizing, once per design location (not charged when already digitized). 0–10000000. |
costTable.fees.artCents | integer or null | No | Art service (redraw, clean-up, separations), when asked for. 0–10000000. |
costTable.fees.designLayoutCents | integer or null | No | Large format design / layout fee, once per design. 0–10000000. |
costTable.fees.minimumCents | integer or null | No | Least a location's decoration costs on an order; the difference is added as a fee. 0–10000000. |
costTable.surcharges | object | No | Default {}. |
costTable.surcharges.underbase | enum or null | No | Dark garments: NONE, EXTRA_COLOR (the white underbase counts as one more colour and screen) or PER_UNIT (underbaseCents a piece). One of NONE, EXTRA_COLOR, PER_UNIT. |
costTable.surcharges.underbaseCents | integer or null | No | 0–10000000. |
costTable.surcharges.darkGarmentCents | integer or null | No | Per piece on dark colours (DTG pretreatment, white ink). 0–10000000. |
costTable.surcharges.puffCents | integer or null | No | Embroidery 3D puff, per piece. 0–10000000. |
costTable.surcharges.extraPerThousandStitchesCents | integer or null | No | Embroidery beyond the last stitch band, per 1,000 stitches per piece. 0–10000000. |
costTable.surcharges.doubleSidedPercent | number or null | No | Large format: printing both sides adds this percent of the printed piece. 0–500. |
turnaroundDays | integer or null | No | 0–365. |
Example
curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods/{methodId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"SCREEN_PRINT","name":"Dana Whitfield","description":"string"}'Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
type | enum | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
name | string | |
description | string or null | |
active | boolean | |
sortOrder | integer | |
fulfillment | enum | IN_HOUSE, or OUTSOURCED to a decorator (its price list is the cost table). One of IN_HOUSE, OUTSOURCED. |
vendorId | string or null | |
vendor | object or null | |
vendor.id | string | |
vendor.name | string | |
decoratorName | string or null | Outsourced: the decorator. |
pricing | any | The price table (see pricing on create). |
costTable | any | Our cost in the same shape (the decorator's price list when outsourced). Present only for roles with costing.read. |
turnaroundDays | integer or null | |
createdAt | string (date-time) | |
updatedAt | string (date-time) |
Delete a decoration method
DELETE /organizations/{organizationId}/decoration-methods/{methodId}
Destructive: deletes the method. Design placements that used it ask for a method again; saved quotes keep their prices. Prefer active: false.
| Permission | decoration.manage (Owner, Admin) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | decorationMethods_delete (toolset decoration) |
| Approval | Over MCP, this tool always waits for your approval in SKUFlow. See Approvals. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
methodId | path | string | Yes |
Example
curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods/{methodId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
ok | true |
The starting price table of a method type
GET /organizations/{organizationId}/decoration-method-defaults
The table a new method of this type starts from (typical prices to edit). Read-only.
| Permission | decoration.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | decorationMethods_defaultTable (toolset decoration) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
type | query | enum | Yes | SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER (vinyl), SUBLIMATION, LASER (engraving), PAD_PRINT (promo), UV_PRINT or LARGE_FORMAT_PRINT. One of SCREEN_PRINT, EMBROIDERY, DTG, DTF, HEAT_TRANSFER, SUBLIMATION, LASER, PAD_PRINT, UV_PRINT, LARGE_FORMAT_PRINT. |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-method-defaults?type=SCREEN_PRINT" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
A value of type any.
Price one decoration location
GET /organizations/{organizationId}/decoration-methods/{methodId}/price
What one location costs with this method at a quantity: per piece (with the column and quantity break used, surcharges), the location's total and its one-time fees (screens, digitizing, minimum). dark prices a dark garment (underbase, DTG surcharge); the option flags match a placement's options. Read-only.
| Permission | decoration.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | decorationMethods_price (toolset decoration) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
methodId | path | string | Yes | |
quantity | query | integer | Yes | 1–1000000. |
dark | query | boolean or enum | No | A dark garment colour. |
inkColors | query | integer | No | 1–30. |
stitchCount | query | integer | No | 0–1000000. |
sizeBandKey | query | string | No | Up to 40 characters. |
printWidthIn | query | number | No | At most 10000. |
printHeightIn | query | number | No | At most 10000. |
underbase | query | boolean or enum | No | Force the underbase on or off (default: on dark colours). |
puff | query | boolean or enum | No | |
alreadyDigitized | query | boolean or enum | No | |
artService | query | boolean or enum | No | |
doubleSided | query | boolean or enum | No | |
setupWaived | query | boolean or enum | No |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/decoration-methods/{methodId}/price?quantity=1" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
unitCents | integer | Price per piece. |
columnLabel | string | |
breakMinQuantity | integer | |
totalCents | integer | |
fees | array of object | |
fees[].key | string | {placementKey}:{kind}: name it in waivedFees to leave it off. |
fees[].kind | enum | One of setup, digitizing, art, layout, minimum. |
fees[].label | string | |
fees[].amountCents | integer | |
fees[].costCents | any | Our cost of the fee. Present only for roles with costing.read. |
fees[].costKnown | any | False when the method has no cost table (the fee's cost counts as 0). Present only for roles with costing.read. |
feesCents | integer | |
problems | array of string | |
costCents | any | Our cost per piece. Present only for roles with costing.read. |
The online designer's settings
GET /organizations/{organizationId}/design-studio
Whether the online designer (/design/{slug}) is on, the products and decoration methods it offers, whether visitors can add text, clipart and their own art, and the least pieces a design is sent with. Read-only.
| Permission | decoration.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | designStudio_get (toolset decoration) |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/design-studio" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
enabled | boolean | |
headline | string or null | |
intro | string or null | |
productIds | array of string | The catalog products visitors can design, in order. |
methodIds | array of string | The decoration methods visitors can choose; the first that suits an area is its default. |
allowText | boolean | |
allowClipart | boolean | |
allowUploads | boolean | |
minQuantity | integer | |
slug | string | |
path | string | The public page: /design/{slug} on the app. |
clipartCount | integer | SKUFlow's built-in clipart shapes. |
businessClipartCount | integer | The business's own artwork tagged "clipart" (offered too). |
Change the online designer
PATCH /organizations/{organizationId}/design-studio
Customer-visible: switching it on publishes /design/{slug}, where anyone can design one of productIds with one of methodIds and send it as a request. Needs at least one product (garments and promo goods; not large format) and one method to switch on. Products and methods: GET /products, GET /decoration-methods.
| Permission | decoration.manage (Owner, Admin) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | designStudio_update (toolset decoration) |
| Approval | Over MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | No | |
headline | string or null | No | Up to 200 characters. |
intro | string or null | No | Up to 2000 characters. |
productIds | array of string | No | Up to 60 items. |
methodIds | array of string | No | Up to 12 items. |
allowText | boolean | No | |
allowClipart | boolean | No | |
allowUploads | boolean | No | |
minQuantity | integer | No | 1–10000. |
Example
curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/design-studio" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"headline":"string","intro":"string"}'Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
enabled | boolean | |
headline | string or null | |
intro | string or null | |
productIds | array of string | The catalog products visitors can design, in order. |
methodIds | array of string | The decoration methods visitors can choose; the first that suits an area is its default. |
allowText | boolean | |
allowClipart | boolean | |
allowUploads | boolean | |
minQuantity | integer | |
slug | string | |
path | string | The public page: /design/{slug} on the app. |
clipartCount | integer | SKUFlow's built-in clipart shapes. |
businessClipartCount | integer | The business's own artwork tagged "clipart" (offered too). |