QR Code Generator API

Generate QR codes programmatically with a simple REST API. Included with all paid subscriptions.

All Paid PlansREST API7 QR TypesSVG & PNG
Quick Start
POST https://api.useqrkit.com/v1/qr-codes
{ "target": { "type": "url", "destination": "https://example.com" } }

Quick start

Get Started in 60 Seconds

1

Make a Request

Create a QR code with a single POST request. Authenticate with your API key as a Bearer token — the response includes a hosted SVG image URL you can embed anywhere.

curl -X POST "https://api.useqrkit.com/v1/qr-codes" \
  -H "Authorization: Bearer qr_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target": {"type": "url", "destination": "https://example.com"}}'
2

Customize Your Code

Add a design object to control colors, gradients, shapes, error correction, and logo:

JSON
{
  "target": { "type": "url", "destination": "https://example.com" },
  "design": {
    "gradient": { "start": "#1a73e8", "end": "#004bb8", "type": "linear-top-to-bottom" },
    "shapes": { "body": "rounded" },
    "logo": { "url": "https://example.com/logo.svg" },
    "error_correction": "H"
  }
}
3

Choose Your QR Type

Set target.type to generate WiFi, vCard, SMS, or other QR code types. Each type takes structured fields — the API handles the correct data encoding automatically.

JSON
{
  "target": {
    "type": "wifi",
    "ssid": "MyNetwork",
    "password": "secret123",
    "encryption": "WPA"
  }
}

Try it

API Playground

Build your QR code generator API request interactively. Adjust the parameters below and copy the generated cURL command directly into your project.

Generated API Request

POST /v1/qr-codes — JSON body
{
  "name": "My campaign",
  "target": {
    "type": "url",
    "destination": "https://example.com"
  }
}
cURL
curl -X POST "https://api.useqrkit.com/v1/qr-codes" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "My campaign",
  "target": {
    "type": "url",
    "destination": "https://example.com"
  }
}'

QR types

QR Code Types

TypeParameterStructured FieldsUse Case
URL"type": "url"destinationWebsite links, landing pages (dynamic — editable later)
WiFi"type": "wifi"ssid, password, encryptionGuest WiFi access
vCard"type": "vcard"vcard.your_name, email, phone_mobile, company_name, ...Contact cards, employee badges (hosted profile page)
SMS"type": "sms"phone, messageCustomer support, feedback
Email"type": "email"email, subject, messageContact links
Event"type": "event"title, location, start, endCalendar invites, event check-in
Plain Text"type": "text"textAsset tags, serial numbers

Each type is automatically encoded using the correct protocol (WIFI:, SMSTO:, mailto:, VEVENT, etc.). URL and vCard codes are dynamic (vCard opens a hosted contact page); WiFi, email, SMS, text, and event codes are static — the payload is encoded directly into the image. You can also pass a pre-encoded payload via target.destination if you prefer to encode yourself.

How it works

What Is a QR Code API?

A QR code generator API lets developers generate QR codes programmatically through HTTP requests instead of using a manual web-based QR code generator. You send a request with your data and customization parameters, and the API returns a QR code image or data URI.

This is essential when QR codes need to be generated dynamically — inside a web application, mobile app, automated workflow, or print pipeline. Rather than manually creating each code, the API integrates directly into your existing systems and generates codes on demand.

Common use cases for a QR code API include generating unique codes for e-commerce order confirmations, embedding QR codes in automated emails, adding dynamic codes to invoices and shipping labels, and integrating QR-based authentication into mobile applications. For non-developers who need batch generation without code, the bulk QR code generator creates hundreds of codes from a CSV or Excel file.

QRKIT's API supports both static and dynamic QR codes. Static codes encode data permanently, while dynamic QR codes use a redirect URL that can be changed anytime, with scan analytics tracking. Dynamic codes never expire as long as your subscription is active.

Where to Integrate the QR Code API in Your Systems

