Photon QRPhoton QR
LoginCreate Free QR
REST API · v1

API Documentation

Create, update, and manage dynamic QR codes programmatically. The Photon QR API is available on the Business plan.

Authentication

Generate an API key from Settings → API keys. The full key is shown only once at creation — store it securely. Pass it as a Bearer token on every request:

Authorization: Bearer pqr_live_xxxxxxxxxxxxxxxxxxxxxxxx
Keys are stored hashed — we can never show them again. Revoke a compromised key anytime; it stops working immediately.

Base URL

https://photonqr.com/api/v1

Endpoints

GET/api/v1/qr

List your QR codes. Supports ?limit (1–200, default 50) and ?offset.

POST/api/v1/qr

Create a dynamic QR code. Returns the new record with its short URL.

GET/api/v1/qr/{id}

Retrieve a single QR code by its ID.

PATCH/api/v1/qr/{id}

Update title, content, design, or pause state. Changes apply instantly.

DELETE/api/v1/qr/{id}

Permanently delete a QR code.

Example — create a QR code

curl -X POST https://photonqr.com/api/v1/qr \
  -H "Authorization: Bearer pqr_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "URL",
    "title": "Spring campaign",
    "content": { "url": "https://example.com/spring" }
  }'

Response 201 Created:

{
  "data": {
    "id": "a1b2c3d4-...",
    "type": "URL",
    "title": "Spring campaign",
    "shortCode": "Ab3xY9",
    "shortUrl": "https://photonqr.com/r/Ab3xY9",
    "isActive": true,
    "totalScans": 0,
    "createdAt": "2026-06-14T10:00:00.000Z"
  }
}

Example — repoint a QR code

Because every QR is dynamic, you can change its destination without reprinting. Updates take effect instantly.

curl -X PATCH https://photonqr.com/api/v1/qr/a1b2c3d4-... \
  -H "Authorization: Bearer pqr_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{ "content": { "url": "https://example.com/summer" } }'

Errors & rate limits

401Missing or invalid API key
403Your plan does not include API access
404QR code not found (or not yours)
422Validation failed — see the "issues" array

Errors return JSON shaped like { "error": "message" }.

Ready to build?

Upgrade to Business, generate a key, and start automating your QR codes in minutes.