Skip to content

Documentation

Make codes that scan, and numbers you can trust

Printing guidelines

  • Minimum size: 2 × 2 cm for close-range scans; roughly one tenth of the expected scanning distance in general.
  • Keep a quiet zone (clear margin) of at least four modules around the code.
  • Use dark modules on a light background with at least 4:1 contrast. Inverted codes fail on some older scanners.
  • Add a logo only with error correction Q or H, and keep it under 30% of the code width.
  • Prefer SVG or PDF for professional print; PNG is ideal for screens and office printers.
  • Always test the final printed material with both an iPhone and an Android phone.

How analytics are calculated

  • Scans: every request to a dynamic code’s short link, excluding detected bots and link-preview crawlers.
  • Unique scans (estimate): one per code per visitor per UTC day, where a visitor is a salted, daily-rotating hash of network address and browser. Shared Wi-Fi undercounts; switching networks overcounts.
  • Country: taken from the country header supplied by the CDN or proxy in front of the redirect service. Shown as “Unknown” when not available.
  • Device, OS and browser are coarse categories derived from the user agent; the user agent itself is not stored.
  • Raw scan events are kept for 90 days; daily aggregates are kept for reporting according to your plan’s history.
  • Static codes cannot be tracked because they never contact our servers.

REST API

  • All endpoints are versioned under /api/v1 and return JSON with a consistent { message, code, errors } error envelope.
  • The web app authenticates with secure session cookies and CSRF protection. Rate limits apply to authentication, uploads, code creation and redirects.
  • Dynamic redirects are served from /r/{code}; hosted files from /f/{token}.
  • An OpenAPI description is published with the API at /docs/openapi.yaml.