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
Enterprise plan
Everything you need at scale
The Enterprise plan includes full API access plus dedicated infrastructure and support.
REST API access
Full CRUD API for QR codes, analytics, webhooks, and account management. Bearer token authentication with configurable scopes (read, write, admin).
Bulk QR code generation
Create thousands of QR codes in a single batch API call. Ideal for product packaging, event tickets, and marketing campaigns. Async processing with webhook notification on completion.
Unlimited dynamic QR codes
No cap on the number of dynamic QR codes. Create, edit, and manage as many as your business needs — no per-QR pricing.
Custom short URL domain
Use your own branded domain (e.g., qr.yourbrand.com) instead of vsn.to for all short URLs. We handle DNS setup and SSL provisioning.
Scan analytics API
Pull scan data programmatically — time series, geographic breakdown, device/browser stats, unique vs repeat visitors. Export to your own BI tools and dashboards.
Webhook notifications
Receive real-time HTTPS POST notifications for scan events, QR lifecycle changes (created, updated, deactivated), and system events. HMAC signature verification included.
White-label QR generation
Embed QR code generation into your own SaaS product under your branding. Custom UI components, your domain, our infrastructure.
SSO & team management
SAML 2.0 / OIDC single sign-on integration. Role-based access control with admin, editor, and viewer roles. Per-team API key scoping and usage quotas.
SLA & uptime guarantee
99.9% uptime SLA for API endpoints and redirect service. Dedicated monitoring with PagerDuty integration. Guaranteed response times for support tickets.
Dedicated account manager
Named account manager for onboarding, integration support, and ongoing optimization. Direct Slack channel or email access — no ticket queues.
Priority support
4-hour response time for critical issues (P1). Slack Connect or dedicated email channel. Integration engineering support during onboarding.
Custom integrations
Need Zapier, HubSpot, Salesforce, or custom CRM integration? We build it for you as part of your Enterprise contract.
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.