Teams plug the QR code API into the systems that already generate documents and messages — so every receipt, email, invoice, or check-in pass can carry a unique code. Four patterns cover most integrations:

E-Commerce & Receipts

Generate a unique QR code for every order confirmation, receipt, or return label. Customers scan to track shipments, access digital receipts, generate payment QR codes at checkout, or initiate returns — all without typing a URL.

Marketing & Print Campaigns

Embed QR codes in automated email campaigns, direct mail, or packaging. Use dynamic codes so you can update the destination after printing and track every scan with analytics, including social media QR codes for campaigns across every channel.

Document Generation

Add QR codes to invoices, shipping labels, event tickets, and certificates during PDF generation. The API returns crisp SVG (vector) or PNG at any size up to 4000px for pixel-perfect embedding in any document pipeline.

Authentication & Access Control

Generate one-time QR codes for two-factor authentication, event check-in, or temporary access passes. Pair with password-protected QR codes for an additional security layer.

API reference

API Parameters

Request Body — POST /v1/qr-codes

ParameterTypeRequiredDefaultDescription
targetobjectYesWhat the code points to: type (url, wifi, vcard, sms, email, event, text) plus that type's structured fields
namestringNoautoDisplay name in your dashboard
designobjectNoColors, gradient, shapes, eye colors, logo, error correction (see below)
target.utmobjectNoUTM source/medium/campaign baked into the destination URL
folder_idstringNoFolder to place the code in (e.g. fld_12)
tagsstring[]NoUp to 10 tags for your own bookkeeping

Design Object

ParameterTypeDefaultDescription
colorsobject#000 / #fffforeground and background hex colors
gradientobjectstart, end, and type (4 linear directions or radial)
shapesobjectsquarebody (6 patterns), eye_frame, eye_ball
eye_colorsobjectCustom frame and ball colors for the corner eyes
logoobjecturl (public PNG/JPG/SVG, max 2MB) and clear_background
error_correctionstringQL (7%), M (15%), Q (25%), H (30%)

Authentication

ParameterTypeDescription
AuthorizationheaderBearer token with your API key: Authorization: Bearer qr_live_... — created in the dashboard with granular scopes

Error Handling & Response Codes

The API returns standard HTTP status codes. Successful requests return the QR code object as JSON (with a hosted image URL). Errors return a JSON body with a machine-readable code, a message, and a request id for support.

StatusMeaningCommon Cause
200 / 201SuccessQR code object returned as JSON with its hosted image URL
400Bad RequestMissing or invalid parameter (e.g. empty text, size out of range)
401UnauthorizedMissing or invalid API key
403ForbiddenMissing scope, or the workspace plan doesn't include this feature
422UnprocessablePlan QR limit reached, or an invalid type combination
429Rate Limit ExceededPer-minute limit or monthly quota exceeded — wait for the Retry-After header
500Server ErrorInternal error — retry with exponential backoff
JSON Error Response
{
  "error": {
    "code": "invalid_request",
    "message": "target.destination is required for url QR codes",
    "doc_url": "https://docs.useqrkit.com/errors#invalid_request",
    "request_id": "req_x1y2z3a4b5c6d7e8"
  }
}

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Use these to implement client-side throttling and stay inside your per-minute limit and monthly quota.

SDKs & client libraries

SDKs & Client Libraries — Use It From Any Language

The QR code generator API is a standard JSON REST API — no SDK required. If your language has an HTTP client, you're ready: requests in Python, fetch in JavaScript, cURL from the shell. Here's a complete workflow — create a dynamic code, change its destination later, and download a print-ready PNG:

import requests

API = "https://api.useqrkit.com/v1"
HEADERS = {"Authorization": "Bearer qr_live_YOUR_KEY"}

# 1. Create a dynamic QR code
qr = requests.post(f"{API}/qr-codes", headers=HEADERS, json={
    "name": "Spring promo",
    "target": {"type": "url", "destination": "https://example.com/promo"},
}).json()
print(qr["id"], qr["image_url"])

