quickqr.page

QR code API

Free, no key. Anonymous requests are rate-limited per IP. Version v1 will never break.

Image

GET https://quickqr.page/api/v1/qr?data=… returns an image. Works anywhere an image URL does, including Markdown: ![QR](https://quickqr.page/api/v1/qr?data=https%3A%2F%2Fexample.com)

ParamDefault
dataRequired. Up to 2000 characters, URL-encoded.
formatpngpng or svg
size51264–2048 px. PNG is the largest whole-pixel scale that fits.
margin4Quiet zone in modules, 0–16
eccMError correction: L, M, Q, H
fg, bg000000, ffffffHex colors

QR code preview

Editable codes

Create a code whose destination you can change later. By creating one you agree to the Terms and Acceptable Use Policy.

curl -X POST https://quickqr.page/api/v1/codes \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com/menu"}'

Returns id, url (what to encode), secret and edit_url. The secret is shown once: store it.

GET    /api/v1/codes/{id}    # destination, scans
GET    /api/v1/codes         # the code this secret belongs to
PATCH  /api/v1/codes/{id}    # {"url": "https://…"}
DELETE /api/v1/codes/{id}
Authorization: Bearer {secret}

Destinations are checked with Google Web Risk and our own rules (no shorteners, IP addresses or look-alike domains). If the check is unavailable, the request fails with 503: retry later. Changes reach scanners within a minute.

Check a link

Before opening a link from a scanned code, ask whether it's known to be unsafe. We don't store the link.

POST /api/v1/check    # {"url": "https://…"}
→ {"url", "host", "safe": false, "warning": "Google Web Risk flags this link as unsafe."}

Errors

JSON {"error": "…"} with 400 bad input, 403 browser request without our bot check (call the API from a server or app, not a web page), 404 unknown code or wrong secret, 409 code disabled, 422 destination not allowed, 429 rate limited, 503 safety check unavailable.