HonestQR API v1
Create QR codes and read scan statistics programmatically. Get an API key from thedashboard (API keys section), then pass it as a Bearer token.
Base URL: https://qr.zalize.com
Auth: Authorization: Bearer hqr_…
Rate limit: 60 requests per minute per API key (HTTP 429 when exceeded).
Render a static QR code
GET /api/v1/static — returns the image directly. Nothing is stored; static codes never expire. Query params: data (required, max 2048 chars), format (png default or svg), size (px, 128–4096, default 1024).
curl -H "Authorization: Bearer $HONESTQR_KEY" \
"https://qr.zalize.com/api/v1/static?data=https%3A%2F%2Fexample.com&format=png&size=1024" \
-o qr.png
curl -H "Authorization: Bearer $HONESTQR_KEY" \
"https://qr.zalize.com/api/v1/static?data=https%3A%2F%2Fexample.com&format=svg" \
-o qr.svgCreate a dynamic QR code
POST /api/v1/qrcodes — creates an editable short link (https://qr.zalize.com/r/<slug>) and returns image URLs. Body fields: target_url (required),name, folder. Free plan includes 3 dynamic codes.
curl -X POST https://qr.zalize.com/api/v1/qrcodes \
-H "Authorization: Bearer $HONESTQR_KEY" \
-H "Content-Type: application/json" \
-d '{"target_url": "https://example.com/menu", "name": "Menu"}'{
"qrcode": { "id": "…", "slug": "abc1234", "short_url": "https://qr.zalize.com/r/abc1234", … },
"image_png": "https://qr.zalize.com/api/v1/qrcodes/<id>/image?format=png",
"image_svg": "https://qr.zalize.com/api/v1/qrcodes/<id>/image?format=svg"
}Download a dynamic code's image
GET /api/v1/qrcodes/:id/image — query paramsformat (png/svg) and size.
curl -H "Authorization: Bearer $HONESTQR_KEY" \
"https://qr.zalize.com/api/v1/qrcodes/<id>/image?format=svg" -o menu.svgList your QR codes
GET /api/v1/qrcodes
curl -H "Authorization: Bearer $HONESTQR_KEY" https://qr.zalize.com/api/v1/qrcodesScan statistics
GET /api/v1/qrcodes/:id/stats — totals plus breakdowns by day (last 30 days), country and device.
curl -H "Authorization: Bearer $HONESTQR_KEY" https://qr.zalize.com/api/v1/qrcodes/<id>/statsErrors
All errors are JSON: {"error": "…"}. Status codes: 401 missing/invalid key,402 plan limit reached, 404 not found, 429 rate limited.