REST API

API docs

Programmatic access to QR codes, scan analytics, and workspace metadata. Authenticate with an API key from the API Keys page. Machine-readable OpenAPI 3.1 spec is available at /openapi.json.

Authentication

All requests need a Bearer token in the Authorization header. Generate keys from the API Keys page; the raw key is shown once at creation, then only the prefix is visible. Keys are scoped to a single workspace.

Authorization: Bearer qrf_live_...

Rate limits

Per-workspace per-minute limits (shared across all of a workspace's keys). Every response carries the headers below; exceeding the limit returns HTTP 429 with a Retry-After header (seconds until the window resets).

  • Free — 60 req/min
  • Pro — 300 req/min
  • Business — 1,000 req/min
X-RateLimit-Plan: pro
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1718724000

# When exceeded:
HTTP/1.1 429 Too Many Requests
Retry-After: 42

Endpoints

GET/api/v1/qr

List QR codes

Paginated list of QR codes in your workspace.

curl -s "https://www.qra.cc/api/v1/qr?page=1&limit=20" \
  -H "Authorization: Bearer qrf_live_..."
POST/api/v1/qr

Create QR code

Creates a new dynamic QR code (subject to your plan's code-count limit).

curl -s "https://www.qra.cc/api/v1/qr" \
  -H "Authorization: Bearer qrf_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Q4 insert","type":"url","destination":"https://example.com/q4"}'
GET/api/v1/qr/{id}

Get QR code

Fetch a single QR code by id.

curl -s "https://www.qra.cc/api/v1/qr/<id>" \
  -H "Authorization: Bearer qrf_live_..."
PATCH/api/v1/qr/{id}

Update QR code

Update name, destination, or status (active / paused / expired).

curl -s -X PATCH "https://www.qra.cc/api/v1/qr/<id>" \
  -H "Authorization: Bearer qrf_live_..." \
  -H "Content-Type: application/json" \
  -d '{"destination":"https://example.com/new-url"}'
DELETE/api/v1/qr/{id}

Delete QR code

Permanently delete a QR code and all its scans.

curl -s -X DELETE "https://www.qra.cc/api/v1/qr/<id>" \
  -H "Authorization: Bearer qrf_live_..."
GET/api/v1/qr/{id}/scans

List scans

Raw per-scan log with timestamp, country, device, OS, browser, referrer. Use ?since= and ?until= for windowed queries.

curl -s "https://www.qra.cc/api/v1/qr/<id>/scans?since=2026-04-01T00:00:00Z" \
  -H "Authorization: Bearer qrf_live_..."