Skip to content

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.