API reference
Base URL: https://<your-app>/api/v1. Authenticate with Authorization: Bearer qrf_… (create keys in App → API). Rate limit: 600 req/min per key.
Codes
`GET /codes?limit=50&offset=0&tag=rack` Returns your codes with `short_url`, scan counts and health.
`POST /codes` Create one code, or send an **array** for bulk (max 500 per request).
{ "name": "Rack GA-A-01", "mode": "dynamic", "type": "url",
"payload": { "url": "https://wms.example.com/loc/GA-A-01" },
"label": "GA-A-01", "sublabel": "Ground floor", "tags": ["rack"], "meta": { "floor": "G" } }
Types: url text wifi vcard email sms phone whatsapp location event upi app pdf file social review gs1 dpp asset. payload fields mirror the UI (e.g. wifi: ssid, password, auth; gs1: gtin, lot, serial, expiry, domain).
`GET /codes/{id}` · `PATCH /codes/{id}` · `DELETE /codes/{id}` PATCH accepts `destination, payload, design, label, sublabel, tags, meta, is_active, expires_at, scan_limit`. Every change creates a version (roll back in the UI).
Scans
`GET /scans?qr_id=&from=&to=&limit=1000` Raw events: time, country/region/city, device/os/browser, language, referrer, routing variant, outcome. No IP addresses are stored.
Images (no auth)
GET /api/qr?data=<urlencoded>&format=svg|png&size=1024&fg=%23000000&bg=%23ffffff&ecc=M&margin=1