Authentifizierung
Zwei Schlüsseltypen
Verwenden Sie eine angemeldete Dashboard-Sitzung, einen API-Schlüssel, alternativ einen Geheimschlüssel. Ein Schlüssel besteht aus dem öffentlichen Wert key_id und dem privaten Wert secret. Senden Sie beides als einen Bearer-Wert, niemals in der Abfragezeichenfolge:
Authorization: Bearer ctr_<key_id>.<secret>
Ein API-Schlüssel (ctr_...) kann nur lesen. Ein Geheimschlüssel (ctr_mgmt_...) kann außerdem Websites, Messschlüssel, Ziele, Freigabelinks, Berichte, Exporte und andere Schlüssel verwalten. Kontoeinstellungen und Verfügbarkeitsüberwachung erfordern immer eine Browsersitzung. Die Schlüsselausgabe finden Sie unter Einstellungen → API-Schlüssel.
Schlüssel können eine Website oder das gesamte Konto abdecken. Ein auf eine Website beschränkter Schlüssel kann keine Websites erstellen oder API-Schlüssel verwalten, da diese Aktionen für das gesamte Konto gelten.
Antwortformat
Immer dieselbe Antwortstruktur
Jede Antwort, ob Erfolg oder Fehler, hat dieselbe JSON-Struktur. Prüfen Sie ok; der HTTP-Status ist maßgeblich.
{"ok": true, "data": {}}
{"ok": false, "error": {"code": "bad_range", "message": "end must be later than start"}}
Der OpenAPI-Vertrag definiert den Inhalt von data für jeden Vorgang. Aufgelistete Ressourcen verwenden id als Feld; Routenparameter benennen die Ressource, etwa {key_id}. Zeitstempel verwenden ISO-8601 mit +00:00 als Offset, außer /realtime, /visitors, /visitor-map, /session/{id}, die HTTP-Datumsangaben nach RFC 1123 zurückgeben.
Zeiträume und Paginierung
Analysedaten lesen
Lesezugriffe auf Analysedaten akzeptieren einen vordefinierten range (today, yesterday, 7d, 30d, 90d, 6mo, 12mo) oder ein Paar von ISO-8601-Werten für start/end als Bereichsgrenzen. Zeiträume sind halboffen: start <= timestamp < end.
Besucher- und Besucherkarten-Feeds verwenden opake Cursor. Geben Sie next_cursor unverändert zurück und beenden Sie den Abruf, wenn has_more false ist. Decodieren oder konstruieren Sie keine Cursor.
Beispiele
Kopieren, einfügen, anpassen
curl -H 'Authorization: Bearer ctr_REDACTED.REDACTED' \
'https://webcounter.ca/api/v1/sites'
curl -H 'Authorization: Bearer ctr_REDACTED.REDACTED' \
'https://webcounter.ca/api/v1/s/example/overview?range=30d'
curl -X POST -H 'Authorization: Bearer ctr_mgmt_REDACTED.REDACTED' \
-H 'Content-Type: application/json' \
-d '{"slug":"example","name":"Example","timezone":"UTC"}' \
'https://webcounter.ca/api/v1/sites'
Verwenden Sie für Experimente einen separaten Website-Slug und eine Testdomain. Senden Sie niemals einen Produktionsschlüssel, eine Kundenkennung oder rohe Besucherdaten an ein Drittanbieter-Tool.
Datenexporte
CSV-Rohdaten herunterladen
Mit einem Geheimschlüssel erfolgt die Einreihung eines Exports vom Typ events oder sessions über POST /s/{slug}/exports. Fragen Sie anschließend GET .../exports/{export_id}, um den Status abzufragen; rufen Sie danach .../download herunter, sobald der Status lautet: done. Exporte laufen automatisch ab.
Was sitzungsgebunden bleibt
Für keinen Schlüssel verfügbar
Bearer-Schlüssel können weder auf Kontozugangsdaten, Einstellungen oder Verlauf des Verfügbarkeitsmonitors noch auf die Web Push-Registrierung zugreifen. Diese Funktionen erfordern eine angemeldete Browsersitzung.
Für KI-Agenten
Maschinenlesbare Einstiegspunkte
Beginnen Sie mit /llms.txt; lesen Sie anschließend /static/openapi.yaml für Pfade, Parameter, Schemas und Authentifizierungsanforderungen.