FreeDynamicQRCode

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.

RESTful JSON APIEnterprise plans

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

Authorization: Bearer fdqr_live_sk_xxxxxxxxxxxxxxxxxxxx

API access is available on Enterprise plans. Contact us to request access.

Endpoint reference

RESTful endpoints

Base URLhttps://api.freedynamicqrcode.com
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/abc123

Python

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/abc123

Rate 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.