Skip to content

Free QR code API

Generate styled QR codes from a single GET URL — no account, no API key.

Updated View as Markdown

Everything the QR code generator does, as one GET request. No account, no API key — the URL is the image, so you can drop it straight into an <img> tag, a README, or an email signature.

GET https://in.bio/api/qr

Request

The response is the raw image, so a request is just a URL with query parameters. type chooses what the code encodes; the style parameters control how it looks.

Payload

type selects the payload; each type reads its own fields from the query string (the same fields as the generator UI).

type Fields
url (default) url
text text
email to, subject, body
phone phone
sms phone, body
whatsapp phone, text
wifi ssid, password, encryption (WPA / WEP / nopass)
vcard name, org, title, phone, email, url
crypto coin (e.g. bitcoin, ethereum), address, amount

Style

Param Values Default
format png, svg png
size 642048 (px) 512
dot_style square, dots, rounded square
marker_shape square, rounded, circle square
marker_center square, dot square
foreground 6-digit hex, # optional 000000
marker_color 6-digit hex, # optional foreground
transparent 1 for a transparent background 0
download 1 to force a file download 0
<img
  src="https://in.bio/api/qr?url=https://example.com&dot_style=dots&marker_shape=circle&foreground=1a56db"
  alt="QR code"
  width="256"
/>
# Wi-Fi QR code, SVG, rounded dots
curl -o wifi.svg \
  "https://in.bio/api/qr?type=wifi&ssid=MyNetwork&password=secret123&format=svg&dot_style=rounded"

# vCard contact, transparent PNG at 1024px
curl -o card.png \
  "https://in.bio/api/qr?type=vcard&name=Ada%20Lovelace&org=INBIO&size=1024&transparent=1"
const params = new URLSearchParams({
  url: "https://example.com",
  dot_style: "dots",
  marker_shape: "circle",
  foreground: "1a56db",
});

const res = await fetch(`https://in.bio/api/qr?${params}`);
const blob = await res.blob(); // image/png

Response

200 OK with the raw image bytes — no JSON wrapper.

Header Value
Content-Type image/png, or image/svg+xml when format=svg
Content-Disposition inline by default; attachment when download=1
Cache-Control public, max-age=86400 (cached for a day)

Errors

Status When
422 Unprocessable Entity A style or payload field is invalid — standard JSON validation errors naming the field.
429 Too Many Requests Rate limit reached (30 requests/minute per IP).

Want scan tracking?

A QR code from this endpoint encodes your URL directly, so scans go straight to the destination — untracked. To count scans, shorten the link first (also free and keyless) and generate the QR code for the short URL, or create the link from a free account where every link’s QR code and scan analytics live together.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close