For developers · Pro

What people build on the API

Anything you can do by hand in the wizard, you can do in code — create codes, list them, pull scan history — plus a signed webhook fired on every scan. Here's what that looks like in practice.

Generate hundreds of unique codes in one pass

A print shop or agency scripts the whole run — one code per SKU, per event badge, per direct-mail piece — instead of clicking through the wizard by hand for each one.

curl -X POST https://qrfox.io/api/v1/codes \
  -H "Authorization: Bearer $QRFOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "url",
    "fields": { "url": "https://shop.example.com/p/SKU-1042" },
    "label": "SKU-1042"
  }'

# → { "short_code": "8fK2p1", "destination_url": "...", ... }

Get pinged the second someone scans

Every scan fires a signed webhook to your endpoint — route it into Slack for a live sales-floor alert, or straight into your CRM to log a lead the moment it walks in.

POST https://yourapp.com/webhooks/qrfox
X-QRfox-Signature: sha256=…

{
  "event": "scan",
  "short_code": "8fK2p1",
  "scanned_at": "2026-08-08T14:32:01Z",
  "device": "mobile",
  "os": "iOS",
  "browser": "Safari",
  "country": "US",
  "referrer": null
}

Show clients their own scan data, in your UI

Agencies pull scan history straight into a white-labeled report instead of handing clients a QRfox login — the branding stays yours end to end.

curl https://qrfox.io/api/v1/codes/8fK2p1/scans \
  -H "Authorization: Bearer $QRFOX_KEY"

# → [{ "scanned_at": "...", "device": "mobile",
#      "os": "iOS", "browser": "Safari",
#      "country": "US" }, …]

Tie a code to every piece of equipment you own

Ops teams generate a code per asset tag on intake, list them alongside internal records, and delete the code when a unit is retired — no orphaned labels floating around.

curl https://qrfox.io/api/v1/codes \
  -H "Authorization: Bearer $QRFOX_KEY"

curl -X DELETE https://qrfox.io/api/v1/codes/8fK2p1 \
  -H "Authorization: Bearer $QRFOX_KEY"