Skip to content
UseQR

Developers & agents

Generate a QR code with curl

curl -o qr.png \"https://useqr.app/q/hello.png\" is the whole thing. No key, no auth header, no SDK. Add query parameters for size, format and styling, and use format=svg when you want vector output for print.

The basics

# PNG, default 512px
curl -o qr.png "https://useqr.app/q/hello.png"

# SVG for print
curl -o qr.svg "https://useqr.app/q/hello.svg"

# Larger, and a brand colour
curl -o qr.png "https://useqr.app/api/v1/qr?data=https://example.com&size=1024&color=6366f1"

URL-encode the payload

Anything containing &, ?, #, + or a space must be encoded, or your shell and the server will disagree about where the parameter ends. curl --data-urlencode with -G does it for you:

curl -G -o qr.png "https://useqr.app/api/v1/qr" \
  --data-urlencode "data=https://example.com/sale?utm_source=poster&utm_medium=qr" \
  --data "size=1024"

Typed payloads

# WiFi
curl -o wifi.png "https://useqr.app/api/v1/wifi?ssid=CafeGuest&password=espresso&security=WPA"

# vCard
curl -G -o card.svg "https://useqr.app/api/v1/vcard" \
  --data-urlencode "fn=Ada" --data-urlencode "ln=Lovelace" \
  --data-urlencode "email=ada@example.com" --data "format=svg"

Get the matrix instead of an image

curl -s "https://useqr.app/api/v1/qr?data=hello&format=json" | jq '.version, .size'

Returns the version, error-correction level, module count and the full module matrix as arrays of 0 and 1 — useful if you are rendering yourself.

Decode an existing code

curl -X POST --data-binary @qr.png "https://useqr.app/api/v1/decode"
curl "https://useqr.app/api/v1/decode?url=https://example.com/some-qr.png"

Check a design still scans

curl -s "https://useqr.app/api/v1/verify?data=hello&color=cccccc" | jq

The verify endpoint renders the code with your styling, rasterises it, decodes it back, and tells you whether it survived — with a fix if it did not.

Batch

curl -X POST "https://useqr.app/api/v1/qr/batch" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"data":"one"},{"data":"two"}]}'

Up to 100 items per call.

A shell function worth having

qr() { curl -sG -o "${2:-qr.png}" "https://useqr.app/api/v1/qr" --data-urlencode "data=$1" --data "size=1024"; }
# usage: qr "https://example.com" site.png

FAQ

How do I generate a QR code from the command line?

curl the keyless endpoint and write the response to a file: curl -o qr.png "https://useqr.app/q/hello.png". No authentication is required.

How do I encode a URL with query parameters?

Use curl -G with --data-urlencode so the ampersands inside your payload are encoded rather than being parsed as separate parameters.

Can I get SVG instead of PNG?

Yes — use the .svg path form, or add format=svg. SVG is the right choice for anything going to print.

Can I check that a styled code still scans from the shell?

Yes. The verify endpoint renders, rasterises and decodes the code and returns whether it survived, along with a suggested fix if not.

  • A free QR code API with no keyUseQR's REST API needs no signup, no API key and no SDK. GET /api/v1/qr?data=hello returns a PNG. The shortest form is /q/hello.png, which drops straight…