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.