PROFI

Doku

Links über die API

Der Link ist das Kernobjekt in Kilo, und fünf Endpoints decken sein ganzes Leben über HTTP ab: ihn erstellen, deine Links auflisten, einen lesen, aktualisieren, wohin er zeigt, und ihn zurückziehen. Jedes Beispiel unten nutzt einen Schlüssel mit Schreib-Scope in $KILO_API_KEY; ein Lese-Schlüssel reicht für die zwei GET-Aufrufe.

Einen Link erstellen

POST /api/links erzeugt einen Link. Für einen einfachen URL-Link ist das einzige Pflichtfeld default_target, eine http(s)-URL. Du kannst außerdem einen eigenen slug (3–32 base62-Zeichen), einen menschlichen name (bis 80), eine group_id, einen expires_at-Zeitstempel in Epoch-Millisekunden und ein placement von active (Standard) oder archived übergeben.

POST /api/links
curl https://qr2r.com/api/links \
  -H "Authorization: Bearer $KILO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "default_target": "https://example.com/landing", "name": "Spring flyer" }'

Eine erfolgreiche Erstellung gibt 201 mit dem vollständigen Link-Objekt zurück. Der slug ist der permanente öffentliche Griff; default_target ist das editierbare Ziel dahinter:

201 Created
{
  "id": 8231,
  "slug": "aA3k9",
  "name": "Spring flyer",
  "kind": "url",
  "data": null,
  "default_target": "https://example.com/landing",
  "expires_at": null,
  "disabled": false,
  "override_target": null,
  "expired_fallback_url": null,
  "group_id": null,
  "domain": null,
  "rule_count": 0,
  "created_at": 1719000000000,
  "updated_at": 1719000000000,
  "deleted_at": null,
  "reclaim_until": null,
  "paused_at": null,
  "pause_reason": null,
  "placement_country": null,
  "placement_region": null
}

Die Ziel-Schranke

Ein Ziel darf nicht zurück auf einen Kilo-eigenen Host oder auf einen anderen URL-Kürzer zeigen - das blockiert den Redirect-Ketten-Trick, mit dem Missbraucher einen schlechten Link durch einen vertrauenswürdigen waschen. Solche werden als 400 invalid_body abgelehnt. Ein Ziel, das die Live-Sicherheitsprüfung auslöst, wird mit 422 destination_unsafe abgelehnt, bevor ein Slug verbraucht wird.

Auflisten und lesen

GET /api/links gibt deine Links seitenweise zurück. Grenze es mit status ein (active, archived, paused oder deleted - Standard active), group_id und dem Paar limit/offset (limit standardmäßig 50, Deckel bei 200). Die Antwort trägt die Seite plus kontoweite Zähler:

GET /api/links?status=active&limit=50
{
  "links": [ /* link objects, newest first */ ],
  "limit": 50,
  "offset": 0,
  "status": "active",
  "counts": { "active": 12, "archived": 3, "paused": 0, "deleted": 1 },
  "limits": { "active_links_max": 25, "archived_links_max": 100, "reclaim_window_days": 30 }
}

Lies einen einzelnen Link nach Slug mit GET /api/links/:slug; er gibt dieselbe Objektform wie die Erstellung zurück. Ein unbekannter Slug gibt 404 not_found zurück. Für einen Link auf einer deiner eigenen Domains füge ?domain=go.acme.com hinzu, damit der richtige Link auflöst.

Aktualisieren, wohin er zeigt

PUT /api/links/:slug nimmt einen partiellen Körper - sende nur die Felder, die du änderst. Das häufige ist default_target; du kannst auch den name ändern, ihn in eine group_id verschieben, expires_at setzen oder ihn mit disabled archivieren. Das Ziel zu bearbeiten wirkt beim allernächsten Scan, überall auf einmal - was der ganze Sinn ist, einen gedruckten Code über Kilo zu führen.

PUT /api/links/aA3k9
curl -X PUT https://qr2r.com/api/links/aA3k9 \
  -H "Authorization: Bearer $KILO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "default_target": "https://example.com/new-landing" }'

Der Aufruf gibt das aktualisierte Link-Objekt zurück, mit einem frischen updated_at.

Einen Link zurückziehen

DELETE /api/links/:slug löscht einen Link sanft: Er hört auf weiterzuleiten und wandert in den Gelöscht-Tab, aber er ist nicht weg.

DELETE /api/links/aA3k9
{ "ok": true, "soft": true }

Du kannst ihn mit POST /api/links/:slug/reclaim zurückholen, solange er innerhalb des Reclaim-Fensters ist, oder ihn mit POST /api/links/:slug/purge endgültig entfernen. Nichts wird je durch ein schlichtes Delete endgültig unter dir weggelöscht - dasselbe Nie-eine-Sackgasse-Prinzip, das die Anleitung zum Link-Lebenszyklus beschreibt, als Endpoints ausgedrückt.

Das ist das vollständige Objekt über HTTP. Die letzte API-Anleitung behandelt die zwei Dinge, die du rund um einen Link am häufigsten automatisierst: seine Statistiken lesen und seinen Verkehr steuern.

Analyse und Regeln über die API
WeiterAnalyse und Regeln über die APILies die Statistiken eines Links und verwalte Geo-, Geräte- und A/B-Routing-Regeln über HTTP.Anleitung lesen