DevelopersAPI reference

QR codes API

REST endpoints for qr codes 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 QR codesGET /organizations/{organizationId}/qr-codesread
Create a QR codePOST /organizations/{organizationId}/qr-codeswrite
Get a QR codeGET /organizations/{organizationId}/qr-codes/{qrCodeId}read
Change a QR codePATCH /organizations/{organizationId}/qr-codes/{qrCodeId}write
Delete a QR codeDELETE /organizations/{organizationId}/qr-codes/{qrCodeId}sensitive
QR code scansGET /organizations/{organizationId}/qr-codes/{qrCodeId}/statsread
Download a QR codeGET /organizations/{organizationId}/qr-codes/{qrCodeId}/imageread

List QR codes

GET /organizations/{organizationId}/qr-codes

Every QR code with its short link, destination, look, scans and leads, newest first. Read-only.

Permissionwebsite.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolqrCodes_list (toolset marketing)

Example

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

Response

200: the answer's fields

An array of objects:

FieldTypeDescription
idstring
codestringThe short link's code (7 characters).
shortLinkstringWhat the printed code holds: {app}/go/{code}.
namestring
targetTypeenumOne of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullWEBSITE_PAGE: the page's address.
targetUrlstring or nullUrl: the address.
addTrackingboolean
enabledboolean
styleobject
style.foregroundstring
style.backgroundstring
style.dotStyleenumOne of square, rounded, dots.
style.logoUrlstringUp to 2000 characters.
style.logoSizenumber0.12–0.28.
style.captionstringUp to 40 characters.
scanCountinteger
lastScannedAtstring (date-time) or null
leadsintegerRequests (quote requests, messages) that came in through this code.
createdAtstring (date-time)
updatedAtstring (date-time)

Create a QR code

POST /organizations/{organizationId}/qr-codes

Makes a dynamic QR code: it prints as a short SKUFlow link that counts each scan and forwards to the destination, which can be changed later without reprinting. Download it with GET …/{qrCodeId}/image.

Permissionwebsite.manage (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolqrCodes_create (toolset marketing)

Request body

FieldTypeRequiredDescription
namestringYesWhere it's used: "Trade show booth", "Packing slip insert". Up to 120 characters.
targetTypeenumYesWEBSITE (home page), WEBSITE_PAGE (targetPath), BOOKING (the public request form) or URL (targetUrl). A website target falls back to the request form while the site isn't published. One of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullNoUp to 60 characters.
targetUrlstring or nullNoUp to 2000 characters.
addTrackingbooleanNoAdd utm_source=qr, utm_medium=print, utm_campaign, utm_content={code} (default true).
enabledbooleanNoOff: scans show a 'no longer active' page.
styleobjectNoColours (dark on light, contrast checked), dot style, centre logo and size, caption.
style.foregroundstringNo
style.backgroundstringNo
style.dotStyleenumNoOne of square, rounded, dots.
style.logoUrlstringNoUp to 2000 characters.
style.logoSizenumberNo0.12–0.28.
style.captionstringNoUp to 40 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/qr-codes" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","targetType":"WEBSITE"}'

Response

201: the answer's fields
FieldTypeDescription
idstring
codestringThe short link's code (7 characters).
shortLinkstringWhat the printed code holds: {app}/go/{code}.
namestring
targetTypeenumOne of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullWEBSITE_PAGE: the page's address.
targetUrlstring or nullUrl: the address.
addTrackingboolean
enabledboolean
styleobject
style.foregroundstring
style.backgroundstring
style.dotStyleenumOne of square, rounded, dots.
style.logoUrlstringUp to 2000 characters.
style.logoSizenumber0.12–0.28.
style.captionstringUp to 40 characters.
scanCountinteger
lastScannedAtstring (date-time) or null
leadsintegerRequests (quote requests, messages) that came in through this code.
createdAtstring (date-time)
updatedAtstring (date-time)

Get a QR code

GET /organizations/{organizationId}/qr-codes/{qrCodeId}

One QR code with its short link, destination, look, all-time scans and leads. Read-only.

Permissionwebsite.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolqrCodes_get (toolset marketing)

Parameters