# 2. Change the destination later — no reprint needed
requests.patch(f"{API}/qr-codes/{qr['id']}", headers=HEADERS, json={
    "target": {"destination": "https://example.com/new-promo"},
})

# 3. Download a print-ready PNG
png = requests.get(
    f"{API}/qr-codes/{qr['id']}/download",
    headers=HEADERS,
    params={"format": "png", "size": 2000},
)
with open("qr-code.png", "wb") as f:
    f.write(png.content)

The REST surface covers the full product: dynamic QR code creation, destination updates, scan analytics, folders, and batch creation of up to 1,000 codes per request. The full endpoint reference with an interactive playground lives at docs.useqrkit.com.

Dynamic codes

Dynamic QR Codes

QRKIT's dynamic QR code generator API goes beyond static codes. Dynamic QR codes use a short redirect URL — so you can update the destination anytime without reprinting the physical code. Create, update, and track codes programmatically through the REST API.

Create a dynamic QR code

bash
curl -X POST "https://api.useqrkit.com/v1/qr-codes" \
  -H "Authorization: Bearer qr_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target": {"type": "url", "destination": "https://example.com/promo"}}'

Update the destination

bash
curl -X PATCH "https://api.useqrkit.com/v1/qr-codes/qr_123" \
  -H "Authorization: Bearer qr_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target": {"destination": "https://example.com/new-promo"}}'

Retrieve scan analytics

bash
curl "https://api.useqrkit.com/v1/qr-codes/qr_123/analytics" \
  -H "Authorization: Bearer qr_live_YOUR_KEY"
JSON Response
{
  "object": "analytics",
  "qr_code_id": "qr_123",
  "total_scans": 1247,
  "scans_by_day": [{ "date": "2026-06-01", "count": 82 }, ...],
  "countries": [{ "name": "United States", "count": 412 }, ...],
  "devices": [...],
  "operating_systems": [...],
  "browsers": [...]
}

Dynamic QR codes require an API key and a paid plan. Detailed scan analytics are available both through the API and the QRKIT dashboard.

Pricing

API Access & Rate Limits

API access is included with every paid subscription — no separate API add-on or per-request fees. Your plan determines your request limits:

Starter

500

requests / month

20 / minute

Plus

3,000

requests / month

60 / minute

Pro

10,000

requests / month

120 / minute

Ultra & Agency

50,000

requests / month

300 / minute

All paid plans include the full API feature set: static and dynamic QR codes, all 7 QR types, SVG and PNG output, logo embedding, custom colors and gradients, and scan analytics. Batch creation is available from Plus up. High-volume teams and agencies get the 50,000-request Ultra and Agency tiers. See pricing plans for full details and current rates.

Migration

Migrating from Google Image Charts QR API

Google deprecated its Image Charts API (including QR code generation) in 2019. If you're still using chart.googleapis.com URLs, the migration path is one create call per code: instead of hot-linking a throwaway chart URL, you create the code once and embed the permanent hosted image it returns.

Before (Google Image Charts)

URL
https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=Hello+World

After (QRKIT API)

bash
curl -X POST "https://api.useqrkit.com/v1/qr-codes" \
  -H "Authorization: Bearer qr_live_YOUR_KEY" \
  -d '{"target": {"type": "text", "text": "Hello World"}}'
# → returns a permanent image_url to embed

Unlike a fire-and-forget chart URL, every code you create is stored in your workspace — you can rename it, restyle it, and organize it later. QRKIT also supports features Google's API never offered: custom colors and gradients, logo embedding, SVG output, and dynamic QR codes with scan analytics and editable destinations.

QR Code API — Frequently Asked Questions

Get started

Start Building with the QR Code Generator API

Integrate the QR code generator API into your application and generate static and dynamic QR codes on demand. API access is included with all paid subscriptions.

Included with all paid plansSimple JSON REST APIcURL, Python, JS & PHP examples