Documentation
justQRs public API
Manage your QR codes programmatically. Create an API key from API keys in the dashboard (account owners only).
Base URL
https://api.justqrs.com
Authentication
Send your API key as a bearer token on every request:
Authorization: Bearer jqr_xxxxxxxxxxxxxxxx
Keys are shown in full only once, at creation time. Rotate a key by creating a new one and deleting the old one.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/qrcodes | List your QR codes. Response: { qrcodes: QrResponse[] } |
POST | /v1/qrcodes | Create a QR code. Request: CreateQrRequest { name, mode, content, design? } · Response: QrResponse |
GET | /v1/qrcodes/{qrId} | Fetch a single QR code. Response: QrResponse |
PATCH | /v1/qrcodes/{qrId} | Update a QR code (dynamic codes only). Request: UpdateQrRequest { name?, content?, design? } · Response: QrResponse |
DELETE | /v1/qrcodes/{qrId} | Delete a QR code. Response: 204 No Content |
GET | /v1/qrcodes/{qrId}/stats?days=7|30|90 | Scan analytics for a dynamic QR code. Response: QrStats { totalScans, rangeScans, rangeUniques, series, breakdowns } |
Example: create a URL QR code
curl -X POST "https://api.justqrs.com/v1/qrcodes" \
-H "Authorization: Bearer jqr_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "My link",
"mode": "dynamic",
"content": { "kind": "url", "url": "https://example.com" }
}'
Example: fetch scan stats
curl "https://api.justqrs.com/v1/qrcodes/{qrId}/stats?days=30" \
-H "Authorization: Bearer jqr_xxxxxxxxxxxxxxxx"
Errors
Error responses are JSON: { "error": string, "code"?: string }.
| Status | Code | Meaning |
|---|---|---|
| 400 | (validation) | Request body failed validation — see the error message for details. |
| 401 | — | Missing Authorization header. |
| 403 | — | API key rejected — invalid, revoked, or expired. |
| 402 | upgrade_required | Your account is on the free plan — API access requires a paid plan. |
| 404 | — | The QR code doesn't exist or doesn't belong to this account. |
| 409 | qr_limit_reached | The account is already at its dynamic QR code limit (500 base plan, more available via add-on packs). |