user@kqf:~$ cd /

// API-Dokumentation

URLs kürzen und QR-Codes generieren per REST API. Kein API-Key, keine Registrierung.

Übersicht

EndpointMethodeBeschreibung
/api/shortenPOSTURL kürzen
/api/qr/:codeGETQR-Code als PNG herunterladen

POST /api/shorten

Kürzt eine URL und gibt den Kurzlink sowie einen QR-Code als SVG zurück.

Request

HeaderWert
Content-Typeapplication/json
FeldTypBeschreibung
urlstringDie zu kürzende URL (muss mit http:// oder https:// beginnen)

Response (200)

FeldTypBeschreibung
shortstringDer 4-stellige Kurzcode
urlstringVollständige Kurzlink-URL
qr_svgstringQR-Code als SVG-Markup
existingbooleantrue wenn die URL bereits gekürzt war

Fehler

CodeGrund
400URL fehlt, ungültiges Format oder zu lang (max. 2048 Zeichen)
429Rate-Limit überschritten (max. 30 Requests/Minute)

Beispiele

curl

# URL kürzen
curl -X POST https://kqf.ch/api/shorten \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/langer/link"}'

# Antwort
{
  "short": "x7Km",
  "url": "https://kqf.ch/x7Km",
  "qr_svg": "<svg ...>",
  "existing": false
}

# QR-Code herunterladen
curl -o qr.png https://kqf.ch/api/qr/x7Km

JavaScript (fetch)

// URL kürzen
const response = await fetch("https://kqf.ch/api/shorten", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ url: "https://example.com/link" })
});
const data = await response.json();
console.log(data.url);  // https://kqf.ch/x7Km

Python (requests)

# pip install requests
import requests

response = requests.post(
    "https://kqf.ch/api/shorten",
    json={"url": "https://example.com/link"}
)
data = response.json()
print(data["url"])  # https://kqf.ch/x7Km

GET /api/qr/:code

Gibt den QR-Code für einen Kurzlink als PNG-Datei zurück (400x400 Pixel).

# Direkter Download
curl -o qr.png https://kqf.ch/api/qr/x7Km

# Im Browser
https://kqf.ch/api/qr/x7Km

Rate-Limiting

Die API erlaubt maximal 30 Requests pro Minute pro IP-Adresse auf /api/shorten. Der QR-Endpoint hat kein Rate-Limit.

Bei Überschreitung wird ein 429 Too Many Requests zurückgegeben.

Hinweise

Bereits gekürzte URLs werden erkannt und geben den bestehenden Kurzcode zurück (existing: true). kqf.ch-URLs können nicht gekürzt werden (Rekursionsschutz).