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"}'

About SnapQR

Automate QR code and short link creation with a free REST API: dynamic codes, bulk generation, analytics export, UTM tagging and custom domains. No API key required — start integrating in minutes.

Frequently asked questions

Is SnapQR really free? What's the catch?

Yes — creating QR codes, dynamic codes, short links and analytics are 100% free with no account required. There is no watermark and codes don't expire.

What is the difference between a static and a dynamic QR code?

A static QR code encodes your content directly in the pattern and can never be changed. A dynamic QR code encodes a short redirect URL you control, so you can change where it points after printing and track every scan.

Do my QR codes expire?

No. Static codes never stop working by design, and dynamic codes stay active for free.

How do I edit a QR code after printing?

When you create a dynamic code you get a private manage URL. Open it, enter the new destination and save — every printed copy instantly points to the new page.

Can I add my logo to a QR code?

Yes. Upload any image in the Design panel — it is embedded in the center with high error correction so the code still scans reliably. The logo is processed entirely in your browser.

What analytics do I get?

Per code: total scans, unique visitors, scans over time, device type, operating system, browser, country, city and referrer — with CSV export. IP addresses are never stored.

What file formats can I download?

PNG up to 4096 px (about 13 inches at 300 DPI) and infinitely scalable SVG vector — both suitable for professional printing.

Can I use my own domain for short links?

Yes — point a CNAME at snapqr.link and register the domain via our API. HTTPS certificates are issued automatically.