The GetQR API is in beta and is available to selected workspaces. Details may change before the general release.
qrType, and the type sets what data must contain. This guide lists the format of every type, a request body that works, and what you can still change once the code is printed.
The examples are request bodies for Create a QR code. Send them like this:
All types at a glance
How a QR code resolves
Every QR code is a short link plus a payload. Two fields carry the content:
Rules for every type:
- Defaults. On create, an omitted or empty
link.urlbecomesdata, and you can leave out the wholelinkobject. When both are sent and differ,link.urlwins. Send them equal, or send onlydata. - What the image encodes. The image encodes the short link for every type except
wifi. So you can change where a printed code leads, and its scans are tracked. A WiFi QR code encodes the network itself: you can’t change it after printing, and its scans aren’t tracked. - Schemes.
link.urlaccepts onlyhttp:,https:,wifi:,mailto:,sms:andbegin:. Anything else, includinggeo:,smsto:,matmsg:andtel:, gets422 Invalid destination URL, even wheredataaccepts it. - Empty data. An empty
dataskips the type check. For a redirect type,link.urlmust then be set, or the call gets400 Missing destination URL. - Shape. Beyond the type check, the server doesn’t validate the payload. A JSON type only has to parse as a JSON object, and a vCard only has to start with
BEGIN:VCARD.
Website
qrType: "website". Dashboard guide: Website QR code.
Request body
422 Expected an http(s) URL, e.g. "https://example.com" for qrType "website".422 Invalid destination URL
Feedback
qrType: "feedback". Dashboard guide: Feedback QR code.
data is the http(s) URL of the feedback form, for example a Google Form or a review page. Everything else works as for Website.
Request body
Payment
qrType: "payment". Dashboard guide: Payment QR code.
data is the provider’s payment URL, for example:
paypal.me, paypal.com/paypalme, cash.app, venmo.com, buy.stripe.com, stripe.com, square.link and payoneer.com. For PayPal, the amount is the last path segment. Any other http(s) URL works too, but the editor won’t split it into provider and amount. Everything else works as for Website.
Request body
qrType: "whatsapp". Dashboard guide: WhatsApp QR code.
data is a wa.me link: the international number in digits without +, optionally with a prefilled text.
api.whatsapp.com/send links. Everything else works as for Website.
Request body
Location
qrType: "location". Dashboard guide: Location QR code.
data is a map URL. Use this format to keep the QR code editable in the dashboard (query_place_id is optional):
geo: URI passes the data check but is rejected as a destination, so don’t use it. Everything else works as for Website.
Request body
App Link
qrType: "app". Dashboard guide: App Link QR code.
Request body
422 Invalid URL400 Missing destination URL
qrType: "email". Dashboard guide: Email QR code.
Request body
422 Expected a mailto URI, e.g. "mailto:[email protected]?subject=Hello" for qrType "email".
SMS
qrType: "sms". Dashboard guide: SMS QR code.
Request body
422 Expected an SMS URI, e.g. "sms:+14155550123?body=Hello" for qrType "sms".
WiFi
qrType: "wifi". Dashboard guide: WiFi QR code.
Request body
422 Expected a Wi-Fi payload, e.g. "WIFI:T:WPA;S:MyNetwork;P:secret;H:false;" for qrType "wifi".
PDF, image and video
qrType: "pdf", "image" or "video". Dashboard guides: PDF, Image, Video.
One file per QR code: PDF bundles and image galleries aren’t available on the API. See Not supported via the API.
fileId, see Files.
vCard
qrType: "vcard". Dashboard guide: vCard QR code.
The landing page and editor read only the line forms below. Other variants, such as
TEL;CELL: or EMAIL;TYPE=INTERNET:, are stored but don’t appear on the page.
N:<last>;<first>;;;: last and first name. Builder: both required, up to 40 characters.FN:<first> <last>: not read by the page. The dashboard list label comes from it.ORG:<company>andTITLE:<role>: company and role. Builder: up to 40 characters.TEL;TYPE=HOME:,TEL;TYPE=CELL:,TEL;TYPE=WORK:,TEL;TYPE=FAX:: phone, mobile, work and fax numbers (+and digits).EMAIL:<email>: email address.URL:<url>: website.NOTE:<text>: summary. Escape\\,\n,\;and\,. Builder: up to 200 characters.ADR:;;<street>;<city>;<state>;<zip>;<country>: address.X-SOCIALPROFILE;TYPE=<platform>:<url>orURL;TYPE=<PLATFORM>:<url>: social links, one line per platform.PHOTO;VALUE=URI:<url>: profile image URL. Wins over any file ID.X-GETQR-IMAGE-FILEID:<fileId>: profile image (logotarget).X-GETQR-PAGE-LOGO-FILEID:<fileId>: page logo (logotarget).X-GETQR-LANDING-THEME:p|<0-4>orX-GETQR-LANDING-THEME:c|#RRGGBB|#RRGGBB|#RRGGBB: landing theme, either a preset index (0 to 4) or custom background, button and icon colors.
facebook, whatsapp, instagram, youtube, tiktok, messenger, snapchat, linkedin, x, reddit, pinterest, telegram, wechat, viber, line.
Request body
422 Expected a vCard payload starting with "BEGIN:VCARD" for qrType "vcard".
Social Media
qrType: "social". Dashboard guide: Social Media QR code.
Fields in
data:
Request body
422 Expected a JSON object describing the social profile page for qrType "social".
Multi-Link
qrType: "multilink". Dashboard guide: Multi-Link QR code.
The fields in
data are those of Social Media, except that firstName, lastName and summary are replaced by:
In
customItems, logoFileId is optional: a fallback icon is shown. Builder: at least one social link or one non-empty custom item.
Request body
422 Expected a JSON object describing the multi-link page for qrType "multilink".
Event
qrType: "event". Dashboard guide: Event QR code.
Fields in
data:
Event types
Event types
conference, seminar, workshop, training, webinar, meetup, networking, corporateEvent, productLaunch, tradeShow, jobFair, fundraiser, charity, wedding, engagement, birthday, anniversary, babyShower, graduation, reunion, party, religious, funeralMemorial, ceremony, concert, festival, clubNight, theater, comedy, filmScreening, exhibition, sports, tournament, raceMarathon, fitnessClass, foodDrink, market, openHouse, community, schoolEvent, kids, travelTourFacilities
Facilities
Request body
422 Expected a JSON object describing the event page for qrType "event".
Files in QR codes
Register a file with Files, upload it, then pass itsfileId. Use the target that matches the use:
pdf,image,video. The content of a PDF, image or video QR code.logo. Profile images, page logos, custom-link icons and center logos.
fileId errors, returned on create and on PATCH when fileId is sent:
File IDs inside a payload (
fileId, pageLogoFileId, customItems[].logoFileId, X-GETQR-*-FILEID lines) aren’t validated. They only render when uploaded with the logo target. The QR code claims them, so cleanup leaves them alone.
Switching type
You can changeqrType with Update a QR code. Send data that matches the new type: the stored payload belongs to the old type, so a switch without it is rejected.
After an update, the destination is resolved in this order:
vcard,social,multilink,event: always the hosted page.- A PDF bundle or image gallery made in the dashboard: its landing page.
pdf,image,video: the file URL (a newfileId, else the stored one).link.url, when sent.- Changed
data. - The stored URL.
- Out of
pdf,imageorvideo.fileIdand any bundle or gallery are cleared. - Into
pdf,imageorvideo. SendfileIdtoo, or the stored one is reused, which may be a vCard photo. - Out of
app. The app name,link.iosandlink.androidare cleared, so phones follow the new destination. - Into
wifi. The image switches to the raw payload. Codes already printed still hold the short link, which now redirects to awifi:URL. - Out of
wifi. Printed codes keep their old network. - Into
vcard,social,multilinkorevent. The short link is pointed at the new hosted page. - Out of
vcard,social,multilinkorevent. Send the newdata. The destination follows it.
link.url gets 422.
Not supported via the API
These dashboard features aren’t part of the v1 API. Unknown fields are dropped without an error, so sending them has no effect.
Bundles and galleries made in the dashboard can still be read, paused and deleted through the API, but their files can’t be changed through it.
Common issues
422 Invalid destination URL
422 Invalid destination URL
link.url uses a scheme the short link can’t redirect to, such as geo:, smsto:, matmsg: or tel:. Use the formats on this page.400 Missing destination URL
400 Missing destination URL
data is empty and there is no link.url. For app, set at least one of link.ios, link.android, link.url or data.The response data is a short link, not my URL
The response data is a short link, not my URL
For link types, the stored
data is the short link. Read the destination from url.The landing page is missing details from my payload
The landing page is missing details from my payload
The page reads only the fields and line forms listed for the type. Other fields are stored but not shown.