QR codes API REST endpoints for qr codes in ServFlo: 7 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.servflo.ai/api. Every call needs Authorization: Bearer sfk_… (Authentication ); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id .
Operation Endpoint Risk List QR codes GET /organizations/{organizationId}/qr-codesreadCreate a QR code POST /organizations/{organizationId}/qr-codeswriteGet a QR code GET /organizations/{organizationId}/qr-codes/{qrCodeId}readChange a QR code PATCH /organizations/{organizationId}/qr-codes/{qrCodeId}writeDelete a QR code DELETE /organizations/{organizationId}/qr-codes/{qrCodeId}sensitiveQR code scans GET /organizations/{organizationId}/qr-codes/{qrCodeId}/statsreadDownload a QR code GET /organizations/{organizationId}/qr-codes/{qrCodeId}/imageread
GET /organizations/{organizationId}/qr-codes
Every QR code with its short link, destination, look, scans and leads, newest first. Read-only.
Permission website.read (Owner, Admin, Dispatcher)Risk read, OAuth scope servflo.read. Read: reads only.MCP tool qrCodes_list (toolset marketing)
curl "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields An array of objects:
Field Type Description idstring codestring The short link's code (7 characters). shortLinkstring What the printed code holds: {app}/go/{code}. namestring targetTypeenum One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null WEBSITE_PAGE: the page's address. targetUrlstring or null Url: the address.addTrackingboolean enabledboolean styleobject style.foregroundstring style.backgroundstring style.dotStyleenum One of square, rounded, dots. style.logoUrlstring Up to 2000 characters. style.logoSizenumber 0.12–0.28. style.captionstring Up to 40 characters. scanCountinteger lastScannedAtstring (date-time) or null leadsinteger Requests (bookings, messages) that came in through this code. createdAtstring (date-time) updatedAtstring (date-time)
POST /organizations/{organizationId}/qr-codes
Makes a dynamic QR code: it prints as a short ServFlo link that counts each scan and forwards to the destination, which can be changed later without reprinting. Download it with GET …/{qrCodeId}/image.
Permission website.manage (Owner, Admin)Risk write, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.MCP tool qrCodes_create (toolset marketing)
Field Type Required Description namestring Yes Where it's used: "Truck wrap", "Spring yard signs". Up to 120 characters. targetTypeenum Yes WEBSITE (home page), WEBSITE_PAGE (targetPath), BOOKING (the booking form) or URL (targetUrl). A website target falls back to the booking form while the site isn't published. One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null No Up to 60 characters. targetUrlstring or null No Up to 2000 characters. addTrackingboolean No Add utm_source=qr, utm_medium=print, utm_campaign, utm_content={code} (default true). enabledboolean No Off: scans show a 'no longer active' page. styleobject No Colours (dark on light, contrast checked), dot style, centre logo and size, caption. style.foregroundstring No style.backgroundstring No style.dotStyleenum No One of square, rounded, dots. style.logoUrlstring No Up to 2000 characters. style.logoSizenumber No 0.12–0.28. style.captionstring No Up to 40 characters.
curl -X POST "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes" \
-H "Authorization: Bearer $SERVFLO_API_KEY " \
-H "Content-Type: application/json" \
-d '{"name":"Dana Whitfield","targetType":"WEBSITE"}'
201: the answer's fields Field Type Description idstring codestring The short link's code (7 characters). shortLinkstring What the printed code holds: {app}/go/{code}. namestring targetTypeenum One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null WEBSITE_PAGE: the page's address. targetUrlstring or null Url: the address.addTrackingboolean enabledboolean styleobject style.foregroundstring style.backgroundstring style.dotStyleenum One of square, rounded, dots. style.logoUrlstring Up to 2000 characters. style.logoSizenumber 0.12–0.28. style.captionstring Up to 40 characters. scanCountinteger lastScannedAtstring (date-time) or null leadsinteger Requests (bookings, messages) that came in through this code. createdAtstring (date-time) updatedAtstring (date-time)
GET /organizations/{organizationId}/qr-codes/{qrCodeId}
One QR code with its short link, destination, look, all-time scans and leads. Read-only.
Permission website.read (Owner, Admin, Dispatcher)Risk read, OAuth scope servflo.read. Read: reads only.MCP tool qrCodes_get (toolset marketing)
Name In Type Required Description qrCodeIdpath string Yes
curl "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes/{qrCodeId}" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields Field Type Description idstring codestring The short link's code (7 characters). shortLinkstring What the printed code holds: {app}/go/{code}. namestring targetTypeenum One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null WEBSITE_PAGE: the page's address. targetUrlstring or null Url: the address.addTrackingboolean enabledboolean styleobject style.foregroundstring style.backgroundstring style.dotStyleenum One of square, rounded, dots. style.logoUrlstring Up to 2000 characters. style.logoSizenumber 0.12–0.28. style.captionstring Up to 40 characters. scanCountinteger lastScannedAtstring (date-time) or null leadsinteger Requests (bookings, messages) that came in through this code. createdAtstring (date-time) updatedAtstring (date-time)
PATCH /organizations/{organizationId}/qr-codes/{qrCodeId}
Changes the fields sent. Changing the destination re-points codes already printed, at once.
Permission website.manage (Owner, Admin)Risk write, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.MCP tool qrCodes_update (toolset marketing)
Name In Type Required Description qrCodeIdpath string Yes
Field Type Required Description namestring No Where it's used: "Truck wrap", "Spring yard signs". Up to 120 characters. targetTypeenum No WEBSITE (home page), WEBSITE_PAGE (targetPath), BOOKING (the booking form) or URL (targetUrl). A website target falls back to the booking form while the site isn't published. One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null No Up to 60 characters. targetUrlstring or null No Up to 2000 characters. addTrackingboolean No Add utm_source=qr, utm_medium=print, utm_campaign, utm_content={code} (default true). enabledboolean No Off: scans show a 'no longer active' page. styleobject No Colours (dark on light, contrast checked), dot style, centre logo and size, caption. style.foregroundstring No style.backgroundstring No style.dotStyleenum No One of square, rounded, dots. style.logoUrlstring No Up to 2000 characters. style.logoSizenumber No 0.12–0.28. style.captionstring No Up to 40 characters.
curl -X PATCH "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes/{qrCodeId}" \
-H "Authorization: Bearer $SERVFLO_API_KEY " \
-H "Content-Type: application/json" \
-d '{"name":"Dana Whitfield","targetType":"WEBSITE","targetPath":"string"}'
200: the answer's fields Field Type Description idstring codestring The short link's code (7 characters). shortLinkstring What the printed code holds: {app}/go/{code}. namestring targetTypeenum One of WEBSITE, WEBSITE_PAGE, BOOKING, URL. targetPathstring or null WEBSITE_PAGE: the page's address. targetUrlstring or null Url: the address.addTrackingboolean enabledboolean styleobject style.foregroundstring style.backgroundstring style.dotStyleenum One of square, rounded, dots. style.logoUrlstring Up to 2000 characters. style.logoSizenumber 0.12–0.28. style.captionstring Up to 40 characters. scanCountinteger lastScannedAtstring (date-time) or null leadsinteger Requests (bookings, messages) that came in through this code. createdAtstring (date-time) updatedAtstring (date-time)
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.
Permission website.manage (Owner, Admin)Risk sensitive, OAuth scope servflo.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.MCP tool qrCodes_delete (toolset marketing)Approval Over MCP, this tool always waits for your approval in ServFlo. See Approvals .
Name In Type Required Description qrCodeIdpath string Yes
curl -X DELETE "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes/{qrCodeId}" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields Field Type Description oktrue
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.
Permission website.read (Owner, Admin, Dispatcher)Risk read, OAuth scope servflo.read. Read: reads only.MCP tool qrCodes_stats (toolset marketing)
Name In Type Required Description qrCodeIdpath string Yes daysquery integer No 7–365.
curl "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes/{qrCodeId}/stats" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields Field Type Description 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
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.
Permission website.read (Owner, Admin, Dispatcher)Risk read, OAuth scope servflo.read. Read: reads only.MCP tool qrCodes_image (toolset marketing)
Name In Type Required Description qrCodeIdpath string Yes formatquery enum No One of svg, png. Default svg. sizequery integer No 256–4096.
curl "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /qr-codes/{qrCodeId}/image" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields Field Type Description fileNamestring contentTypestring base64string