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

关于 SnapQR

使用免费的 REST API 自动创建二维码和短链接:动态二维码、批量生成、分析导出、UTM 标记和自定义域名。无需 API 密钥——几分钟即可开始集成。

常见问题

SnapQR 真的免费吗?有什么隐藏条件吗?

是的——创建二维码、动态二维码、短链接和分析都是 100% 免费的,无需账户。没有水印,二维码也不会过期。

静态二维码和动态二维码有什么区别?

静态二维码将内容直接编码在图案中,永远无法更改。动态二维码编码的是一个你可控制的短跳转网址,因此你可以在打印后更改它的指向,并跟踪每一次扫描。

我的二维码会过期吗?

不会。静态二维码在设计上永远有效,动态二维码也可免费保持活动状态。

打印后如何编辑二维码?

创建动态二维码时,你会获得一个私密的管理网址。打开它,输入新的目标地址并保存——每一份已打印的副本都会立即指向新页面。

我可以给二维码添加徽标吗?

可以。在设计面板中上传任意图片——它会以高纠错级别嵌入到中心,因此二维码仍能可靠扫描。徽标完全在你的浏览器中处理。

我能获得哪些分析数据?

每个二维码:总扫描次数、独立访客、扫描随时间的变化、设备类型、操作系统、浏览器、国家、城市和来源——并支持 CSV 导出。IP 地址绝不会被存储。

我可以下载哪些文件格式?

最高 4096 px 的 PNG(在 300 DPI 下约为 13 英寸)以及可无限缩放的 SVG 矢量图——两者都适合专业打印。

我可以为短链接使用自己的域名吗?

可以——将 CNAME 指向 snapqr.link 并通过我们的 API 注册该域名。HTTPS 证书将自动签发。