Extrayez les données analytiques de Zenovay pour créer vos propres tableaux de bord et outils de monitoring.
Zenovay n'expose pas de flux WebSocket public. Le tableau de bord affiche en interne l'activité des visiteurs en direct, mais pour vos propres intégrations, le motif pris en charge est le sondage de l'API externe. Ce guide vous montre comment le faire efficacement.
Info
L'API externe est une fonctionnalité payante. Elle est disponible sur les plans Pro, Scale et Enterprise — les clés des tiers Free sont rejetées avec un 403 API_PAID_PLAN_REQUIRED. Consultez Obtenir une clé API.
Où se trouvent les données en temps réel
| Cas d'utilisation | Meilleure approche |
|---|---|
| Regardez les visiteurs en direct vous-même | L'onglet Vue en direct dans votre tableau de bord (se met à jour en temps réel) |
| Tableau de bord personnalisé | Sondage l'API externe |
| Données historiques | API externe avec un filtre range |
| Intégrer un compteur de visiteurs en direct sur votre site | La fonction Widgets (un widget HTML autonome) |
Pour voir qui est actuellement sur votre site, ouvrez le tableau de bord de votre site et sélectionnez l'onglet Vue en direct — il s'actualise automatiquement. Les sections ci-dessous expliquent comment créer votre propre intégration externe basée sur l'API.
Sondage de l'API externe
Pour les données analytiques, utilisez l'API externe avec votre clé API. L'URL de base est :
https://api.zenovay.com/api/external/v1
Authentifiez-vous avec l'un des en-têtes suivants :
X-API-Key: zv_YOUR_API_KEY
Authorization: Bearer zv_YOUR_API_KEY
Analyse récente
Le point de terminaison du résumé analytique accepte un paramètre de requête range (24h, 7d, 30d, 90d, 1y — par défaut 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();
}
Chaque réponse de l'API externe est enrobée dans une enveloppe { success, data, timestamp }, et les totaux se trouvent sous 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"
}
Données des visiteurs
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();
}
Dans l'enveloppe data, ceci retourne un tableau visitors plus un objet pagination (limit, offset, has_more). Utilisez les paramètres de requête limit et offset pour paginer les résultats.
Créer un tableau de bord personnalisé
Exemple React
import { useState, useEffect } from 'react';
function LiveDashboard({ websiteId, apiKey }) {
const [analytics, setAnalytics] = useState(null);
// Actualisez le résumé analytique à un intervalle qui respecte votre limite de débit
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();
// Les réponses sont enrobées dans une enveloppe { success, data, timestamp }.
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>Dernières 24 heures</h2>
<p>Visiteurs : {analytics.summary.total_visitors}</p>
<p>Pages vues : {analytics.summary.total_page_views}</p>
<p>Visiteurs uniques : {analytics.summary.unique_visitors}</p>
</div>
)}
</div>
);
}
Considérations sur les limites de débit
Les limites de débit de l'API externe sont par clé API, et l'API est payante uniquement — la ligne Free est affichée par souci de complétude, mais les clés du tier Free ne peuvent pas l'appeler.
| Plan | Requêtes/minute | Intervalle de sondage recommandé |
|---|---|---|
| Free | Non disponible | — |
| Pro | 30 | Toutes les 5 minutes |
| Scale | 60 | Toutes les 2 minutes |
| Enterprise | 120 | Chaque minute |
Les réponses incluent les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining (sur le chemin d'accès à la solution de secours), vous pouvez donc les lire et réduire au fur et à mesure que vous approchez de la limite.
Meilleures pratiques
- Ne sondez pas plus rapidement que votre limite de débit de plan le permet — les données analytiques sont mises à jour à l'ordre des minutes, pas des secondes.
- Mettez en cache les réponses localement entre les sondages.
- Mettez en œuvre la gestion des erreurs avec recul exponentiel.
- Pour regarder vous-même les visiteurs en direct, utilisez l'onglet Vue en direct plutôt que le sondage — il est conçu pour cela.