DevelopersAPI reference

Artwork API

REST endpoints for artwork 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 artworkGET /organizations/{organizationId}/artworkread
Upload artworkPOST /organizations/{organizationId}/artworkwrite
Get an artwork with its versionsGET /organizations/{organizationId}/artwork/{artworkId}read
Update an artworkPATCH /organizations/{organizationId}/artwork/{artworkId}write
Delete an artworkDELETE /organizations/{organizationId}/artwork/{artworkId}sensitive
Upload a new version of an artworkPOST /organizations/{organizationId}/artwork/{artworkId}/versionswrite
Check artwork for a method and print sizeGET /organizations/{organizationId}/artwork/{artworkId}/versions/{versionId}/checkread

List artwork

GET /organizations/{organizationId}/artwork

The artwork library, newest first, each with its latest version: a customer's (customerId), the business's own (businessOnly), or all; search by name or tag. Read-only.

Permissiondecoration.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolartwork_list (toolset decoration)

Parameters

NameInTypeRequiredDescription
customerIdquerystringNo
businessOnlyqueryboolean or enumNo
queryquerystringNoFree-text search over the list's names, numbers and contact details. Up to 200 characters.
includeArchivedqueryboolean or enumNo
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/artwork" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstring
items[].customerIdstring or nullWhose library; null = the business's own.
items[].customerobject or null
items[].customer.idstring
items[].customer.namestring
items[].namestring
items[].tagsarray of string
items[].currentVersioninteger
items[].archivedAtstring (date-time) or null
items[].createdAtstring (date-time)
items[].updatedAtstring (date-time)
items[].latestobject or null
items[].latest.idstringArtwork version id (for design layers: artworkVersionId).
items[].latest.artworkIdstring
items[].latest.versioninteger
items[].latest.fileNamestring
items[].latest.contentTypestringimage/png, image/jpeg, image/svg+xml or application/pdf.
items[].latest.sizeBytesinteger
items[].latest.widthPxinteger or null
items[].latest.heightPxinteger or null
items[].latest.dpinumber or nullThe resolution the file declares, when it does.
items[].latest.isVectorboolean
items[].latest.hasTransparencyboolean or nullA transparent background (DTF needs one).
items[].latest.colorCountinteger or nullColours found (a hint for screen print).
items[].latest.palettearray of string
items[].latest.notestring or null
items[].latest.urlstring or nullThe file (signed, 1 hour).
items[].latest.displayUrlstring or nullWhat to show: a PNG preview of an SVG, else the file; null for a PDF.
items[].latest.createdAtstring (date-time)
totalinteger

Upload artwork

POST /organizations/{organizationId}/artwork

Adds a file to the library in one call (the browser uses the same call): contentBase64 or a public sourceUrl, PNG, JPG, SVG or PDF up to 10 MB. The server measures it (resolution, vector, transparency, colours). SVGs with scripts or external links are refused. Returns the artwork and the new version's id (versionId, for design layers).

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

Request body

FieldTypeRequiredDescription
fileNamestringNoThe file's name, e.g. receipt.jpg (default: from the URL, else 'file'). Up to 500 characters.
contentTypestringNoMIME type, e.g. image/jpeg or application/pdf. Optional: taken from a data: URL, the URL's answer or the file's first bytes. Up to 200 characters.
contentBase64stringNoThe file's bytes as base64 (a data: URL is accepted too). Up to 10 MB. Give this or sourceUrl.
sourceUrlstring (uri)NoA public http(s) URL SKUFlow downloads the file from (up to 10 MB, 20 s, 3 redirects; private and internal addresses are refused). Give this or contentBase64. Up to 2000 characters.
customerIdstring or nullNoThe customer's library (GET /customers); omitted = the business's own.
namestring or nullNoDefault: the file name. Up to 200 characters.
tagsarray of stringNoUp to 20 items.
notestring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/artwork" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"string","contentType":"string","contentBase64":"string"}'

Response

