Create QR Code
Creates a QR code, renders its image (SVG, stored on QRKit’s CDN) and
returns the full object. Requires the qr:write scope.
Each target type takes structured fields (recommended) or a
pre-encoded destination string. Dynamic codes count against your
plan’s QR limit; static codes do not.
GS1 Digital Link codes use a different body, discriminated by
"type": "gs1": they carry an identifier (a GTIN and its qualifiers)
instead of a target. See CreateGs1QrCodeRequest.
Authorizations
API key in the Authorization header: Bearer qr_live_… or Bearer qr_test_…. Token endpoints take a Clerk session JWT instead.
Body
- Option 1
- Option 2
What the QR code points to. Each type takes structured fields, or a
pre-encoded destination string if you prefer to encode yourself.
Defaults to "Campaign {code}" / "Static {code}".
255Chooses the mode where the type allows it. url defaults to dynamic; wifi/text/email/sms/event default to static but accept dynamic (hosted scan page, editable, scan analytics — requires structured target fields, not a pre-encoded destination); vcard always dynamic. Omit to use the type's default.
dynamic, static Visual customization. Stored with the code, so the dashboard shows exactly what the API created.
Folder to place the code in (e.g. fld_12).
1050Response
QR code created
qr_… for dynamic, sqr_… for static.
"qr_123"
"qr_code"
dynamic, static url, text, email, sms, wifi, event, vcard, gs1 "AB3D5"
null for static codes. For a dynamic GS1 code this is the Digital Link URI itself, not <host>/<short_code>.
"https://scan.useqrkit.com/AB3D5"
Present on GS1 codes only. The identifier half is READ-ONLY (R4 — it is
printed); links and overrides are the editable half.
"fld_12"
"https://img.useqrkit.com/qr-AB3D5-1717000000000.svg"
"/v1/qr-codes/qr_123/download"
null for static codes (no tracking).
UTM parameters (null unless set on a dynamic url code).

