Rufen Sie Analysedaten aus Zenovay ab, um Ihre eigenen Dashboards und Überwachungstools zu erstellen.
Zenovay stellt keinen öffentlichen WebSocket-Stream bereit. Das Dashboard zeigt intern Echtzeitaktivität der Besucher an, aber für Ihre eigenen Integrationen ist das unterstützte Muster das Polling der External API. Diese Anleitung zeigt, wie Sie dies effizient umsetzen.
Information
Die External API ist eine bezahlte Funktion. Sie ist auf Pro-, Scale- und Enterprise-Plänen verfügbar – Keys aus dem Free-Tier werden mit 403 API_PAID_PLAN_REQUIRED abgelehnt. Siehe API-Schlüssel abrufen.
Wo Echtzeitdaten herkommen
| Anwendungsfall | Bester Ansatz |
|---|---|
| Live-Besucher selbst überwachen | Die Live View-Registerkarte in Ihrem Dashboard (aktualisiert sich in Echtzeit) |
| Benutzerdefiniertes Dashboard | External API abfragen |
| Historische Daten | External API mit einem range-Filter |
| Zähler für Live-Besucher auf Ihrer Website einbinden | Die Widgets-Funktion (ein autonomes HTML-Widget) |
Um zu sehen, wer gerade auf Ihrer Website ist, öffnen Sie das Dashboard Ihrer Website und wählen Sie die Live View-Registerkarte – sie wird automatisch aktualisiert. Die Abschnitte unten zeigen, wie Sie Ihre eigene externe Integration auf der Basis der API erstellen.
External API-Polling
Verwenden Sie für Analysedaten die External API mit Ihrem API-Schlüssel. Die Basis-URL ist:
https://api.zenovay.com/api/external/v1
Authentifizieren Sie sich mit einem dieser Header:
X-API-Key: zv_YOUR_API_KEY
Authorization: Bearer zv_YOUR_API_KEY
Aktuelle Analytik
Der Analytics-Summary-Endpunkt akzeptiert einen range-Abfrageparameter (24h, 7d, 30d, 90d, 1y – Standard: 7d):
const API_KEY = process.env.ZENOVAY_API_KEY;
const WEBSITE_ID = 'your-website-id';
async function getRecentAnalytics() {
const response = await fetch(
`https://api.zenovay.com/api/external/v1/analytics/${WEBSITE_ID}?range=24h`,
{
headers: { 'X-API-Key': API_KEY }
}
);
return await response.json();
}
Jede External API-Response ist in eine { success, data, timestamp }-Umhüllung verpackt, und die Summen befinden sich unter data.summary:
{
"success": true,
"data": {
"summary": {
"total_visitors": 1247,
"total_page_views": 3891,
"unique_visitors": 1102
},
"time_range": "24h",
"daily_stats": [ /* ... */ ]
},
"timestamp": "2026-06-13T00:00:00.000Z"
}
Besucherdaten
async function getVisitors() {
const response = await fetch(
`https://api.zenovay.com/api/external/v1/analytics/${WEBSITE_ID}/visitors`,
{
headers: { 'X-API-Key': API_KEY }
}
);
return await response.json();
}
Innerhalb der data-Umhüllung gibt dies ein visitors-Array plus ein pagination-Objekt zurück (limit, offset, has_more). Verwenden Sie die limit- und offset-Abfrageparameter, um durch die Ergebnisse zu blättern.
Ein benutzerdefiniertes Dashboard erstellen
React-Beispiel
import { useState, useEffect } from 'react';
function LiveDashboard({ websiteId, apiKey }) {
const [analytics, setAnalytics] = useState(null);
// Aktualisieren Sie die Analytics-Zusammenfassung in einem Intervall, das Ihr Rate Limit respektiert
useEffect(() => {
async function fetchAnalytics() {
try {
const response = await fetch(
`https://api.zenovay.com/api/external/v1/analytics/${websiteId}?range=24h`,
{
headers: { 'X-API-Key': apiKey }
}
);
const body = await response.json();
// Responses sind in einer { success, data, timestamp }-Umhüllung verpackt.
setAnalytics(body.data);
} catch (error) {
console.error('Analytics fetch error:', error);
}
}
fetchAnalytics();
const interval = setInterval(fetchAnalytics, 5 * 60 * 1000);
return () => clearInterval(interval);
}, [websiteId, apiKey]);
return (
<div>
{analytics && (
<div>
<h2>Letzte 24 Stunden</h2>
<p>Besucher: {analytics.summary.total_visitors}</p>
<p>Seitenaufrufe: {analytics.summary.total_page_views}</p>
<p>Einzigartige Besucher: {analytics.summary.unique_visitors}</p>
</div>
)}
</div>
);
}
Überlegungen zu Ratenbegrenzungen
External API-Ratenbegrenzungen gelten pro API-Schlüssel, und die API ist nur gegen Bezahlung verfügbar – die Free-Zeile wird aus Vollständigkeit angezeigt, aber Free-Tier-Keys können sie nicht aufrufen.
| Plan | Anfragen/Minute | Empfohlenes Polling-Intervall |
|---|---|---|
| Free | Nicht verfügbar | — |
| Pro | 30 | Alle 5 Minuten |
| Scale | 60 | Alle 2 Minuten |
| Enterprise | 120 | Jede Minute |
Responses enthalten X-RateLimit-Limit und X-RateLimit-Remaining Header (auf dem Fallback-Pfad), sodass Sie diese lesen und zurückfahren können, wenn Sie sich dem Limit nähern.
Best Practices
- Fragen Sie nicht häufiger ab, als Ihr Plan-Ratenlimit zulässt – Analytics-Daten werden im Minutenbereich aktualisiert, nicht im Sekundenbereich.
- Zwischenspeichern Sie Responses lokal zwischen Abfragen.
- Implementieren Sie Fehlerbehandlung mit exponentiellem Backoff.
- Um Live-Besucher selbst zu beobachten, nutzen Sie die Live View-Registerkarte – sie ist dafür konzipiert.