QR Code Generator API
Generate QR codes programmatically with a simple REST API. Included with all paid subscriptions.
POST https://api.useqrkit.com/v1/qr-codes
{ "target": { "type": "url", "destination": "https://example.com" } }Quick start
Get Started in 60 Seconds
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"}}'Customize Your Code
Add a design object to control colors, gradients, shapes, error correction, and logo:
{
"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"
}
}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.
{
"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
{
"name": "My campaign",
"target": {
"type": "url",
"destination": "https://example.com"
}
}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
| Type | Parameter | Structured Fields | Use Case |
|---|---|---|---|
| URL | "type": "url" | destination | Website links, landing pages (dynamic — editable later) |
| WiFi | "type": "wifi" | ssid, password, encryption | Guest WiFi access |
| vCard | "type": "vcard" | vcard.your_name, email, phone_mobile, company_name, ... | Contact cards, employee badges (hosted profile page) |
| SMS | "type": "sms" | phone, message | Customer support, feedback |
"type": "email" | email, subject, message | Contact links | |
| Event | "type": "event" | title, location, start, end | Calendar invites, event check-in |
| Plain Text | "type": "text" | text | Asset 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
target | object | Yes | — | What the code points to: type (url, wifi, vcard, sms, email, event, text) plus that type's structured fields |
name | string | No | auto | Display name in your dashboard |
design | object | No | — | Colors, gradient, shapes, eye colors, logo, error correction (see below) |
target.utm | object | No | — | UTM source/medium/campaign baked into the destination URL |
folder_id | string | No | — | Folder to place the code in (e.g. fld_12) |
tags | string[] | No | — | Up to 10 tags for your own bookkeeping |
Design Object
| Parameter | Type | Default | Description |
|---|---|---|---|
colors | object | #000 / #fff | foreground and background hex colors |
gradient | object | — | start, end, and type (4 linear directions or radial) |
shapes | object | square | body (6 patterns), eye_frame, eye_ball |
eye_colors | object | — | Custom frame and ball colors for the corner eyes |
logo | object | — | url (public PNG/JPG/SVG, max 2MB) and clear_background |
error_correction | string | Q | L (7%), M (15%), Q (25%), H (30%) |
Authentication
| Parameter | Type | Description |
|---|---|---|
Authorization | header | Bearer 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.
| Status | Meaning | Common Cause |
|---|---|---|
200 / 201 | Success | QR code object returned as JSON with its hosted image URL |
400 | Bad Request | Missing or invalid parameter (e.g. empty text, size out of range) |
401 | Unauthorized | Missing or invalid API key |
403 | Forbidden | Missing scope, or the workspace plan doesn't include this feature |
422 | Unprocessable | Plan QR limit reached, or an invalid type combination |
429 | Rate Limit Exceeded | Per-minute limit or monthly quota exceeded — wait for the Retry-After header |
500 | Server Error | Internal error — retry with exponential backoff |
{
"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
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
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
curl "https://api.useqrkit.com/v1/qr-codes/qr_123/analytics" \
-H "Authorization: Bearer qr_live_YOUR_KEY"{
"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)
https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=Hello+WorldAfter (QRKIT API)
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 embedUnlike 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.