201: the answer's fields
FieldTypeDescription
artworkobject
artwork.idstring
artwork.customerIdstring or nullWhose library; null = the business's own.
artwork.customerobject or null
artwork.customer.idstring
artwork.customer.namestring
artwork.namestring
artwork.tagsarray of string
artwork.currentVersioninteger
artwork.archivedAtstring (date-time) or null
artwork.versionsarray of objectNewest first.
artwork.versions[].idstringArtwork version id (for design layers: artworkVersionId).
artwork.versions[].artworkIdstring
artwork.versions[].versioninteger
artwork.versions[].fileNamestring
artwork.versions[].contentTypestringimage/png, image/jpeg, image/svg+xml or application/pdf.
artwork.versions[].sizeBytesinteger
artwork.versions[].widthPxinteger or null
artwork.versions[].heightPxinteger or null
artwork.versions[].dpinumber or nullThe resolution the file declares, when it does.
artwork.versions[].isVectorboolean
artwork.versions[].hasTransparencyboolean or nullA transparent background (DTF needs one).
artwork.versions[].colorCountinteger or nullColours found (a hint for screen print).
artwork.versions[].palettearray of string
artwork.versions[].notestring or null
artwork.versions[].urlstring or nullThe file (signed, 1 hour).
artwork.versions[].displayUrlstring or nullWhat to show: a PNG preview of an SVG, else the file; null for a PDF.
artwork.versions[].createdAtstring (date-time)
artwork.createdAtstring (date-time)
artwork.updatedAtstring (date-time)
versionIdstring

Get an artwork with its versions

GET /organizations/{organizationId}/artwork/{artworkId}

Every version (newest first) with what was measured: pixel size, declared dpi, vector, transparent background, colour count and palette, and signed links. Read-only.

Permissiondecoration.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolartwork_get (toolset decoration)

Parameters

NameInTypeRequiredDescription
artworkIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
idstring
customerIdstring or nullWhose library; null = the business's own.
customerobject or null
customer.idstring
customer.namestring
namestring
tagsarray of string
currentVersioninteger
archivedAtstring (date-time) or null
versionsarray of objectNewest first.
versions[].idstringArtwork version id (for design layers: artworkVersionId).
versions[].artworkIdstring
versions[].versioninteger
versions[].fileNamestring
versions[].contentTypestringimage/png, image/jpeg, image/svg+xml or application/pdf.
versions[].sizeBytesinteger
versions[].widthPxinteger or null
versions[].heightPxinteger or null
versions[].dpinumber or nullThe resolution the file declares, when it does.
versions[].isVectorboolean
versions[].hasTransparencyboolean or nullA transparent background (DTF needs one).
versions[].colorCountinteger or nullColours found (a hint for screen print).
versions[].palettearray of string
versions[].notestring or null
versions[].urlstring or nullThe file (signed, 1 hour).
versions[].displayUrlstring or nullWhat to show: a PNG preview of an SVG, else the file; null for a PDF.
versions[].createdAtstring (date-time)
createdAtstring (date-time)
updatedAtstring (date-time)

Update an artwork

PATCH /organizations/{organizationId}/artwork/{artworkId}

Renames, retags, moves it to another customer's library (or the business's: customerId: null) or archives it (archived).

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

Parameters

