API et webhooks
Récompensez vos joueurs quand ils votent pour votre jeu, et affichez vos statistiques GameVote dans votre jeu, votre site ou votre bot.
- Revendiquez ou créez la fiche de votre jeu.
- Récupérez votre jeton d'API dans Mes jeux.
- Branchez l'adresse de votre webhook : chaque vote vous est envoyé en temps réel.
Webhook de vote
À chaque vote valide, GameVote envoie un POST JSON à votre adresse. Répondez 200 en moins de 5 secondes, sinon l'envoi est retenté deux fois (après 30 s puis 5 min). Utilisez id pour ignorer un doublon.
{
"id": "0b5c…",
"type": "vote.create",
"game": { "id": 12, "slug": "my-game" },
"user": { "discord_id": "123456789012345678" },
"weekend": false,
"created_at": "2026-10-09T12:00:00.000Z"
}En-têtes : X-GameVote-Timestamp, X-GameVote-Signature (sha256= suivi du HMAC-SHA256 de timestamp.corps avec votre secret) et X-GameVote-Event-Id.
Exemple de réception (Node.js)
// Node.js : recevoir un vote et récompenser le joueur
import crypto from "node:crypto";
app.post("/hooks/vote", express.raw({ type: "application/json" }), (req, res) => {
const ts = req.header("x-gamevote-timestamp");
const sig = req.header("x-gamevote-signature");
const expected = "sha256=" + crypto.createHmac("sha256", process.env.GAMEVOTE_SECRET)
.update(ts + "." + req.body.toString()).digest("hex");
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return res.sendStatus(400); // rejeu
if (!ts || !sig) return res.sendStatus(400);
if (sig.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
return res.sendStatus(401);
}
res.sendStatus(200); // répondre vite
const event = JSON.parse(req.body.toString());
giveReward(event.user.discord_id, event.weekend ? 2 : 1); // traiter ensuite
});API REST
Authentification : en-tête Authorization: Bearer <jeton>. Limite : 120 requêtes par minute et par jeton.
| Requête | Accès | Rôle |
|---|---|---|
GET /api/v1/games/{id|slug} | Public | Fiche, votes, note moyenne |
GET /api/v1/games/{id|slug}/check?user=<discord_id> | Jeton | Le joueur a-t-il voté dans les 12 dernières heures ? |
GET /api/v1/games/{id|slug}/votes | Jeton | 100 derniers votes valides |
POST /api/v1/games/{id|slug}/stats | Jeton | Envoyer {"players":1200,"servers":15} |
Badge à intégrer
Une image toujours à jour, à placer sur votre site, votre page Steam ou votre README : elle affiche vos votes ou votre rang du mois et renvoie vers votre fiche. Le code exact de votre jeu est dans la gestion de sa fiche.
<a href="https://www.gamevote.fr/games/VOTRE-JEU">
<img src="https://www.gamevote.fr/badge/VOTRE-JEU.svg" alt="Votez sur GameVote">
</a>Variantes : ?style=votes (votes du mois, par défaut), ?style=rank (rang du mois), ?style=vote (« Votez pour nous »). Ajoutez lang=en pour la version anglaise. L'image est mise à jour toutes les 10 minutes.
Bot Discord GameVote
Ajoutez le bot sur le serveur de votre communauté : vos joueurs votent sans quitter Discord, reçoivent un rappel en message privé quand ils peuvent revoter, et vos actualités sont annoncées automatiquement.
/voter | Vote direct, avec rappel 12 h plus tard |
/jeu · /top · /tendances | Fiche et classements |
/profil | Profil GameVote d'un membre |
/suivre | Annonce vos nouveaux billets dans un salon (« Gérer le serveur ») |
/bons-plans | Promos Steam du moment et jeux gratuits Epic |
/sorties | Sorties des prochains jours |
/role-votant | Rôle donné automatiquement aux votants de votre jeu (« Gérer le serveur ») |
/recap | Récap chaque lundi : top de la semaine, sorties et bons plans (« Gérer le serveur ») |
Rôle de votant sur votre serveur
Récompensez votre communauté : le bot donne un rôle aux membres de votre serveur qui ont voté pour votre jeu ce mois-ci (vote sur le site ou sur Discord), et le retire le mois suivant. Mise à jour toutes les 10 minutes, instantanée pour les votes faits avec le bot.
- Invitez le bot GameVote sur votre serveur.
- Créez un rôle (ex. « Votant ») et placez le rôle du bot au-dessus de lui dans les paramètres du serveur.
- Tapez /voter-role set avec votre jeu et ce rôle (permission « Gérer les rôles » requise).
/voter-role status pour vérifier, /voter-role off pour arrêter.