Enterprise API
The FreeDynamicQRCode API
Integrate QR code generation, link management, and scan analytics directly into your platform. Built for teams, SaaS products, and high-volume automation.
Use cases
Built for every integration scenario
From marketing automation to white-label SaaS products, the FreeDynamicQRCode API handles your most demanding use cases.
Bulk QR generation
Generate thousands of QR codes in a single API call for marketing campaigns, event tickets, and product packaging.
Dynamic link management
Update QR destinations programmatically via API — no reprinting required, no downtime.
Scan analytics retrieval
Pull scan data into your BI tools and dashboards. Time series, geo breakdown, and device data included.
White-label QR generation
Embed QR generation into your own SaaS product. Your branding, your domain, our infrastructure.
Automated PDF QR creation
Generate print-ready PDF QR codes for document management systems and automated workflows.
Webhook notifications
Receive real-time scan events and QR lifecycle notifications to trigger downstream automation.
Custom short URL management
Manage branded vsn.to slugs programmatically — create, update, and redirect at scale.
Team & org management
Manage multi-user access, API key scoping, and per-team quota allocation via the API.
Authentication
API key authentication
API keys are issued per organization on Enterprise plans. Pass your key via the Authorization header as a Bearer token. Keys have configurable rate limits and can be scoped to specific operations — read-only, write, or admin.
Request header
API access is available on Enterprise plans. Contact us to request access.
Endpoint reference
RESTful endpoints
POST/v1/qr/create
Create a new QR code with custom destination, label, and style options.
Request
{
"type": "url",
"destination": "https://example.com/landing",
"label": "Campaign A",
"style": {
"dotColor": "#1a1a2e",
"bgColor": "#ffffff"
}
}Response
{
"id": "qr_01J3K9M2P8X",
"shortUrl": "https://vsn.to/abc123",
"destination": "https://example.com/landing",
"type": "url",
"createdAt": "2026-04-08T12:00:00Z"
}GET/v1/qr/:id
Retrieve details for a specific QR code including scan count and status.
Response
{
"id": "qr_01J3K9M2P8X",
"shortUrl": "https://vsn.to/abc123",
"destination": "https://example.com/landing",
"label": "Campaign A",
"scans": 1423,
"status": "active",
"createdAt": "2026-04-08T12:00:00Z"
}PATCH/v1/qr/:id
Update the destination URL or label of an existing QR code without reprinting.
Request
{
"destination": "https://example.com/new-landing",
"label": "Campaign A — Updated"
}Response
{
"id": "qr_01J3K9M2P8X",
"destination": "https://example.com/new-landing",
"updatedAt": "2026-04-08T14:30:00Z"
}DELETE/v1/qr/:id
Permanently delete a QR code and deactivate its short URL.
Response
{
"deleted": true,
"id": "qr_01J3K9M2P8X"
}GET/v1/qr/:id/analytics
Get detailed scan analytics including time series, geo breakdown, and device split.
Response
{
"id": "qr_01J3K9M2P8X",
"totalScans": 1423,
"uniqueScans": 891,
"timeSeries": [
{
"date": "2026-04-07",
"scans": 203
},
{
"date": "2026-04-08",
"scans": 187
}
],
"topCountries": [
{
"country": "US",
"scans": 612
},
{
"country": "GB",
"scans": 241
}
],
"devices": {
"mobile": 72,
"desktop": 22,
"tablet": 6
}
}POST/v1/qr/bulk
Create multiple QR codes in a single request — ideal for marketing campaigns and events.
Request
{
"codes": [
{
"destination": "https://example.com/product/1",
"label": "Product 1"
},
{
"destination": "https://example.com/product/2",
"label": "Product 2"
}
]
}Response
{
"created": 2,
"codes": [
{
"id": "qr_01J3K9M2P8X",
"shortUrl": "https://vsn.to/abc123"
},
{
"id": "qr_01J3K9M2P8Y",
"shortUrl": "https://vsn.to/def456"
}
]
}GET/v1/qr
List all QR codes in your organization with pagination support.
Response
{
"data": [
{
"id": "qr_01J3K9M2P8X",
"label": "Campaign A",
"scans": 1423,
"status": "active"
}
],
"total": 47,
"page": 1,
"limit": 20
}POST/v1/qr/:id/logo
Upload a custom logo image (PNG or SVG, max 2 MB) to embed in a QR code.
Request
multipart/form-data file: <binary PNG or SVG, max 2 MB>
Response
{
"logoUrl": "https://cdn.freedynamicqrcode.com/logos/qr_01J3K9M2P8X.png",
"updatedAt": "2026-04-08T12:05:00Z"
}GET/v1/account/usage
Retrieve API usage statistics for the current billing period.
Response
{
"plan": "enterprise",
"period": "2026-04",
"qrCodesCreated": 4821,
"apiRequests": 92311,
"limits": {
"qrCodesPerMonth": 50000,
"apiRequestsPerMinute": 1000
}
}POST/v1/webhooks
Register a webhook endpoint to receive real-time scan and QR code lifecycle events.
Request
{
"url": "https://yourapp.com/webhooks/qr-scans",
"events": [
"scan.created",
"qr.updated"
],
"secret": "whsec_..."
}Response
{
"id": "wh_01J3K9M2P8Z",
"url": "https://yourapp.com/webhooks/qr-scans",
"events": [
"scan.created",
"qr.updated"
],
"status": "active",
"createdAt": "2026-04-08T12:00:00Z"
}Code samples
Start integrating in minutes
All examples demonstrate creating a QR code via POST /v1/qr/create.
curl
curl -X POST https://api.freedynamicqrcode.com/v1/qr/create \
-H "Authorization: Bearer fdqr_live_sk_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "url",
"destination": "https://example.com/landing",
"label": "Campaign A"
}'Node.js
const response = await fetch('https://api.freedynamicqrcode.com/v1/qr/create', {
method: 'POST',
headers: {
'Authorization': 'Bearer fdqr_live_sk_xxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'url',
destination: 'https://example.com/landing',
label: 'Campaign A',
}),
})
const qr = await response.json()
console.log(qr.shortUrl) // https://vsn.to/abc123Python
import requests
response = requests.post(
'https://api.freedynamicqrcode.com/v1/qr/create',
headers={
'Authorization': 'Bearer fdqr_live_sk_xxxxxxxxxxxxxxxxxxxx',
'Content-Type': 'application/json',
},
json={
'type': 'url',
'destination': 'https://example.com/landing',
'label': 'Campaign A',
}
)
qr = response.json()
print(qr['shortUrl']) # https://vsn.to/abc123Rate limits
Enterprise-grade throughput
API access is gated to Enterprise plans. Custom limits are available on request.
Free
Not available
API access requires an Enterprise plan. Free accounts are limited to the web interface.
Pro
Not available
API access requires an Enterprise plan. Pro plans include all dashboard features but not API keys.
Enterprise
Full access
- 1,000 req/min
- 50,000 QR codes/month
- Custom limits available
- Dedicated support
Coming soon
What's next
→SDKs for Node.js, Python, PHP, and Go
→Webhook support for real-time scan notifications
→Batch operations for high-volume use cases
→OpenAPI spec download for Postman / Swagger UI integration
Ready to integrate?
API access is available on Enterprise plans. Contact us to get your API keys and discuss custom pricing.