NameInTypeRequiredDescription
artworkIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoUp to 200 characters.
tagsarray of stringNoUp to 20 items.
customerIdstring or nullNo
archivedbooleanNo

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/artwork/{artworkId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","tags":["string"],"customerId":"customer_id"}'

Response

200: the answer's fields
FieldTypeDescription
idstring
customerIdstring or nullWhose library; null = the business's own.
customerobject or null
customer.idstring
customer.namestring
namestring
tagsarray of string
currentVersioninteger
archivedAtstring (date-time) or null
versionsarray of objectNewest first.
versions[].idstringArtwork version id (for design layers: artworkVersionId).
versions[].artworkIdstring
versions[].versioninteger
versions[].fileNamestring
versions[].contentTypestringimage/png, image/jpeg, image/svg+xml or application/pdf.
versions[].sizeBytesinteger
versions[].widthPxinteger or null
versions[].heightPxinteger or null
versions[].dpinumber or nullThe resolution the file declares, when it does.
versions[].isVectorboolean
versions[].hasTransparencyboolean or nullA transparent background (DTF needs one).
versions[].colorCountinteger or nullColours found (a hint for screen print).
versions[].palettearray of string
versions[].notestring or null
versions[].urlstring or nullThe file (signed, 1 hour).
versions[].displayUrlstring or nullWhat to show: a PNG preview of an SVG, else the file; null for a PDF.
versions[].createdAtstring (date-time)
createdAtstring (date-time)
updatedAtstring (date-time)

Delete an artwork

DELETE /organizations/{organizationId}/artwork/{artworkId}

Destructive: deletes the artwork and every version. Refused while a design places it (archive it instead).

Permissiondesigns.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 toolartwork_delete (toolset decoration)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Parameters

NameInTypeRequiredDescription
artworkIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
oktrue

Upload a new version of an artwork

POST /organizations/{organizationId}/artwork/{artworkId}/versions

Adds the next version (same file rules as upload). Designs keep the version they place until they are changed to the new one.

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

Parameters

NameInTypeRequiredDescription
artworkIdpathstringYes

Request body

FieldTypeRequiredDescription
fileNamestringNoThe file's name, e.g. receipt.jpg (default: from the URL, else 'file'). Up to 500 characters.
contentTypestringNoMIME type, e.g. image/jpeg or application/pdf. Optional: taken from a data: URL, the URL's answer or the file's first bytes. Up to 200 characters.
contentBase64stringNoThe file's bytes as base64 (a data: URL is accepted too). Up to 10 MB. Give this or sourceUrl.
sourceUrlstring (uri)NoA public http(s) URL SKUFlow downloads the file from (up to 10 MB, 20 s, 3 redirects; private and internal addresses are refused). Give this or contentBase64. Up to 2000 characters.
notestring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/artwork/{artworkId}/versions" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"string","contentType":"string","contentBase64":"string"}'

Response

201: the answer's fields
FieldTypeDescription
artworkobject
artwork.idstring
artwork.customerIdstring or nullWhose library; null = the business's own.
artwork.customerobject or null
artwork.customer.idstring
artwork.customer.namestring
artwork.namestring
artwork.tagsarray of string
artwork.currentVersioninteger
artwork.archivedAtstring (date-time) or null
artwork.versionsarray of objectNewest first.
artwork.versions[].idstringArtwork version id (for design layers: artworkVersionId).
artwork.versions[].artworkIdstring
artwork.versions[].versioninteger
artwork.versions[].fileNamestring
artwork.versions[].contentTypestringimage/png, image/jpeg, image/svg+xml or application/pdf.
artwork.versions[].sizeBytesinteger
artwork.versions[].widthPxinteger or null
artwork.versions[].heightPxinteger or null
artwork.versions[].dpinumber or nullThe resolution the file declares, when it does.
artwork.versions[].isVectorboolean
artwork.versions[].hasTransparencyboolean or nullA transparent background (DTF needs one).
artwork.versions[].colorCountinteger or nullColours found (a hint for screen print).
artwork.versions[].palettearray of string
artwork.versions[].notestring or null
artwork.versions[].urlstring or nullThe file (signed, 1 hour).
artwork.versions[].displayUrlstring or nullWhat to show: a PNG preview of an SVG, else the file; null for a PDF.
artwork.versions[].createdAtstring (date-time)
artwork.createdAtstring (date-time)
artwork.updatedAtstring (date-time)
versionIdstring

Check artwork for a method and print size

GET /organizations/{organizationId}/artwork/{artworkId}/versions/{versionId}/check

Print warnings for this file with a method and size: under 300 dpi at the print size (a problem under 150), raster art for screen print or embroidery, no transparent background for DTF, more colours than the ink colours priced. Read-only.

Permissiondecoration.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolartwork_check (toolset decoration)

Parameters

NameInTypeRequiredDescription
artworkIdpathstringYes
versionIdpathstringYes
methodIdquerystringNoA decoration method (its type decides the checks).
printWidthInquerynumberNoAt most 10000.
printHeightInquerynumberNoAt most 10000.
inkColorsqueryintegerNo1–30.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/artwork/{artworkId}/versions/{versionId}/check" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
checksarray of object
checks[].codestring
checks[].severitystring
checks[].messagestring

On this page