PROFI
DokuAnalyse und Regeln über die API
Zwei Dinge sitzen auf einem Link und lohnen die Automatisierung: seinen Verkehr lesen und ihn steuern. Statistiken sind schreibgeschützte GETs, die ein Lese-Schlüssel aufrufen kann; Routing-Regeln sind Schreibaktionen, die innerhalb der Weiterleitung im Edge ausgewertet werden. Beide sind dieselben Endpoints, die das Dashboard nutzt.
Die Statistiken eines Links lesen
GET /api/links/:slug/stats gibt eine Zusammenfassung für einen Zeitbereich zurück. Wähle den Bereich mit ?range= - einem von 1h, 24h, 7d, 30d, 90d, 183d, 365d, mtd oder ytd - oder gib ein explizites Fenster mit ?from=<ms>&to=<ms> in Epoch-Millisekunden an.
curl "https://qr2r.com/api/links/aA3k9/stats?range=30d" \
-H "Authorization: Bearer $KILO_API_KEY"Die Antwort spiegelt den aufgelösten Bereich, deinen Tarif, die Kopfzeilen-Gesamtwerte, eine Zeitreihe und Aufschlüsselungen pro Dimension zurück:
{
"range": { "from": 1716408000000, "to": 1719000000000, "clamped": false, "bucket": "day" },
"plan": { "slug": "pro", "limits": { /* … */ } },
"totals": { "opens": 1284, "visitors": 512 },
"timeseries": [ /* one point per bucket */ ],
"meta": { "generated_at": 1719000000000, "query_ms": 37, "cache": "miss" }
}opens zählt ausgelieferte Weiterleitungen; visitors ist die eindeutige Zahl. Wenn die Dimensionen deines Tarifs es erlauben, trägt die Antwort außerdem Aufschlüsselungsblöcke (Länder, Geräte, Referrer, Verkehrsqualität und mehr). Aufbewahrung und welche Dimensionen du bekommst, sind tarifgebunden: Fragst du ein Fenster länger, als dein Tarif behält, kommt die Antwort mit range.clamped auf true gesetzt und from bis an den Rand deiner Aufbewahrung vorgeschoben zurück.
Dieselben Zahlen, keine rohen IPs
Das sind die Zahlen, aus denen die Analyseansicht des Dashboards schöpft - die API ist nur der andere Client. Wie überall bei Kilo wird keine rohe IP je gespeichert, um sie zu erzeugen; IP-abgeleitete Daten werden zuerst mit einem rotierenden Pepper gehasht.
Begleitende GETs decken dieselben Daten in verschiedenen Formen ab: /stats/breakdown für eine einzelne Dimension, /stats/timeseries für die Reihe allein und /stats/export für einen Download. Gesamtwerte auf Gruppenebene liegen unter GET /api/groups/:id/stats.
Routing-Regeln auflisten und hinzufügen
Die Regeln eines Links entscheiden, wohin ein Scan tatsächlich geht. Lies sie mit GET /api/links/:slug/rules:
{ "rules": [ /* rule objects, in priority order */ ] }Füge eine mit POST /api/links/:slug/rules hinzu. Der type einer Regel ist geo, device oder ab, und jede trägt eine target_url. Eine Geo-Regel passt auf eine Liste von ISO-2-Ländercodes:
curl https://qr2r.com/api/links/aA3k9/rules \
-H "Authorization: Bearer $KILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "type": "geo", "condition": { "countries": ["DE", "AT"] }, "target_url": "https://example.com/de" }'Eine Erstellung gibt 201 mit der gespeicherten Regel zurück:
{
"id": 44,
"type": "geo",
"condition": { "countries": ["DE", "AT"] },
"target_url": "https://example.com/de",
"weight": 1,
"priority": 0,
"created_at": 1719000000000
}Aktualisiere Ziel, Gewicht oder Priorität einer Regel mit PUT /api/rules/:id und entferne eine mit DELETE /api/rules/:id (was { "ok": true } zurückgibt). Ordne die Regeln eines Links atomar mit POST /api/links/:slug/rules/reorder neu.
Regeln sind eine kostenpflichtige Funktion
Durchgesetzt an der API, nicht nur am Dashboard: Eine geo- oder device-Regel braucht das Tariflimit targeting_rules, und eine ab-Regel braucht ab_testing. Ohne es wird die Erstellung mit 402 plan_required abgelehnt, sodass sich der kostenlose Tarif nicht durch direkten Aufruf des Endpoints freischalten lässt.
Regeln werden im Edge innerhalb der Weiterleitung selbst ausgewertet und berühren nie eine Datenbank auf dem heißen Pfad - die Mechanik steht in der Anleitung zu Routing-Regeln. Das ist die API-Oberfläche: Schlüssel und Scopes, Links, Statistiken und Regeln, bis ganz nach unten.
Zurück zu allen Anleitungen