Skip to main content
The GetQR API is in beta and is available to selected workspaces. Details may change before the general release.
Style a QR code with the optional styles, frameOptions and logoOptions objects when you create or update it. All fields are optional, and defaults apply to anything you leave out. The same three objects work on QR codes, templates and bulk creations. Unknown shapes, frames or logos are rejected with 422.

Example design object

Send it with the rest of the QR code:

Styles

The styles object sets the pattern shapes and colors.
  • Colors. Hex values only: #RGB or #RRGGBB.
  • Error correction. Always Q, and not an input. Sending styles.qrOptions gets 422.
  • Branded and AI designs. Can’t be set through the API. Sending styles.logoQrArt gets 422.
  • Content. styles.data is ignored. The image always encodes the QR code’s content.
Keep enough contrast between the foreground and background colors, with a dark foreground on a light background. Low-contrast codes may not scan. See Colors.

Frames

The frameOptions object adds a decorative frame with a call to action around the QR code.
none, card, card-1, card-2, card-3, card-4, card-5, card-7, card-8, card-9, card-10, card-11, card-12, card-13, card-14, card-15, card-hor, wreath, envelope, waitress, coffee-cup, scooter, clipboardcard-hor shows no label.
Any frame works with any QR code type. The grouping matches the dashboard.
Frames without a label have no call-to-action field in the dashboard, and the rule that textColor must differ from color doesn’t apply to them.

Logos

The logoOptions object places a logo in the center of the QR code. Set type to pick the kind of logo. Set type to suggested and pick an id from the catalog. Use logo-none for no logo.
logo-none, logo-website-3, logo-website-4, logo-link, logo-pdf-1, logo-pdf-2, logo-pdf-3, logo-picture-1, logo-picture-2, logo-picture-3, logo-picture-5, logo-picture-7, logo-picture-8, logo-video-1, logo-video-5, logo-whatsapp-1, logo-whatsapp-2, logo-whatsapp, logo-wifi-1, logo-wifi-2, logo-wifi-3, logo-wifi, logo-airbnb, logo-apple, logo-binance, logo-bitcoin, logo-bolt-food, logo-booking, logo-facebook, logo-glovo, logo-google, logo-google-maps, logo-google-play, logo-instagram, logo-linkedin, logo-location, logo-mail, logo-paypal, logo-stripe, logo-venmo, logo-cashapp, logo-braintree, logo-square, logo-verifone, logo-google-pay, logo-apple-pay, logo-klarna, logo-ayden, logo-giropay, logo-cartes-bancaires, logo-restaurant, logo-scan-me, logo-tripadvisor, logo-trustpilot, logo-uber-eats, logo-youtube, logo-spotify, logo-spotify-black
1

Upload the image

Register it with Files using "target": "logo", then upload the file to the returned uploadUrl.
2

Reference the file

Set type to uploaded and fileId to the returned fileId. fileId is required, and it must be an ID returned by the Files endpoint.
An unknown file, an unfinished upload or a file uploaded for another target is rejected.

Logo size

scalePercent sets the logo size as a percentage of the QR code. It takes a whole number from 15 to 45. The default is 25. Other values, including ratios such as 0.25, get 422.

Updating a design

  • Partial updates. On Update a QR code, styles, frameOptions and logoOptions are merged into the stored design. A partial object changes only what it names.
  • Changing the logo. Picking another logo replaces the stored one but keeps its scalePercent.
  • Templates. With templateId on create, the fields you send are merged on top of the template’s design. See Templates.
  • Branded and AI designs. A QR code with designKind branded or ai was made in the dashboard. The API can’t edit its picture, but keeps it when you change other fields.
  • Reading a design. Responses return the stored design under design, in the same shape as the request fields, so you can send it back.

Common issues

Remove styles.qrOptions from the request.
Shorten frameOptions.text to 12 characters or fewer.
textColor and color are the same on a frame that shows a label. Pick a contrasting textColor.
Send scalePercent as a whole percentage, for example 25, not 0.25.
Corners always use dotsOptions.color. cornersSquareOptions.color and cornersDotOptions.color have no effect.

What’s next

QR codes

Templates

Files

Design overview