SnapQR API
Create and manage QR codes and short links programmatically. No API key, no signup — the token returned at creation is the credential for that link. Base URL: https://snapqr.link/api
Create a link / dynamic QR
POST /api/links
Content-Type: application/json
{
"kind": "url", // url | appstore | vcard | page
"target": "https://example.com/menu",
"alias": "summer-menu", // optional custom code
"title": "Summer menu", // optional
"campaign": "summer", // optional grouping tag
"utm": { // optional, auto-appended on redirect
"utm_source": "poster", "utm_medium": "qr", "utm_campaign": "summer2026"
}
}
Response 201:
{
"code": "summer-menu",
"short_url": "https://snapqr.link/summer-menu",
"qr_png": "https://snapqr.link/summer-menu/qr.png",
"qr_svg": "https://snapqr.link/summer-menu/qr.svg",
"manage_url": "https://snapqr.link/m/<token>",
"token": "<token>" // keep secret — grants edit + analytics access
}
For kind: "appstore" send ios, android, fallback URLs. For kind: "vcard" send firstName, lastName, org, jobTitle, phone, email, website. For kind: "page" send headline, description and a links array of {label, url}.
Manage & analytics
GET /api/manage/{token} # link details + totals
PUT /api/manage/{token} # update target/payload/utm/active/title
DELETE /api/manage/{token} # delete link + analytics
GET /api/manage/{token}/stats?days=30
GET /api/manage/{token}/scans.csv # raw scan export
/stats returns totals, unique visitors, a per-day series and top-10 breakdowns for device, OS, browser, country, city, referrer and QR-vs-link source.
Bulk creation
POST /api/bulk # JSON array of link objects, or {"csv": "alias,target,title,campaign\n..."}
POST /api/bulk?format=csv # same, responds with a CSV of created codes
Max 500 rows per request.
QR images
GET /api/qr?data=hello&size=1024&fg=%23000000&bg=%23ffffff&format=png|svg&ecl=M
GET /{code}/qr.png GET /{code}/qr.svg # QR for an existing short code
Custom domains
POST /api/domains {"domain": "qr.yourbrand.com"}
Then point a CNAME for that hostname at snapqr.link. TLS certificates are issued automatically on first visit, and your short codes resolve on your own domain.
Limits
Fair-use rate limits apply per IP (60 links/hour, 10 bulk requests/hour, 300 QR images/hour). Destinations must be public http(s) URLs. Codes serving malware or phishing are removed.
Example: curl
curl -X POST https://snapqr.link/api/links \
-H "Content-Type: application/json" \
-d '{"kind":"url","target":"https://example.com","alias":"demo-123"}'