NameInTypeRequiredDescription
qrCodeIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
idstring
codestringThe short link's code (7 characters).
shortLinkstringWhat the printed code holds: {app}/go/{code}.
namestring
targetTypeenumOne of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullWEBSITE_PAGE: the page's address.
targetUrlstring or nullUrl: the address.
addTrackingboolean
enabledboolean
styleobject
style.foregroundstring
style.backgroundstring
style.dotStyleenumOne of square, rounded, dots.
style.logoUrlstringUp to 2000 characters.
style.logoSizenumber0.12–0.28.
style.captionstringUp to 40 characters.
scanCountinteger
lastScannedAtstring (date-time) or null
leadsintegerRequests (quote requests, messages) that came in through this code.
createdAtstring (date-time)
updatedAtstring (date-time)

Change a QR code

PATCH /organizations/{organizationId}/qr-codes/{qrCodeId}

Changes the fields sent. Changing the destination re-points codes already printed, at once.

Permissionwebsite.manage (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolqrCodes_update (toolset marketing)

Parameters

NameInTypeRequiredDescription
qrCodeIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoWhere it's used: "Trade show booth", "Packing slip insert". Up to 120 characters.
targetTypeenumNoWEBSITE (home page), WEBSITE_PAGE (targetPath), BOOKING (the public request form) or URL (targetUrl). A website target falls back to the request form while the site isn't published. One of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullNoUp to 60 characters.
targetUrlstring or nullNoUp to 2000 characters.
addTrackingbooleanNoAdd utm_source=qr, utm_medium=print, utm_campaign, utm_content={code} (default true).
enabledbooleanNoOff: scans show a 'no longer active' page.
styleobjectNoColours (dark on light, contrast checked), dot style, centre logo and size, caption.
style.foregroundstringNo
style.backgroundstringNo
style.dotStyleenumNoOne of square, rounded, dots.
style.logoUrlstringNoUp to 2000 characters.
style.logoSizenumberNo0.12–0.28.
style.captionstringNoUp to 40 characters.

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/qr-codes/{qrCodeId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","targetType":"WEBSITE","targetPath":"string"}'

Response

200: the answer's fields
FieldTypeDescription
idstring
codestringThe short link's code (7 characters).
shortLinkstringWhat the printed code holds: {app}/go/{code}.
namestring
targetTypeenumOne of WEBSITE, WEBSITE_PAGE, BOOKING, URL.
targetPathstring or nullWEBSITE_PAGE: the page's address.
targetUrlstring or nullUrl: the address.
addTrackingboolean
enabledboolean
styleobject
style.foregroundstring
style.backgroundstring
style.dotStyleenumOne of square, rounded, dots.
style.logoUrlstringUp to 2000 characters.
style.logoSizenumber0.12–0.28.
style.captionstringUp to 40 characters.
scanCountinteger
lastScannedAtstring (date-time) or null
leadsintegerRequests (quote requests, messages) that came in through this code.
createdAtstring (date-time)
updatedAtstring (date-time)

Delete a QR code

DELETE /organizations/{organizationId}/qr-codes/{qrCodeId}

Destructive: printed copies stop working (scans show 'no longer active') and its scan history is deleted. Prefer enabled: false.

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

Parameters

NameInTypeRequiredDescription
qrCodeIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
oktrue

QR code scans

GET /organizations/{organizationId}/qr-codes/{qrCodeId}/stats

Scans and unique scanners per day over days (default 30), devices, phone systems, all-time scans and leads. No addresses are stored. Read-only.

Permissionwebsite.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolqrCodes_stats (toolset marketing)

Parameters

NameInTypeRequiredDescription
qrCodeIdpathstringYes
daysqueryintegerNo7–365.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/qr-codes/{qrCodeId}/stats" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
fromstring
tostring
scansinteger
uniqueVisitorsinteger
totalScansinteger
leadsinteger
daysarray of object
days[].datestring
days[].scansinteger
days[].visitorsinteger
devicesobject
devices.MOBILEinteger
devices.TABLETinteger
devices.DESKTOPinteger
systemsarray of object
systems[].namestring
systems[].countinteger

Download a QR code

GET /organizations/{organizationId}/qr-codes/{qrCodeId}/image

The code as SVG (vector: print at any size) or PNG size pixels wide (256–4096; 2048+ for print), base64. Read-only.

Permissionwebsite.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolqrCodes_image (toolset marketing)

Parameters

NameInTypeRequiredDescription
qrCodeIdpathstringYes
formatqueryenumNoOne of svg, png. Default svg.
sizequeryintegerNo256–4096.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/qr-codes/{qrCodeId}/image" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
fileNamestring
contentTypestring
base64string

On this page