QR code
What this does
Builds a QR code from any text you provide: a website URL, Wi-Fi login string, payment link, or plain message. The response includes a link to the image and optional base64 data for embedding.
Who it is for
- Event tickets and check-in links
- Menus and shop window “scan for more”
- Internal tools labelling equipment
- Marketing landing pages
Try it
Encode the fetch.li homepage:
https://fetch.li/v1/qr?text=https://fetch.li
Other examples:
https://fetch.li/v1/qr?text=WIFI:T:WPA;S:GuestNetwork;P:secret;;
https://fetch.li/v1/qr?text=ORDER-2026-8842
(URL-encode special characters in production URLs.)
HTTP example
GET /v1/qr?text=https://fetch.li HTTP/1.1
Host: fetch.li
Accept: application/json
curl
curl -sS "https://fetch.li/v1/qr?text=https%3A%2F%2Ffetch.li"
JavaScript fetch
const text = "https://fetch.li";
const response = await fetch(
`https://fetch.li/v1/qr?text=${encodeURIComponent(text)}`
);
const qr = await response.json();
console.log(qr.image_url);
Python requests
import requests
response = requests.get(
"https://fetch.li/v1/qr",
params={"text": "https://fetch.li"},
)
response.raise_for_status()
print(response.json()["image_url"])
Example JSON response
{
"text": "https://fetch.li",
"size_px": 256,
"format": "png",
"image_url": "https://fetch.li/v1/qr/render/7f3a9c2e.png",
"data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
text |
Yes | string | Content to encode (max 2,000 characters) |
Errors that can happen
| HTTP | error.code |
When |
|---|---|---|
| 400 | invalid_body |
Missing or empty text, or text too long |
| 429 | rate_limited |
Demo limit exceeded |
| 500 | internal |
Unexpected server error |
Demo
GET endpoints work without an API key on the public demo tier (60 calls per hour per IP). POST /v1/vibe/classify needs a key.