Skip to main content
POST

Authorizations

Authorization
string
header
required

API key in the Authorization header: Bearer qr_live_… or Bearer qr_test_…. Token endpoints take a Clerk session JWT instead.

Body

application/json
target
object
required

What the QR code points to. Each type takes structured fields, or a pre-encoded destination string if you prefer to encode yourself.

name
string

Defaults to "Campaign {code}" / "Static {code}".

Maximum string length: 255
type
enum<string>

Only meaningful for url targets — wifi/email/sms/text/event are always static, vcard always dynamic. Omit to use the type's default.

Available options:
dynamic,
static
design
object

Visual customization. Stored with the code, so the dashboard shows exactly what the API created.

folder_id
string

Folder to place the code in (e.g. fld_12).

tags
string[]
Maximum array length: 10
Maximum string length: 50

Response

QR code created

id
string

qr_… for dynamic, sqr_… for static.

Example:

"qr_123"

object
string
Example:

"qr_code"

kind
enum<string>
Available options:
dynamic,
static
name
string
type
enum<string>
Available options:
url,
text,
email,
sms,
wifi,
event,
vcard
short_code
string
Example:

"AB3D5"

short_url
string | null

null for static codes.

Example:

"https://scan.useqrkit.com/AB3D5"

target
object
design
object | null
folder_id
string | null
Example:

"fld_12"

tags
string[]
image_url
string
Example:

"https://img.useqrkit.com/qr-AB3D5-1717000000000.svg"

download_url
string
Example:

"/v1/qr-codes/qr_123/download"

is_active
boolean
scan_count
integer | null

null for static codes (no tracking).

utm
object | null

UTM parameters (null unless set on a dynamic url code).

created_at
string<date-time>
updated_at
string<date-time>